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

这样我们的新镜像就构建成功了
2020年第五期《python接口自动化+测试开发》课程,10月11号开学(火热报名中!)
本期上课时间:10月11号-1月3号,每周六、周日晚上20:30-22:30

(0)

相关推荐

  • (42条消息) docker开启ssh服务

    主要思路:在容器里设置ssh服务开机自启,然后保存为镜像.下次创建容器的时候加上-p 参数,进行22端口映射即可. 实验部分: 使用vmware进行实验,博主使用docker pull centos, ...

  • Docker学习笔记之--.Net Core项目容器连接mssql容器(环境:centos7)

    前一节演示在docker中安装mssql,地址:Docker学习笔记之--安装mssql(Sql Server)并使用Navicat连接测试(环境:centos7) 本节演示 .Net Core项目容 ...

  • docker学习6-docker-compose容器集群编排

    前言 实际工作中我们部署一个应用,一般不仅仅只有一个容器,可能会涉及到多个,比如用到数据库,中间件MQ,web前端和后端服务,等多个容器. 我们如果一个个去启动应用,当项目非常多时,就很难记住了,所有 ...

  • docker学习13-docker容器的文件导入和导出

    前言 搭建的docker环境,经常需要与docker容器内部文件交互,把外部的文件(或宿主机)传到容器内部. 或者把容器内部的文件导出来 rz和sz 先进docker容器内部,以下操作是在容器内部操作 ...

  • Docker学习笔记之--借助Docker Compose进行多容器部署(环境:centos7)

    接下来演示借助Docker Compose进行多容器部署. 前边的章节演示尽管可以实现需求功能,但是在生产环境当中,维护起来显然很麻烦,所以下边演示借助Docker Compose功能,实现一键部署! ...

  • docker学习1-CentOS 7安装docker环境

    前言 Docker 提供轻量的虚拟化,你能够从Docker获得一个额外抽象层,你能够在单台机器上运行多个Docker微容器,而每个微容器里都有一个微服务或独立应用,例如你可以将Tomcat运行在一个D ...

  • docker学习2-快速搭建centos7-python3.6环境

    前言 当我们在一台电脑上搭建了python3.6的环境,下次换了个电脑,或者换成linux的系统了,又得重新搭建一次,设置环境变量.下载pip等操作. 好不容易安装好,一会Scrips目录找不到pip ...

  • docker学习3-镜像的基本使用

    前言 Docker的三大核心概念:镜像.容器.仓库.初学者对镜像和容器往往分不清楚,学过面向对象的应该知道类和实例,这跟面向对象里面的概念很相似 我们可以把镜像看作类,把容器看作类实例化后的对象. d ...

  • docker学习4-docker安装mysql环境

    前言 docker安装mysql环境非常方便,简单的几步操作就可以了 拉取mysql镜像 先拉取mysql的镜像,可以在docker的镜像仓库找到不同TAG标签的版本https://hub.docke ...

  • docker学习5-docker安装tomcat环境和部署war包

    前言 tomcat部署web项目非常方便,把war包放到webapps目录就可以了.本篇使用docker快速搭建一个tomcat环境 下载tomcat镜像 拉取官方最新版tomcat镜像 [root@ ...