Docker windows 上的工具箱卷不会刷新容器上的更改
Docker toolbox volumes on windows doesn't refresh changes on container
我在 windows 上从 docker 开始,我正在尝试使用卷来管理容器中的数据。
我的宿主环境是:
- Windows 8.1
- Docker 工具箱 1.8.
- 虚拟盒子 5.0.6
我使用以下 Docker 文件创建了一个 ngnix 图像。
Docker文件
FROM centos:6.6
MAINTAINER afym
ENV WEBPORT 80
RUN yum -y update; yum clean all
RUN yum -y install epel-release; yum clean all
RUN yum -y install nginx; yum clean all
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
VOLUME /usr/share/nginx/html
EXPOSE $WEBPORT
CMD [ "/usr/sbin/nginx" ]
我使用以下命令创建了一个 ngnix 容器。
docker run -d --name nge -v //c/Users/src:/usr/share/nginx/html -p 8082:80 ng1
b738fef9cc4d135416a8cca4caf869acf944319b7c3c61129b11f37f9d891598
然后我打开浏览器,我可以看到网页:
然而,当我对 index.html 文件进行更改时,它不会在浏览器上刷新
正在编辑我的文件
在我的浏览器上 (ctrl + f5)
我去 VirtualBox 机器上检查我的共享目录选项是否正常。
然后我使用以下命令检查我的 nge 容器。
docker inspect ng1
Docker 检查
卷发生了什么?为什么我看不到我的更改?
几天后我找到了解决方案。
Firstable docker on windows even on MAC 在 VirtualBox 上使用 boot2docker 实例。
图表
上MAC
上Windows
接下来,官方docker的文档说:
Docker Machine tries to auto-share your /Users (OS X) or C:\Users (Windows) directory
然而,在找到解决方案后,我决定将默认 c/Users 更改为另一条路径,以保持秩序。考虑到这一点,我执行了以下步骤:
- 定义您自己的工作区目录。在我的例子中是/e/arquitectura(可选。如果你愿意,你可以使用默认路径/c/Users)
- 验证虚拟机上的配置(在默认机器中转至 > 配置 > 共享目录)
- 加入默认机器并使用别名挂载目录
sudo mount -t vboxsf alias-name-virtualbox some-path-in-boot2docker
# In my case (boot2docker instance)
$ cd
$ mkdir arquitectura
$ sudo mount -t vboxsf arquitectura /arquitectura
- 最后创建一个新容器或重新启动现有容器(如果您尚未更改 c/user/ 路径
# In my case (docker client)
$ docker run -d --name nge -v //arquitectura/src:/usr/share/nginx/html -p 8081:80 ng1
现在可以了。
我在 windows 上从 docker 开始,我正在尝试使用卷来管理容器中的数据。
我的宿主环境是:
- Windows 8.1
- Docker 工具箱 1.8.
- 虚拟盒子 5.0.6
我使用以下 Docker 文件创建了一个 ngnix 图像。
Docker文件
FROM centos:6.6 MAINTAINER afym ENV WEBPORT 80 RUN yum -y update; yum clean all RUN yum -y install epel-release; yum clean all RUN yum -y install nginx; yum clean all RUN echo "daemon off;" >> /etc/nginx/nginx.conf VOLUME /usr/share/nginx/html EXPOSE $WEBPORT CMD [ "/usr/sbin/nginx" ]
我使用以下命令创建了一个 ngnix 容器。
docker run -d --name nge -v //c/Users/src:/usr/share/nginx/html -p 8082:80 ng1 b738fef9cc4d135416a8cca4caf869acf944319b7c3c61129b11f37f9d891598
然后我打开浏览器,我可以看到网页:
然而,当我对 index.html 文件进行更改时,它不会在浏览器上刷新
正在编辑我的文件
在我的浏览器上 (ctrl + f5)
我去 VirtualBox 机器上检查我的共享目录选项是否正常。
然后我使用以下命令检查我的 nge 容器。
docker inspect ng1
Docker 检查
卷发生了什么?为什么我看不到我的更改?
几天后我找到了解决方案。
Firstable docker on windows even on MAC 在 VirtualBox 上使用 boot2docker 实例。
图表
上MAC
上Windows
接下来,官方docker的文档说:
Docker Machine tries to auto-share your /Users (OS X) or C:\Users (Windows) directory
然而,在找到解决方案后,我决定将默认 c/Users 更改为另一条路径,以保持秩序。考虑到这一点,我执行了以下步骤:
- 定义您自己的工作区目录。在我的例子中是/e/arquitectura(可选。如果你愿意,你可以使用默认路径/c/Users)
- 验证虚拟机上的配置(在默认机器中转至 > 配置 > 共享目录)
- 加入默认机器并使用别名挂载目录
sudo mount -t vboxsf alias-name-virtualbox some-path-in-boot2docker # In my case (boot2docker instance) $ cd $ mkdir arquitectura $ sudo mount -t vboxsf arquitectura /arquitectura
- 最后创建一个新容器或重新启动现有容器(如果您尚未更改 c/user/ 路径
# In my case (docker client) $ docker run -d --name nge -v //arquitectura/src:/usr/share/nginx/html -p 8081:80 ng1
现在可以了。