Docker -- 在 docker 提交时仅修改 FROM 值
Docker -- modify only FROM value while docker commit
是否可以在执行docker提交时只修改FROM值?
说我的活动容器是 Ubuntu 16.04,我想用它创建一个图像,但是 Ubuntu 版本应该是 18.04,其余保持不变。
Docker是否支持这种情况?
期待喜欢:docker commit —change=FROM ubuntu:18.04
答案是否定的。您不能使用 docker commit --change=FROM
命令修改基础映像。
--change
选项不支持 FROM
指令。
以下是 docs 的摘录:
The --change option will apply Dockerfile instructions to the image
that is created. Supported Dockerfile instructions:
CMD|ENTRYPOINT|ENV|EXPOSE|LABEL|ONBUILD|USER|VOLUME|WORKDIR
如果您的容器没有 dockerfile,我建议您使用:
docker history
命令生成Dockerfile。如前所述 here.
或
- 如前所述使用
dfimage
utiliyy here。
然后更改新生成的 dockerfile 中的 FROM
指令。
这是永远不要使用 docker commit
的有力理由。
如果您有一个基于 commit
的工作流程,您需要 docker run
来自某个基础映像的容器,执行一些步骤,然后提交结果。不过,一旦你完成了这一步,Docker 就不知道中间发生了什么;它只知道有一个图像,一些不透明的文件系统发生了变化,它被要求从中创建一个图像。
假设您使用的是 Ubuntu 的旧版本,并且您想要升级到更新的版本。在基于 commit
的工作流程中,您需要手动完成所有步骤。为了跟踪这一点,您可以写下您要执行的步骤的文本文件:
# `docker run` a container using this base image
FROM ubuntu:18.04
# `docker cp` this file into the image
COPY package.deb /
# Run this command in the container shell
RUN dpkg -i /package.deb
# After committing the image, `docker run` the new image with this command
CMD some_command
不过,该特定格式正是 Docker 文件格式:您可以将其签入源代码管理 运行 docker build
,然后取回图像。您的同事也可以这样做,即使他们没有您所做的确切设置,即使他们没有以完全相同的方式键入命令。当您确实需要升级基础映像时,只需将第一行更改为 FROM ubuntu:20.04
和 docker build
即可。
是否可以在执行docker提交时只修改FROM值?
说我的活动容器是 Ubuntu 16.04,我想用它创建一个图像,但是 Ubuntu 版本应该是 18.04,其余保持不变。
Docker是否支持这种情况?
期待喜欢:docker commit —change=FROM ubuntu:18.04
答案是否定的。您不能使用 docker commit --change=FROM
命令修改基础映像。
--change
选项不支持 FROM
指令。
以下是 docs 的摘录:
The --change option will apply Dockerfile instructions to the image that is created. Supported Dockerfile instructions: CMD|ENTRYPOINT|ENV|EXPOSE|LABEL|ONBUILD|USER|VOLUME|WORKDIR
如果您的容器没有 dockerfile,我建议您使用:
docker history
命令生成Dockerfile。如前所述 here.
或
- 如前所述使用
dfimage
utiliyy here。
然后更改新生成的 dockerfile 中的 FROM
指令。
这是永远不要使用 docker commit
的有力理由。
如果您有一个基于 commit
的工作流程,您需要 docker run
来自某个基础映像的容器,执行一些步骤,然后提交结果。不过,一旦你完成了这一步,Docker 就不知道中间发生了什么;它只知道有一个图像,一些不透明的文件系统发生了变化,它被要求从中创建一个图像。
假设您使用的是 Ubuntu 的旧版本,并且您想要升级到更新的版本。在基于 commit
的工作流程中,您需要手动完成所有步骤。为了跟踪这一点,您可以写下您要执行的步骤的文本文件:
# `docker run` a container using this base image
FROM ubuntu:18.04
# `docker cp` this file into the image
COPY package.deb /
# Run this command in the container shell
RUN dpkg -i /package.deb
# After committing the image, `docker run` the new image with this command
CMD some_command
不过,该特定格式正是 Docker 文件格式:您可以将其签入源代码管理 运行 docker build
,然后取回图像。您的同事也可以这样做,即使他们没有您所做的确切设置,即使他们没有以完全相同的方式键入命令。当您确实需要升级基础映像时,只需将第一行更改为 FROM ubuntu:20.04
和 docker build
即可。