1. 程式人生 > 實用技巧 >docker學習15-Docker 使用修改後容器來建立映象

docker學習15-Docker 使用修改後容器來建立映象

前言

前面講通過 Dockefile 可以製作自己的映象,通過映象建立容器啟動服務,有時候需要修改容器裡面的內容,比如我們想改點BUG。
我們可以直接在容器裡面修改,驗證通過後,基於現有的容器建立一個新的映象。

docker commit

docker commit 命令是從容器建立一個新的映象, 基本語法

docker commit [OPTIONS] 容器名稱或id 映象名稱:tag

PTIONS引數說明:
-a :提交的映象作者;
-c :使用Dockerfile指令來建立映象;
-m :提交時的說明文字;
-p :在commit時,將容器暫停。

修改容器內容

先通過基礎映象,啟動一個容器後

[root@VM_0_2_centos ~]# docker images
django_yoyo         latest              984e5b0a9896        7 weeks ago         1.2GB
[root@VM_0_2_centos ~]# docker run -d -p 8004:8000 --name web_yoyo1  django_yoyo
874813d5c13fa002f6c5886a6b4c2cbc7d96639a3c8ef4de9154d4352b61b70b

docker exec 進入到容器

docker exec -it web_yoyo1 /bin/bash

可以檢視容器內部的檔案

root@874813d5c13f:/code# ls
1	    Dockerfile	       LICENSE	  __pycache__	  djoflower.out2  images  manage.py  requirements.txt	suite	   uwsgi.ini
ApiManager  HttpRunnerManager  README.md  celerybeat.pid  hrun_case.zip    logs    reports    static		templates
root@874813d5c13f:/code# 

我想通過vi 去編輯檔案

root@874813d5c13f:/code# vi requirements.txt 
bash: vi: command not found

發現沒有vi 命令 ,出現bash: vi: command not found

使用apt-get工具下載vim命令列工具

apt-get update
apt-get -y install vim

等下載完成後,就有vi命令編輯了

最後exit退出容器,回到宿主機上

容器建立新映象

前面在容器裡面做了一些修改,安裝了vim 命令列工具,接著我們基於前面的容器構建一個新的映象

使用docker commit 建立新的映象,先檢視容器id

[root@VM_0_2_centos ~]# docker ps
CONTAINER ID  IMAGE        COMMAND       CREATED         STATUS        PORTS                   NAMES                                                                                 
874813d5c13f  django_yoyo  "python..."   38 minutes ago  Up 38 minutes 0.0.0.0:8004->8000/tcp  web_yoyo1                                                                  

通過容器的 CONTAINER ID 值874813d5c13f 或者NAMES名稱 web_yoyo1來建立新映象

[root@VM_0_2_centos ~]# docker commit web_yoyo1  new_web:v1.0
sha256:ee5f78f470f9c715b0df77eead2dececad6d998b615138f69acfc28f8e95cd03

也可以帶上-a和-m引數新增映象提交資訊

[root@VM_0_2_centos ~]# docker commit -a "author_yoyo" -m "add vim" web_yoyo1  new_web:v1.1 
sha256:078d76416146e0901a948cb8ca9ec3c79425360767caa03602c6810d54e4f25b

最後docker images 檢視剛才構建的本地映象

[root@VM_0_2_centos ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
new_web             v1.0                ee5f78f470f9        About a minute ago   1.24GB
new_web             v1.1                078d76416146        22 minutes ago       1.24GB
django_yoyo         latest              984e5b0a9896        7 weeks ago          1.2GB

這樣我們的新映象就構建成功了