Docker系列教程04-Docker構建鏡像的三種方式

簡介

創建鏡像的方法主要有三種:基於已有鏡像的容器創建基於本地模板導入基於Dockerfile創建

今天就逐一講述爲大家講述,如何構建屬於自己的docker鏡像。

1、基於容器構建鏡像

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

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:/#

基於已有容器構建鏡像,其實質就是將容器裏運行的程序以及該程序的運行環境打包起來生成新的鏡像。

2、基於本地模板導入

用戶也可以從模板文件中導入鏡像,主要使用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

3、基於Dockerfile構建

基於Dockerfile構建鏡像就目前而言是使用最爲廣泛的。Dockerfile是由一組指令組成的文件,其每條指令對應Linux中的一條命令,Docker程序通過讀取Dockerfile中的指令最終生成鏡像。

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即爲構建成功!如下圖:

dockerfile構建鏡像過程

4、運行nginx鏡像

root@ubuntu:~# docker run -itd -p 888:80 mynginx:v1
e93a52fffd9ea4928a062f00613e4325296042a143307602700ddf0c463c02c9

5、測試nginx服務

瀏覽器訪問測試

更多Dockerfile的內容將通過後面大量的構建實例再爲大家詳細介紹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章