Docker基本镜像状态复制
我有一个DockerFile从Ubuntu的基础形象构build。 我也有以下命令,指示我的容器进行更新:
RUN apt-get update
如果我在不同的时间点运行我的容器,我不能保证每次使用apt-get update命令更新我的Ubuntu基本映像和相应的包都是相同的。 我怎样才能保证它始终保持不变?
您应该在您自己的基本映像中运行apt apt-get update,然后使用已知标记(例如构builddate)将其发布/部署到dockerhub。 然后在你的后续图像中,你可以像下面这行一样说。 这样,即使您对Dockerfile进行了大量更改,也不会有依赖关系从您下面更新。
FROM me/ubuntu:18_11_2014
首先,重要的是要注意,只有在运行docker build
,而不是docker run
,才会更新图像。 即使这样,默认情况下,Docker会caching图层, apt-get update
行将只在其上方发生更改或者明确closurescaching时重新运行。
几乎不可能确保你的版本始终产生完全相同的图像,这是一个已知的问题。 你最好的select是把一个版本号传给apt-get,例如apt-get install -y nautilus=2.2.4-1
,这对你来说应该是足够好的了。 但是,请记住,安装的软件引入的任何依赖关系可能已经改变(依赖关系通常被指定为> =特定版本),这意味着图像仍然可能改变。 另外,请记住,在某些时候,旧的软件包将被简单地从Debian软件仓库中删除。
该命令仅在构build图像时执行。 如果要在每次启动容器时运行命令,则应考虑使用CMD
语句,而不要使用RUN
。
- Docker:如何在Windows 10中安装当前目录
- 将主机目录从yaml / compose文件挂载到docker容器
- 我如何在我的Docker容器和主机系统之间共享资源(图片,文本文档等)?
- XRAY不扫描“Artifactory block un-scanning image”
- Docker – 从一个链接容器发出命令到另一个
- X11从Windows进入Docker
- Docker:错误,容器命令“docker-entrypoint.sh”未find或不存在
- VPS + Docker + Traefik +多个WordPress或docker4wordpress – 如何正确设置
- 在项目文件夹里的“docker-compose up”返回“no such file or directory”