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.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

这样我们的新镜像就构建成功了

posted @ 2020-12-04 10:42  上海-悠悠  阅读(680)  评论(0编辑  收藏  举报