【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

結果如圖:

 

 

 進階教程

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

參考資料

1. 如何使用docker部署c/c++程序

2. 如何編寫優雅的Dockerfile

3. 使用docker部署一個簡單的c/c++程序


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM