前言
前面講通過 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.out 2 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
這樣我們的新鏡像就構建成功了