【译】从现有的容器里创建新的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镜像”。

转载于:https://www.cnblogs.com/everfight/p/create_docker_image_from_container.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Docker 容器是运行在 Docker 上的一个进程,而 Docker 镜像则是容器运行所需的文件系统。容器镜像的实例,镜像容器的模板。容器是在镜像的基础上运行的,可以对镜像进行修改而不影响原镜像。 ### 回答2: Docker容器Docker镜像Docker技术中两个重要的概念。 Docker镜像是一个可执行的软件包,它包含了运行特定应用程序所需的一切,包括代码、运行时环境、系统工具、库文件等。它类似于一个模板,可以被用来创建多个相同的容器Docker镜像通常是通过Dockerfile文件定义的,其中包含了构建镜像所需的指令。 Docker容器是由Docker镜像创建而来的实例,可以看作是一个独立运行的应用。容器在运行时,会利用镜像中的文件系统以及其他必要资源启动应用,使其能够独立运行。容器是可随时创建、启动、停止、删除的,可以在不同的主机之间迁移。每个容器都是相互隔离的,拥有独立的进程、网络和文件系统空间。 可以将Docker镜像比作一个模板,而Docker容器则是由模板创建的实例。通过Docker镜像,可以创建多个具有相同配置和环境的容器镜像可以通过拉取远程镜像仓库的方式获取,也可以通过本地仓库的方式进行创建和管理。容器可以基于现有镜像创建,也可以通过修改容器的配置和修改镜像内的内容来个性化定制。 总结来说,Docker容器是通过Docker镜像创建而来的独立运行的实例。镜像容器的基础,是用来创建和管理容器的模板。容器创建和删除不会影响镜像,而镜像的修改和更也不会影响已经创建容器。 ### 回答3: Docker容器Docker镜像Docker技术中的两个基本概念。Docker镜像Docker构建和部署应用程序的基础,它是一个静态的文件,包含了运行应用程序所需的一切依赖项。镜像是由多个图层(layer)组成,每个图层都是镜像的一部分,包括操作系统、软件包、应用程序等。镜像是只读的,可以从Docker Hub或者其他镜像仓库获取,也可以通过Dockerfile文件或者Docker命令自行构建。 Docker容器是基于Docker镜像创建的一个可执行实例,是一个轻量级的、独立部署的运行环境。容器可以被启动、停止、删除和重启动,容器中的应用程序可以以进程的形式在其中运行。容器通过对镜像进行读写,可以保存在文件系统中的任何更改,但并不修改原始的镜像。因此,容器是可移植的,可以在不同的环境中进行部署。 容器可以通过Docker命令运行,可以指定要使用的镜像网络设置、外部设备的映射等参数。容器拥有自己的文件系统、网络空间和进程空间,它们之间相互隔离,互不干扰。容器可以快速启动和停止,可以根据需要进行扩展和管理。多个容器可以在同一个宿主机上运行,它们之间共享宿主机的资源。 总结来说,Docker镜像是一个静态的、只读的文件,提供了构建和部署应用程序所需的所有依赖项。Docker容器是基于Docker镜像创建的一个可执行实例,提供了独立的、轻量级的运行环境。容器可以快速启动、停止和管理,并可以共享宿主机的资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值