如何创建现有 docker 图片的副本
How to create a copy of exisiting docker image
我尝试使用 docker 有一段时间了,这些是我下载的 docker 图片。
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 图像,我可以多次使用新下载的图像?
只需编写一个以以下开头的 Dockerfile:
FROM debian:latest
...
(使用 FROM
directive)
这会创建一个基于debian的本地镜像,由于debian已经下载了,所以不会再下载了。
注意:最好避开"latest"标签:见“Docker: The latest Confusion" by Stack Overflow contributor Adrian Mouat.
使用实际标签更精确:
docker拉debian:7.8
docker拉debian:wheezy
If wanted to do something in ubuntu is there a way when: I just execute command docker copy "image_name"
and then do whatever I want to (run image, clone some git repo, install some packages, test it) , and then just delete it docker rmi "image_name"
(when I'm done with image) .
是的:你可以 docker run --it <image> bash
(来自包含 bash
的图像),然后退出 bash:你的容器将退出:然后你可以 docker commit <containerrid> newimage
,然后您将获得原始图像的副本。
您使用命令“docker images”列出的图像可以重复使用。您可以通过以下 2 种方式扩展或重新使用基本映像而无需再次下载它。
1。使用 Docker 文件,link
在 Docker 文件中,您可以将指令“FROM REPOSITORY_NAME:TAG_NAME”作为第一行,以重新使用已下载的基本映像
FROM REPOSITORY_NAME:TAG_NAME
在“docker images”命令输出中,第一列给出了 REPOSITORY 名称,第二列给出了 TAG 名称。
您可以在 Docker 文件中进一步添加更多指令并构建它。
2。使用 Docker 提交功能(不像 Docker 文件方法那么简单)
一个。从基础镜像启动容器
b。登录容器,根据需要对容器进行更改,例如安装其他 rpm 等。
c。提交在基础映像上创建的新映像的结果。
docker commit -m "installed wireshark" -a "admin" "container-id" "your_repository_name"/"user_name":"New_TAG"
d。 运行 "docker images" 命令,你可以看到新的图像(这是在现有的、已经下载的图像之上准备的)
我尝试使用 docker 有一段时间了,这些是我下载的 docker 图片。
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 图像,我可以多次使用新下载的图像?
只需编写一个以以下开头的 Dockerfile:
FROM debian:latest
...
(使用 FROM
directive)
这会创建一个基于debian的本地镜像,由于debian已经下载了,所以不会再下载了。
注意:最好避开"latest"标签:见“Docker: The latest Confusion" by Stack Overflow contributor Adrian Mouat.
使用实际标签更精确:
docker拉debian:7.8 docker拉debian:wheezy
If wanted to do something in ubuntu is there a way when: I just execute command
docker copy "image_name"
and then do whatever I want to (run image, clone some git repo, install some packages, test it) , and then just delete itdocker rmi "image_name"
(when I'm done with image) .
是的:你可以 docker run --it <image> bash
(来自包含 bash
的图像),然后退出 bash:你的容器将退出:然后你可以 docker commit <containerrid> newimage
,然后您将获得原始图像的副本。
您使用命令“docker images”列出的图像可以重复使用。您可以通过以下 2 种方式扩展或重新使用基本映像而无需再次下载它。
1。使用 Docker 文件,link
在 Docker 文件中,您可以将指令“FROM REPOSITORY_NAME:TAG_NAME”作为第一行,以重新使用已下载的基本映像
FROM REPOSITORY_NAME:TAG_NAME
在“docker images”命令输出中,第一列给出了 REPOSITORY 名称,第二列给出了 TAG 名称。
您可以在 Docker 文件中进一步添加更多指令并构建它。
2。使用 Docker 提交功能(不像 Docker 文件方法那么简单)
一个。从基础镜像启动容器
b。登录容器,根据需要对容器进行更改,例如安装其他 rpm 等。
c。提交在基础映像上创建的新映像的结果。
docker commit -m "installed wireshark" -a "admin" "container-id" "your_repository_name"/"user_name":"New_TAG"
d。 运行 "docker images" 命令,你可以看到新的图像(这是在现有的、已经下载的图像之上准备的)