1、commit命令作用
在執行的容器中,並在映象的基礎上做了一些修改,我們希望儲存起來,封裝成一個新的映象,方便我們以後使用,也就是提交容器副本,使之成為一個新的映象。
即:docker commit,從容器建立一個新的映象。
例如:
我們以Tomcat映象為例,執行啟動Tomcat映象後得到Tomcat容器,我們在Tomcat容器中做了一些自定義的設計或者修改,使此時的Tomcat容器成為符合我們需求的容器,之後就可以通過docker commit
命令提交生成一個新的Tomcat映象,也就是生成一個符合我們使用需求的Tomcat映象,再下次在使用Tomcat容器時,直接使用我們自定義的新Tomcat映象即可。
2、commit命令說明
命令格式如下:
docker commit -m="提交的描述資訊" -a="作者" 容器ID 要建立的目標映象名:[標籤名]
OPTIONS說明:
-a
:提交的映象作者;-c
:使用Dockerfile
指令來建立映象;-m
:提交時的說明文字;-p
:在commit
時,將容器暫停。
3、示例演示
我們通過示例加深對映象操作和理解。
步驟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:啟動容器
執行命令:docker run -it --name tomcat123 -p 8888:8080 tomcat:9.0
(注意該命令最後不要加/bin/bash
)
(-p
用法可以看前面的Docker安裝Tomcat容器的練習)
如下圖:
提示:-P
大P的用法如下:
也可以執行命令:docker run -d -p 6666: 8080 tomcat:9.0
,進行Tomcat容器的後臺啟動。
步驟4:對Tomcat映象進行修改
把Tomcat中webapps.dist
目錄中的內容,全部拷貝到webapps
目錄中。
我們在XShell中新建一個視窗,進入Tomcat容器,進行修改。
# 進入Tomcat容器中
[root@192 ~]# docker exec -it tomcat123 /bin/bash
root@d60ed0bff852:/usr/local/tomcat#
# webapps.dist目錄中的內容,全部拷貝到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
說明:
因為發現預設Tomcat的
webapps
目錄中是沒有應用,這是映象的原因,官方的映象預設webapps
下面是沒有檔案的。所以通過上面的操作,當我們啟動Tomcat映象的時候,就可以訪問到Tomcat的歡迎介面了。(具體可看前面的Docker安裝Tomcat容器的練習)
步驟5:提交映象
將我們操作過的Tomcat容器通過commit
提交為一個新的映象,我們以後就使用我們修改過的映象即可。
命令如下:
docker commit -m="提交的描述資訊" -a="作者" 容器ID 要建立的目標映象名:[標籤名]
示例:
# 退出Tomcat容器
root@d60ed0bff852:/usr/local/tomcat# exit
exit
# 執行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映象多可以一個tomcat123
映象,且是1.0
版本。
也可以發現tomcat123
映象的大小為653MB,比原先的Tomcat映象649MB多了幾兆。
提示:
docker commit -m="add webapps App" -a="sunwukong" d60ed0bff852 tomcat123:1.0
命令的最後
tomcat123:1.0
為自定義的映象名和版本,也可以在前面加入Namespace的,也就如abc/tomcat123:1.0
,這個abc
就叫Namespace。你就可以想象於Java中,類前面的包名。我們拉取映象的時候也經常會看到一些這樣命名的包,如用到過的portainer/portainer
工具。關於Namespace名稱空間,以後會詳細講解。
步驟6:啟動自定義的Tomcat映象
執行命令:docker run -it -p 8888:8080 tomcat123:1.0
這裡提示一下,如果需要讓外部訪問容器的服務,一定要進行埠對映。
直接在外部瀏覽器中訪問,如下:
可以直接顯示Tomcat服務的歡迎介面。
到了這裡大概才算是入門Dokcer!