如何创建现有docker镜像的副本

时间:2015-09-27 04:40:50

标签: ubuntu docker debian dockerfile

我一直在尝试使用泊坞窗,这些是我已经下载的码头图片。

debian                 latest    8c00acfb0175        2 weeks ago         125.2 MB
sameersbn/postgresql   latest    1da0f78d061e        3 weeks ago         231.6 MB
ubuntu                 latest    91e54dfb1179        5 weeks ago         188.4 MB
docker/whalesay        latest    fb434121fc77        4 months ago        247 MB
sameersbn/postgresql   9.4       271ad7e099d3        7 months ago        228.2 MB

我如何在本地为debian或ubuntu创建基本图像,并在它们之上构建一些测试图像而不打扰基本图像,这样我就不必再次下载基本的docker图像了,我可以多次使用新下载的图像吗?

2 个答案:

答案 0 :(得分:3)

只需编写一个以:

开头的Dockerfile
FROM debian:latest
...

(使用FROM directive

这将创建一个基于debian的本地图像,因为debian已经下载,所以不会再次下载。

注意:最好避免使用最新的"标签:请参阅" Docker: The latest Confusion"作者:Stack Overflow撰稿人Adrian Mouat 使用实际标签更精确:

docker pull debian:7.8    docker pull debian:wheezy

  

如果想在ubuntu中做某事有以下几种方法:我只执行命令docker copy "image_name"然后做我想做的任何事情(运行图像,克隆一些git repo,安装一些软件包,测试它),以及然后只需将其删除docker rmi "image_name"(当我完成图片时)。

是的:您可以docker run --it <image> bash(包含bash的图片),然后退出bash:您的容器将被退出:然后您可以docker commit <containerrid> newimage,然后您将获得一份副本原始图像。

答案 1 :(得分:2)

使用命令&#34; docker images&#34;列出的图像可以重复使用。以下是有两种方法可以扩展或重复使用基本图像而无需再次下载。

1。使用Dockerfile,net/url/#QueryEscape

在Dockerfile中你可以把指令&#34; FROM REPOSITORY_NAME:TAG_NAME&#34;作为重新使用已经下载的基本图像的第一行

FROM REPOSITORY_NAME:TAG_NAME

在&#34;码头图像&#34;命令输出,第1列给出了REPOSITORY名称,第2列给出了TAG名称。

您可以在Dockerfile中进一步添加更多指令并构建它。

2。使用Docker提交功能(不像Dockerfile方法那么简单)

一个。从基本图像

启动容器

湾登录容器,对容器进行更改,如需要安装其他rpms等。

℃。提交在基本图像上创建的新图像的结果。

docker commit -m "installed wireshark" -a "admin" "container-id" "your_repository_name"/"user_name":"New_TAG"

d。运行&#34;码头图像&#34;命令,您可以看到新图像(在现有的已下载图像的基础上准备)