如何在 Guest OS 和 Docker 容器之间绑定目录?
How to bind a directory between Guest OS and Docker container?
环境是 Ubuntu 18.04.5 LTS 虚拟机 运行 在我的 Windows 10 PC 上的 VirtualBox 中。
我遇到的问题是当我 运行 docker 图像并使用“-v”标志将 Ubuntu 中的目录绑定到 docker 容器,我没有收到任何错误,但目录中的任何更改都不会反映在容器中。
关于如何解决这个问题有什么建议吗?
供参考,在项目目录中,这是我尝试执行的命令 运行
sudo docker run -v $PWD/src:/src -p 80:80 getting-started
其中 src 包含以下 php 文件,我尝试修改该文件以查看更改:
<?php
echo "Hello, World!";
用于创建图像的 docker 文件包含以下内容:
FROM php:apache
COPY src/ /var/www/html/
EXPOSE 80
同样导航到 docker 集装箱码头后,我看不到我挂载的文件夹。
Docker 将 /src:/src
解释为将主机文件系统根目录 /src
挂载到容器的 /src
目录。
根据您的 Docker 文件,您似乎想将 src
挂载到本地目录。
编辑: 从下面的评论中,我最初的 -v
语法错误。相反,您需要使用绝对路径。您可以使用以下命令完成此操作
sudo docker run -v $PWD/src:/src -p 80:80 getting-started
请参阅 docs 关于绑定安装。
问题是我以 sudo 身份执行 docker 运行 命令,这意味着作为普通用户我无法编辑该文件夹,因此没有传播任何更改。
为了解决我只是将我的普通非 root 用户添加到 docker 组重新启动 VM 并再次尝试使用目录绑定的 运行 命令并且它运行完美!
以下命令将用户添加到 docker 组:
sudo usermod -aG docker $USER
用您的用户名替换 $USER
有关详细信息,请参阅:Add non root user to docker group
环境是 Ubuntu 18.04.5 LTS 虚拟机 运行 在我的 Windows 10 PC 上的 VirtualBox 中。
我遇到的问题是当我 运行 docker 图像并使用“-v”标志将 Ubuntu 中的目录绑定到 docker 容器,我没有收到任何错误,但目录中的任何更改都不会反映在容器中。
关于如何解决这个问题有什么建议吗?
供参考,在项目目录中,这是我尝试执行的命令 运行
sudo docker run -v $PWD/src:/src -p 80:80 getting-started
其中 src 包含以下 php 文件,我尝试修改该文件以查看更改:
<?php
echo "Hello, World!";
用于创建图像的 docker 文件包含以下内容:
FROM php:apache
COPY src/ /var/www/html/
EXPOSE 80
同样导航到 docker 集装箱码头后,我看不到我挂载的文件夹。
Docker 将 /src:/src
解释为将主机文件系统根目录 /src
挂载到容器的 /src
目录。
根据您的 Docker 文件,您似乎想将 src
挂载到本地目录。
编辑: 从下面的评论中,我最初的 -v
语法错误。相反,您需要使用绝对路径。您可以使用以下命令完成此操作
sudo docker run -v $PWD/src:/src -p 80:80 getting-started
请参阅 docs 关于绑定安装。
问题是我以 sudo 身份执行 docker 运行 命令,这意味着作为普通用户我无法编辑该文件夹,因此没有传播任何更改。
为了解决我只是将我的普通非 root 用户添加到 docker 组重新启动 VM 并再次尝试使用目录绑定的 运行 命令并且它运行完美!
以下命令将用户添加到 docker 组:
sudo usermod -aG docker $USER
用您的用户名替换 $USER
有关详细信息,请参阅:Add non root user to docker group