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
    

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

  • 相关阅读:
    纯CSS实现小三角提示信息
    PostGIS+QGIS+GeoServer+OpenLayers实现数据的存储、服务的发布以及地图的显示
    Arcgis for Js之Graphiclayer扩展详解
    Arcgis for JS扩展GraphicLayer实现区域对象的聚类统计与展示
    Arcgis for JS之Cluster聚类分析的实现(基于区域范围的)
    Arcgis for JS之Cluster聚类分析的实现
    Arcgis for Js之featurelayer实现空间查询和属性查询
    RESTful WebService入门
    使用 Spring 3 来创建 RESTful Web Services(转)
    基于Spring设计并实现RESTful Web Services(转)
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/14084339.html
Copyright © 2011-2022 走看看