zoukankan      html  css  js  c++  java
  • 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
    

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

  • 相关阅读:
    ios UIWebView截获html并修改便签内容(转载)
    IOS获取系统时间 NSDate
    ios 把毫秒值转换成日期 NSDate
    iOS  如何判断当前网络连接状态  网络是否正常  网络是否可用
    IOS开发 xcode报错之has been modified since the precompiled header was built
    iOS系统下 的手机屏幕尺寸 分辨率 及系统版本 总结
    iOS 切图使用 分辨率 使用 相关总结
    整合最优雅SSM框架:SpringMVC + Spring + MyBatis 基础
    Java面试之PO,VO,TO,QO,BO
    Notes模板说明
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/14084339.html
Copyright © 2011-2022 走看看