簡介
創建鏡像的方法主要有三種:基於已有鏡像的容器創建
、基於本地模板導入
、基於Dockerfile創建
。
今天就逐一講述為大家講述,如何構建屬於自己的docker鏡像。
1、基於容器構建鏡像
基於已有容器構建鏡像主要是通過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文件構建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服務
更多Dockerfile的內容將通過后面大量的構建實例再為大家詳細介紹。