zoukankan      html  css  js  c++  java
  • 【译】从现有的容器里创建新的Docker镜像

    如果你修改了一个容器的内容,你可以使用docker commit命令将现有的容器状态保存为一个镜像。
    下面的例子展示了如何修改一个基于oraclelinux:6.6的容器使得其能够运行Apache HTTP服务器。停止容器后,mymod/httpd:v1将从中创建镜像。
    要从oraclelinux:6.6容器创建Apache服务器镜像 :

    1. 在名为guest容器中 运行bash shell命令行中运行以下命令:
    [root @ host~]#docker run -i -t --name guest oraclelinux:6.6 /bin/bash
    [root @ guest~]#
    
    1. 如果您使用Web代理,请按照Oracle Linux管理员发行版7指南中的https://docs.oracle.com/cd/E52668_01/E54669/html/ol7-proxy-config.html中的说明编辑guest虚拟机上的yum配置。

    2. 安装httpd包:

    [root @ guest~]# yum install httpd
    
    1. 如果需要,在guest 虚拟机下/var/www/html目录中放置需要显示的Web内容 。

    2. 在主机上使用docker stop命令退出guest容器:

    [root @ host~]#个docker stop guest
    guest
    
    1. 使用您停止的容器的ID 创建tag是mymod/httpd的镜像:
    [root @ host~]#docker commit -m "ol6 + httpd" -a "A N Other" 
       `docker ps -l -q` mymod/httpd:v1
    8594abec905e6374db51bed1bfb208804cfb60d96b285efb897db581a01676e9
    

    使用-m和-a 选项来记录镜像及其作者。该命令返回新镜像ID的完整版本号。
    如果使用docker images命令,则新镜像现在将显示在列表中:

    [root @ host~]# docker images
    REPOSITORY    TAG         IMAGE ID       CREATED       VIRTUAL SIZE
    mymod/httpd   v1          8594abec905e   2 minutes ago 938.5 MB
    oraclelinux   6           9ac13076d2b5   5 days ago    319.4 MB
    oraclelinux   6.6         9ac13076d2b5   5 days ago    319.4 MB
    oraclelinux   latest      073ded22ac0f   5 days ago    265.2 MB
    oraclelinux   7           073ded22ac0f   5 days ago    265.2 MB
    oraclelinux   7.0         073ded22ac0f   5 days ago    265.2 MB
    
    1. 删除名为guest的容器。
    #docker rm guest
    guest
    

    您现在可以使用新镜像创建一个用作Web服务器的容器,例如:

    #docker run -d --name newguest -p 8080:80 mymod/httpd:v1 /usr/sbin/httpd -D FOREGROUND
    7afbbefec5191f632e149f85ae10ed0ba88f1c545daad18cb930e575ef6a3e63
    

    所述-d选项运行命令非交互的背景和显示完整版本的独特容器的ID。该-p 8080:80 选项用来射guestr容器的80端口到主机的8080端口上。您可以通过运行docker ps或 docker port来查看端口映射,例如:

    [root @ host~]# docker ps
    CONTAINER ID  IMAGE         COMMAND    CREATED    STATUS   PORTS                  NAMES
    7afbbefec519  mymod/httpd:v1           ...        ...      0.0.0.0:8080->80/tcp   newguest
    [root@host ~]# docker port newguest 80
    0.0.0.0:8080
    

    注意
    docker ps命令显示容器ID的短的版本号。您可以使用 --no-trunc选项显示长的版本号。
    默认IP地址值0.0.0.0表示端口映射适用于主机上的所有网络接口。您可以使用多个-p选项限制重映射适用的IP地址,例如:

    # docker run -d --name newguest -p 127.0.0.1:8080:80 -p 192.168.1.2:8080:80 
      mymod/httpd:v1 /usr/sbin/httpd -D FOREGROUND
    

    您可以通过将浏览器指向主机上的端口8080来查看guest虚拟机所服务的Web内容。如果从其他系统访问内容,则可能需要允许到主机端口的传入连接,例如:

    [root @ host~]#iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
    [root @ host~]#service iptables save
    

    如果需要删除镜像,请使用docker rmi命令:

    [root @ host~]# docker rmi mymod/httpd:v1
    Untagged: mymod/httpd:v1
    Deleted: 7afbbefec5191f632e149f85ae10ed0ba88f1c545daad18cb930e575ef6a3e63
    

    注意
    从Docker 1.8版开始,您无法删除正在运行的容器的图像。
    在生产环境中,使用docker commit命令创建镜像并不能提供有关如何创建映像的方便记录,因此您可能会发现很难重新创建已丢失或损坏的映像。创建映像的首选方法是设置Dockerfile,你可以使用定义指令的方式创建镜像。请参见 第4.4节“从Dockerfile创建Docker镜像”。

  • 相关阅读:
    Repeater添加删除按钮
    C# Excel导出后台代码
    MOSS层级结构Excel导入SPList
    Excel导入到datatable
    层级结构SPList导出到Excel
    SPlist按PID层级顺序导入datatable
    .NET导出Excel遇到的80070005错误的解决方法:
    datatable转到Excel
    MOSS获取SPListItem某版本
    sharepoint实现假分页
  • 原文地址:https://www.cnblogs.com/everfight/p/create_docker_image_from_container.html
Copyright © 2011-2022 走看看