制作鏡像流程
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
結果如圖:

進階教程
直接將一個可執行程序復制到鏡像中,制作鏡像
