【docker】制作镜像流程
正文
制作镜像流程
dockerfile 指令:
现在有一个C++应用程序,功能给名为:test.txt 的文件中循环写入:hello word! 。下面通过这个示例代码在docker中制作一个新的镜像:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main()
{
FILE *file = fopen("test.txt", "w+");
if (file == NULL) {
return 0;
}
char buf[20] = "hello world!\n";
int len = strlen(buf);
while (1)
{
fputs(buf, file);
fflush(file);
sleep(1);
}
fclose(file);
return 0;
}
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <unistd.h> 5 6 int main() 7 { 8 FILE *file = fopen("test.txt", "w+"); 9 if (file == NULL) { 10 return 0; 11 } 12 13 char buf[20] = "hello world!\n"; 14 int len = strlen(buf); 15 16 while (1) 17 { 18 fputs(buf, file); 19 fflush(file); 20 sleep(1); 21 } 22 23 fclose(file); 24 return 0; 25 }
c/c++程序我们都是直接运行在linux系统上,所以我们可以直接选择centos镜像,在这里我们是要把.c文件编译成一个可执行程序,docker还有一个gcc或者g++的镜像,使用gcc或者g++镜像的话,我们就不需要在ubunt或者centos镜像中再安装gcc 、g++了。
推荐三种镜像:
- gcc 或者g++
- centos
下载镜像到宿主主机: docker search gcc
下面为执行结果:
选择第一个版本进行下载:
docker pull gcc //下载镜像 docker images //查看本地已经下载的镜像
下面为执行结果:
使用 gcc镜像制作应用程序的镜像,下面是Dockerfile的内容:
FROM gcc:latest
RUN mkdir /usr/src/kristopher
COPY test.c /usr/src/kristopher
WORKDIR /usr/src/kristopher
RUN gcc test.c
CMD ["./a.out"]
1 FROM gcc:latest 2 3 RUN mkdir /usr/src/kristopher 4 COPY test.c /usr/src/kristopher 5 WORKDIR /usr/src/kristopher 6 7 RUN gcc test.c 8 CMD ["./a.out"]
执行命令:
docker build -t gcc-test:v1 .
执行过程:
再次执行命令 docker imags, 就可以在本地镜像中多了一个叫gcc-test的镜像,TAG 为v1。
启动 gcc-test 镜像:
docker run -d gcc-test.v1
运行docker ps 结果如图:
接下来进入到容器当中,查看 a.out 程序在后台执行的情况:
docker exec -it mystifying_mclean /bin/bash
结果如图:
进阶教程
直接将一个可执行程序复制到镜像中,制作镜像
参考资料
分类:
【30】docker
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2019-04-18 Linux网络编程
2019-04-18 计算机网络