[英]Docker Run Volume : Can't Find Directory
我确定我会听起来像个大白痴,但我很难理解 Docker 卷是如何工作的。
我有以下 Dockerfile
FROM centos:7
MAINTAINER Giant Idiot
RUN yum -y update && \
yum -y install epel-release vim && \
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
VOLUME /opt/my_vol
RUN echo "root:root" | chpasswd && \
yum -y install openssh-server && \
mkdir -p /var/run/sshd && \
sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
RUN yum clean all
EXPOSE 22
COPY supervisord.conf /tmp/
RUN yum -y install supervisor && \
mkdir -p /etc/supervisor/conf.d && \
mv /tmp/supervisord.conf /etc/supervisor/conf.d
CMD /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
其中包括创建 /opt/my_vol 的 VOLUME 命令,当我运行它时,我 map 卷如下所示(至少我认为这就是我正在做的)
docker run -d -p 221:22 -v my_vol:/opt/my_vol --name my_dock_r1 my_dock
当我登录到图像时,我可以看到 /opt/my_vol 目录很好,当我执行以下命令时,一切看起来都很好
docker volume ls
DRIVER VOLUME NAME
local my_vol
docker volume inspect my_vol
[
{
"Driver": "local",
"Labels": null,
"Mountpoint": "/mnt/sda1/var/lib/docker/volumes/my_vol/_data",
"Name": "my_vol",
"Options": null,
"Scope": "local"
}
]
我对此感到满意(或不满意,因为它可能是错误的),但 Mountpoint 对我来说没有意义。
我认为它将它安装到我的文件系统(Windows 10)并且没有这样的目录。 在那种情况下,它是否将它安装在我可以在文件系统上找到它的地方,或者我对此的理解是错误的?
我正在使用 Docker 的 VirtualBox 版本,我不确定这是否有什么不同
如果需要直接从主机访问卷的内容,则必须使用绑定挂载语法
docker run ... -v $PWD/my_vol:/opt/my_vol ...
您在MountPoint
docker volume inspect
命令中显示的 MountPoint 是内部实现细节。 在非 Linux 主机(使用 Linux 容器)上,它隐藏在虚拟机中; 即使在本机 Linux 主机上直接访问/var/lib/docker
中的任何文件系统内容也不是最佳实践。
将VOLUME
放在 Dockerfile 中最明显的影响是它将阻止任何后续RUN
命令修改该目录树。 您不需要将内容安装到容器中,我强烈建议您删除它(除非您 100% 清楚它的作用以及您想要它的原因)。
(Remember that anyone who has your image can trivially extract the ssh host keys and start their own ssh daemon impersonating your server. There are several significant security issues trying to run an sshd in Docker, including this, and I'd suggest avoiding it if完全有可能。)
似乎错误是由于它是 VirtualBox Docker (它被称为 Docker Container)。
为了挂载卷,必须将它们添加到 VirtualBox 设置中。 从 VirtualBox GUI
设置
共享文件夹
添加文件夹(最右侧带有加号的小文件夹)
在提示中添加文件夹
文件夹路径:C:/Some/Directory
文件夹名称:c/Some/Directory
自动安装:选中
永久化:选中
然后重新启动VirtualBox,然后以下命令有效
docker run -d -p 221:22 -v //c/VMDocker/Vol:/opt/my_vol --name my_dock_r1 my_dock
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.