前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker学习15-Docker 使用修改后容器来创建镜像

docker学习15-Docker 使用修改后容器来创建镜像

作者头像
上海-悠悠
发布2020-12-17 14:16:29
1.7K0
发布2020-12-17 14:16:29
举报

前言

前面讲通过 Dockefile 可以制作自己的镜像,通过镜像创建容器启动服务,有时候需要修改容器里面的内容,比如我们想改点BUG。 我们可以直接在容器里面修改,验证通过后,基于现有的容器创建一个新的镜像。

docker commit

docker commit 命令是从容器创建一个新的镜像, 基本语法

docker commit [OPTIONS] 容器名称或id 镜像名称:tag

PTIONS参数说明: -a :提交的镜像作者; -c :使用Dockerfile指令来创建镜像; -m :提交时的说明文字; -p :在commit时,将容器暂停。

修改容器内容

先通过基础镜像,启动一个容器后

代码语言:javascript
复制
[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

可以查看容器内部的文件

代码语言:javascript
复制
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 去编辑文件

代码语言:javascript
复制
root@874813d5c13f:/code# vi requirements.txt 
bash: vi: command not found

发现没有vi 命令 ,出现bash: vi: command not found

使用apt-get工具下载vim命令行工具

代码语言:javascript
复制
apt-get update
apt-get -y install vim

等下载完成后,就有vi命令编辑了

最后exit退出容器,回到宿主机上

容器创建新镜像

前面在容器里面做了一些修改,安装了vim 命令行工具,接着我们基于前面的容器构建一个新的镜像

使用docker commit 创建新的镜像,先查看容器id

代码语言:javascript
复制
[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来创建新镜像

代码语言:javascript
复制
[root@VM_0_2_centos ~]# docker commit web_yoyo1  new_web:v1.0
sha256:ee5f78f470f9c715b0df77eead2dececad6d998b615138f69acfc28f8e95cd03

也可以带上-a和-m参数添加镜像提交信息

代码语言:javascript
复制
[root@VM_0_2_centos ~]# docker commit -a "author_yoyo" -m "add vim" web_yoyo1  new_web:v1.1 
sha256:078d76416146e0901a948cb8ca9ec3c79425360767caa03602c6810d54e4f25b

最后docker images 查看刚才构建的本地镜像

代码语言:javascript
复制
[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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • docker commit
  • 修改容器内容
  • 容器创建新镜像
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档