1. 程式人生 > 其它 >(七)Docker映象構建的三種方式

(七)Docker映象構建的三種方式

建立映象的方法主要有三種:基於已有映象的容器建立、基於本地模板匯入、基於Dockerfile建立。

一、基於容器建立映象

基於已有容器構建映象主要是通過docker commit命令來構建新的映象,語法規則如下:

下面將演示下如何基於已有容器構建映象
【1】首先,建立一個容器,並在其容器內建立一個test檔案,之後退出。程式碼如下:

root@ubuntu:~# docker run -it ubuntu:18.04 /bin/bash
root@b66c08d61f9e:/# echo "DIY" > /test
root@b66c08d61f9e:/# exit
Exit

【2】基於該容器使用docker commit命令構建新的映象

root@ubuntu:~# docker commit -m "new_image" -a "cnLinuxer" b66 myubuntu:v1
sha256:de7a0211f27fb71ca34c3a5c1829f6d2a69c15ef74cd397a52f2cc8a5e98e1b9
引數解釋:上面-m選項指定了新映象的提交資訊,-a標註作者資訊,b66是容器ID,myubuntu:v1是指定的新映象名稱。

【3】此時本地映象庫已生成myubuntu:v1映象

root@ubuntu:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myubuntu v1 de7a0211f27f 8 minutes ago 64.2MB
...

【4】使用新生成的映象構建容器,測試自定義資料有無丟失

root@ubuntu:~# docker run -it myubuntu:v1 /bin/bash
root@d11d9577f31b:/# cat /test
DIY
root@d11d9577f31b:/#

基於已有容器構建映象,其實質就是將容器裡執行的程式以及該程式的執行環境打包起來生成新的映象。

二、基於本地模板匯入

使用者也可以從模板檔案中匯入映象,主要使用docker import命令
下面演示基於本地模板匯入映象
【1】首先,創造出一個模板,即 將容器匯入到一個模板檔案中

root@ubuntu:~# docker export b66 > /root/myubuntu.tar
root@ubuntu:~# ls /root
/root/myubuntu.tar

【2】利用模板匯入成映象

root@ubuntu:~# docker import /root/myubuntu.tar qinlulu/ubuntu:18.04
sha256:498afccbfb2ddcc7b8ce5a697e982f5bc8d3af9a55adf6a7cc2fd1121dbee36e

【3】此時本地映象倉庫多出一個qinlulu/ubuntu:18.04映象

root@ubuntu:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
qinlulu/ubuntu      18.04               498afccbfb2d        6 seconds ago       64.2MB

三、基於Dockerfile構建

基於Dockerfile構建映象就目前而言是使用最為廣泛的。Dockerfile是由一組指令組成的檔案,其每條指令對應Linux中的一條命令,Docker程式通過讀取Dockerfile中的指令最終生成映象。

下面演示基於Dockerfile檔案構建nginx映象的例項
【1】準備工作:
建立一個目錄,在該目錄裡編寫dockerfile及存放nginx軟體包
root@ubuntu:~# mkdir -p /opt/nginx
root@ubuntu:~# wget -P /opt/nginx http://nginx.org/download/nginx-1.11.1.tar.gz
root@ubuntu:~# touch /opt/nginx/Dockerfile
// 需要準備好以下兩個檔案
root@ubuntu:~# ls /opt/nginx/
Dockerfile nginx-1.11.1.tar.gz
【2】編寫dockerfile檔案,程式碼如下:
root@ubuntu:~# vim /opt/nginx/Dockerfile
FROM centos:7.5.1804 #指定父映象
MAINTAINER mynginx #指定維護者資訊
ADD nginx-1.11.1.tar.gz /usr/local #將本地nginx軟體包上傳至容器/usr/local/下
RUN yum -y install vim wget gcc gcc-c++ make openssl-devel pcre-devel #yum安裝依賴軟體
WORKDIR /usr/local/nginx-1.11.1/ #進入nginx工作目錄
RUN ./configure --prefix=/usr/local/nginx && make && make install #編譯並安裝nginx服務
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf #關閉nginx後臺執行
ENV PATH /usr/local/nginx/sbin:$PATH #新增nginx的環境變數
EXPOSE 80 #將容器的80埠映射出來
CMD ["nginx"] #執行nginx命令,啟動nginx
【3】構建nginx映象
root@ubuntu:/opt/nginx# docker build -t mynginx:v1
輸出兩個Successfully即為構建成功!如下圖:

【4】執行nginx映象
root@ubuntu:~# docker run -itd -p 888:80 mynginx:v1
e93a52fffd9ea4928a062f00613e4325296042a143307602700ddf0c463c02c9
5、測試nginx服務