【发布时间】:2016-08-16 22:40:27
【问题描述】:
我刚开始使用 docker。我使用 docker 文件创建了一个图像。如何从现有图像创建新图像?
【问题讨论】:
标签: docker docker-image
我刚开始使用 docker。我使用 docker 文件创建了一个图像。如何从现有图像创建新图像?
【问题讨论】:
标签: docker docker-image
您可以使用 docker 命令 $docker build -f docker_filename . 创建一个新镜像,它会首先读取写入指令的 Dockerfile 并自动构建镜像。 Dockerfile 中的指令包含组装映像所需的命令。一旦图像被构建,它将被分配一个图像ID。 可以将映像推送到 docker 注册表中心。为此,用户必须在 docker 注册表中心创建一个帐户。
Dockerfile 的示例如下所示,
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay
在这里,第一条指令告诉新图像将使用 docker/whalesay:latest 图像。 第二条指令将运行这两个命令。 第三条指令告诉当环境建立时“fortune -a”命令应该运行。
【讨论】:
假设您有一个容器bd91ca3ca3c8 正在运行,并且您想在对容器进行更改后创建一个新映像。生成另一个图像可以让您保留所做的更改。
在这种情况下你可以运行:
docker commit -p -a "author_here" -m "your_message" bd91ca3ca3c8 name_of_new_image
-p 在 commit 命令构建新镜像时暂停容器。
-a 允许您提供新图像的作者信息。
-m 允许您像在 Git 中一样添加评论。
【讨论】:
要从现有图像创建新图像,您只需指定“FROM”,例如:
FROM sergiu/ubuntu
MAINTAINER sergiu
【讨论】:
sergiu 是什么?一个文件夹?从私有注册表中的图像构建怎么样? MAINTAINER 关键字的用途是什么?
我也是 docker 新手,但我发现可能会有所帮助。
1) 每当您编写“FROM”并运行 docker 文件时,docker 会查看他的 repo 并首先加载该图像。所以如果你有任何你想在“FROM”中使用的本地图像,那么它应该被加载。
2) 你在“FROM”中给出的参数很重要,就好像你给 repo_name 或 tag 错误一样,它会给出错误消息。因此,为此运行“docker images”命令以查看您的图像正确的 repo_name 和标签。
3) 现在您可以像这样启动新的 docker 文件了
FROM REPOSITORY:TAG
它会起作用的
【讨论】:
Docker commit:根据容器的更改创建新图像。
将容器的文件更改或设置提交到新映像中会很有用。这允许您通过运行交互式 shell 来调试容器,或者将工作数据集导出到另一台服务器。通常,最好使用 Dockerfiles 以记录和可维护的方式管理您的图像。
【讨论】:
您可以按照以下命令为现有图像创建图像:
docker tag jboss/wildfly myimage:v1
为图片jboss/wildfly:latest创建一个名为myimage的图片,标签为v1
【讨论】: