容器鏡像文件的制作一般分為兩種:
1眨猎、基于運行中容器制作的鏡像,如開啟一個容器后安裝一系列軟件包后利用docker commit命令將容器運行中的最上層的可寫層(鏡像的多層掛載下面層都是只讀層)打包形成新的鏡像image.
2弥姻、基于Dockerfile制作鏡像南片,一個Dockerfile文件是一個文本文件,里面是一堆指令調(diào)用的集合
Dockerfile Format (語法格式)
一般分成兩種語句注釋語句及指令語句庭敦,一般不區(qū)分大小寫疼进,但是約定俗成指令用大寫
指令自上而下依次執(zhí)行
制作鏡像時先創(chuàng)建專用的工作目錄(自定義),然后創(chuàng)建Dockerfile文件秧廉,Dockerfile引用的文件都需要放到該工作目錄下伞广,也可以創(chuàng)建一個子目錄將所有引用文件都放在該子目錄下,如果有不需要打包進去的文件疼电,可以創(chuàng)建一個.dockeringore文件(文件排除列表)嚼锄,將不需要打包文件的路徑逐行添加到該文件中,這樣制作鏡像時會自動忽略這些文件
Dockerfile文件編輯完成后使用docker build命令生成新的鏡像打好標簽推送到對應的倉庫
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 4ab4c602aa5e 2 weeks ago 1.84kB
nginx latest 06144b287844 3 weeks ago 109MB
busybox latest e1ddd7948a1c 8 weeks ago 1.16MB
[root@localhost ~]# cd /
[root@localhost /]# mkdir mkimages
[root@localhost /]# cd /mkimages/
[root@localhost mkimages]# echo "helloworld">>index.html
[root@localhost mkimages]# vim Dockerfile
#第一行指定基礎鏡像蔽豺,默認下從本地找区丑,再從dockerhub上尋找,標簽tag默認是最新latest修陡,也可以用倉庫@哈希碼的格式
FROM busybox:latest
#添加維護者信息沧侥,MAINTAINER(舊版本使用),現(xiàn)在使用標簽LABLE
MAINTAINER "allan<345654857@qq.com>"
#LABLE maintainer= "allan<345654857@qq.com>"
#COPY將宿主機上工作目錄中的文件拷貝到容器中對應的目錄下
COPY index.html /data/web/html/
基于以上3行命令可以制作一個最簡單的鏡像,并打上標簽tag
[root@localhost mkimages]# docker build -t b1test:v1.1 ./
Sending build context to Docker daemon 3.072kB
Step 1/3 : FROM busybox:latest
---> e1ddd7948a1c
Step 2/3 : MAINTAINER "allan <345654857@qq.com>"
---> Running in 75315e147fd3
Removing intermediate container 75315e147fd3
---> c0555949d74b
Step 3/3 : COPY index.html /data/web/html/
---> 382c7e0f6ce5
Successfully built 382c7e0f6ce5
Successfully tagged b1test:v1.1
[root@localhost mkimages]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
b1test v1.1 382c7e0f6ce5 17 seconds ago 1.16MB
hello-world latest 4ab4c602aa5e 2 weeks ago 1.84kB
nginx latest 06144b287844 3 weeks ago 109MB
busybox latest e1ddd7948a1c 8 weeks ago 1.16MB
#運行一個容器檢查鏡像可以發(fā)現(xiàn)文件已經(jīng)拷貝到對應目錄下
[root@localhost mkimages]# docker container run --name b1 --rm b1test:v1.1 cat /data/web/html/index.html
helloworld
繼續(xù)添加其他語句
FROM busybox:latest
MAINTAINER "allan <345654857@qq.com>"
#指定鏡像的工作目錄,ADD命令將軟件包拷貝進去
WORKDIR /usr/local/src/
#ADD支持URL可以直接網(wǎng)上下載軟件包
ADD nginx-1.15.2.tar.gz ./
#ADD http://nginx.org/download/nginx-1.15.4.tar.gz /usr/local/src/
#鏡像指定數(shù)據(jù)卷
VOLUME /data/mysql/
#指定默認暴露的端口濒析,動態(tài)綁定宿主機上空閑的端口正什,運行容器數(shù)加參數(shù)P可以暴露
EXPOSE 80/tcp