【現(xiàn)學(xué)現(xiàn)忘Docker基礎(chǔ)】— 20.Docker鏡像commit操作

(1)commit命令作用

在運(yùn)行的容器中,并在鏡像的基礎(chǔ)上做了一些修改,我們希望保存起來,封裝成一個(gè)新的鏡像,方便我們以后使用,也就是提交容器副本,使之成為一個(gè)新的鏡像。

即:docker commit,從容器創(chuàng)建一個(gè)新的鏡像。

例如:

我們以Tomcat鏡像為例,運(yùn)行啟動(dòng)Tomcat鏡像后得到Tomcat容器,我們?cè)赥omcat容器中做了一些自定義的設(shè)計(jì)或者修改,使此時(shí)的Tomcat容器成為符合我們需求的容器,之后就可以通過docker commit命令提交生成一個(gè)新的Tomcat鏡像,也就是生成一個(gè)符合我們使用需求的Tomcat鏡像,再下次在使用Tomcat容器時(shí),直接使用我們自定義的新Tomcat鏡像即可。

(2)commit命令說明

命令格式如下:

docker commit -m="提交的描述信息" -a="作者" 容器ID 要?jiǎng)?chuàng)建的目標(biāo)鏡像名:[標(biāo)簽名]

OPTIONS說明:

  • -a:提交的鏡像作者;
  • -c:使用Dockerfile指令來創(chuàng)建鏡像;
  • -m:提交時(shí)的說明文字;
  • -p:在commit時(shí),將容器暫停。

(3)示例演示

我們通過示例加深對(duì)鏡像操作和理解。

步驟1:查看本地Docker鏡像

[root@192 ~]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
centos                latest    300e315adb2f   3 months ago   209MB

步驟2:下載Tomcat鏡像到本地

[root@192 ~]# docker pull tomcat:9.0
9.0: Pulling from library/tomcat
b9a857cbf04d: Pull complete 
d557ee20540b: Pull complete 
3b9ca4f00c2e: Pull complete 
667fd949ed93: Pull complete 
661d3b55f657: Pull complete 
511ef4338a0b: Pull complete 
a56db448fefe: Pull complete 
00612a99c7dc: Pull complete 
326f9601c512: Pull complete 
c547db74f1e1: Pull complete 
Digest: sha256:94cc18203335e400dbafcd0633f33c53663b1c1012a13bcad58cced9cd9d1305
Status: Downloaded newer image for tomcat:9.0
docker.io/library/tomcat:9.0

[root@192 ~]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
tomcat                9.0       040bdb29ab37   2 months ago   649MB
centos                latest    300e315adb2f   3 months ago   209MB

步驟3:啟動(dòng)容器

執(zhí)行命令:docker run -it --name tomcat123 -p 8888:8080 tomcat:9.0(注意該命令最后不要加/bin/bash)

-p用法可以看前面的Docker安裝Tomcat容器的練習(xí))

如下圖:

提示:-P大P的用法如下:

也可以執(zhí)行命令:docker run -d -p 6666: 8080 tomcat:9.0,進(jìn)行Tomcat容器的后臺(tái)啟動(dòng)。

步驟4:對(duì)Tomcat鏡像進(jìn)行修改

把Tomcat中webapps.dist目錄中的內(nèi)容,全部拷貝到webapps目錄中。

我們?cè)赬Shell中新建一個(gè)窗口,進(jìn)入Tomcat容器,進(jìn)行修改。

# 進(jìn)入Tomcat容器中
[root@192 ~]# docker exec -it tomcat123 /bin/bash
root@d60ed0bff852:/usr/local/tomcat# 

# webapps.dist目錄中的內(nèi)容,全部拷貝到webapps目錄中。
root@d60ed0bff852:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@d60ed0bff852:/usr/local/tomcat# ls -l webapps
total 4
drwxr-xr-x.  3 root root  223 Mar 18 05:02 ROOT
drwxr-xr-x. 15 root root 4096 Mar 18 05:02 docs
drwxr-xr-x.  7 root root   99 Mar 18 05:02 examples
drwxr-xr-x.  6 root root   79 Mar 18 05:02 host-manager
drwxr-xr-x.  6 root root  114 Mar 18 05:02 manager

說明:

因?yàn)榘l(fā)現(xiàn)默認(rèn)Tomcat的webapps目錄中是沒有應(yīng)用,這是鏡像的原因,官方的鏡像默認(rèn)webapps下面是沒有文件的。

所以通過上面的操作,當(dāng)我們啟動(dòng)Tomcat鏡像的時(shí)候,就可以訪問到Tomcat的歡迎界面了。(具體可看前面的Docker安裝Tomcat容器的練習(xí))

步驟5:提交鏡像

將我們操作過的Tomcat容器通過commit提交為一個(gè)新的鏡像,我們以后就使用我們修改過的鏡像即可。

命令如下:

docker commit -m="提交的描述信息" -a="作者" 容器ID 要?jiǎng)?chuàng)建的目標(biāo)鏡像名:[標(biāo)簽名]

示例:

# 退出Tomcat容器
root@d60ed0bff852:/usr/local/tomcat# exit
exit

# 執(zhí)行docker commit 提交生成新的tomcat鏡像
[root@192 ~]# docker commit -m="add webapps App" -a="sunwukong" d60ed0bff852 tomcat123:1.0
sha256:e42c33552c6c3df7587f254803a0c1b4a686ff78d9f5e28aed0a94a3c91b22a4
[root@192 ~]# 

# 查看本地Docker鏡像
[root@192 ~]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED              SIZE
tomcat123             1.0       e42c33552c6c   About a minute ago   653MB
tomcat                9.0       040bdb29ab37   2 months ago         649MB
centos                latest    300e315adb2f   3 months ago         209MB

我們可以看到本地Docker鏡像多可以一個(gè)tomcat123鏡像,且是1.0版本。

也可以發(fā)現(xiàn)tomcat123鏡像的大小為653MB,比原先的tomcat鏡像649MB多了幾兆。

提示:

docker commit -m="add webapps App" -a="sunwukong" d60ed0bff852 tomcat123:1.0

命令的最后tomcat123:1.0為自定義的鏡像名和版本,也可以在前面加入Namespace的,也就如abc/tomcat123:1.0,這個(gè)abc就叫Namespace,就相當(dāng)與Java中,類前面的包名。我們拉取鏡像的時(shí)候也經(jīng)常會(huì)看到一些這樣命名的包,如用到過的portainer/portainer工具。

關(guān)于Namespace命名空間,以后會(huì)詳細(xì)講解。

步驟6:啟動(dòng)自定義的Tomcat鏡像

執(zhí)行命令:docker run -it -p 8888:8080 tomcat123:1.0

這里提示一下,如果需要讓外部訪問容器的服務(wù),一定要進(jìn)行端口映射。

直接在外部瀏覽器中訪問,如下:


可以直接顯示Tomcat服務(wù)的歡迎界面。

到了這里才算是入門Dokcer!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容