像卷一样将绑定挂载添加到 Dockerfile
Add bind mount to Dockerfile just like volume
我想将绑定挂载添加到 docker 文件,就像我在 Dockefile 中初始化一个卷一样。
有什么办法吗?
简单的回答是否定的。
docker 图像的基本设计原则是可移植性。绑定安装是特定于主机的,因为安装的文件夹是在主机上定义的。因此,这与 Docker 图片的便携性要求相矛盾。
Dockerfile 定义映像的构建方式,而不是映像的使用方式 - 因此您无法在 Dockerfile 中指定绑定挂载。尝试使用 docker-compose 代替。为您安装目录的简单 docker-compose.yml
如下所示:
version: '3.1'
services:
mycontainer:
image: myimage
build: .
volumes:
- './path/on/docker/host:/path/inside/container'
如果您通过其他方式构建图像,则 build: .
是可选的,但有时一次完成所有操作会很方便。
运行 这与 docker-compose up -d
除了其他答案所说的:
因为绑定挂载提供对主机文件系统的访问,允许它们嵌入到图像中将存在巨大的安全风险。考虑一个声称是网络服务器的图像,但实际上绑定安装了您的 /etc/passwd
和 /etc/shadow
,然后将它们发送到远程服务器。
或者绑定挂载 /lib/ld-linux.so
然后覆盖它,从而破坏你的整个系统。
由于这些原因,您不能在 Dockerfile 中嵌入绑定挂载。同样,您不能在 Dockerfile 中指定主机端口映射、主机设备访问或任何其他类似属性。
我想将绑定挂载添加到 docker 文件,就像我在 Dockefile 中初始化一个卷一样。 有什么办法吗?
简单的回答是否定的。
docker 图像的基本设计原则是可移植性。绑定安装是特定于主机的,因为安装的文件夹是在主机上定义的。因此,这与 Docker 图片的便携性要求相矛盾。
Dockerfile 定义映像的构建方式,而不是映像的使用方式 - 因此您无法在 Dockerfile 中指定绑定挂载。尝试使用 docker-compose 代替。为您安装目录的简单 docker-compose.yml
如下所示:
version: '3.1'
services:
mycontainer:
image: myimage
build: .
volumes:
- './path/on/docker/host:/path/inside/container'
如果您通过其他方式构建图像,则 build: .
是可选的,但有时一次完成所有操作会很方便。
运行 这与 docker-compose up -d
除了其他答案所说的:
因为绑定挂载提供对主机文件系统的访问,允许它们嵌入到图像中将存在巨大的安全风险。考虑一个声称是网络服务器的图像,但实际上绑定安装了您的 /etc/passwd
和 /etc/shadow
,然后将它们发送到远程服务器。
或者绑定挂载 /lib/ld-linux.so
然后覆盖它,从而破坏你的整个系统。
由于这些原因,您不能在 Dockerfile 中嵌入绑定挂载。同样,您不能在 Dockerfile 中指定主机端口映射、主机设备访问或任何其他类似属性。