我在CentOS 7的VPS上用Docker运行Rancher 1.6。我想与主机共享配置数据(如果docker容器失败,不要丢失数据)。
在启动Rancher容器之前,我在主机上创建了一个文件夹。
HOST_VOLUME=$HOME/rancher-data/mysql
mkdir -p $HOST_VOLUME
然后启动rancher服务器。
sudo docker run -d \
-v $HOST_VOLUME:/var/lib/mysql \
--restart=unless-stopped \
-p 8080:8080 \
rancher/server
我设置了Rancher认证,添加了几个主机和容器,现在正在运行。但是主机上的文件夹($HOMErancher-datamysql)是空的。如果我在容器内用cmd切换,我可以在varlibmysql中看到很多Rancher正在使用的文件,但它们没有镜像到主机上。
我在Ubuntu系统上测试了一下,我无法重复你所遇到的情况。我的想法是,这与sudo没有将环境从你的本地使用传递给root有关,原因是 env_reset
在 /etc/sudoers
但我把它从我的 sudoers
文件,它仍然可以正常工作。
为了在你的系统上进一步测试,我会做以下工作。
busybox
而非 rancher/rancher
容器。像这样运行同样的命令。sudo docker run -it --rm -v $HOST_VOLUME:/var/lib/mysql busybox ash
. 这将使你进入容器中的一个shell--使用 df -h
查看您的主机上的卷是否挂载到了 /var/lib/mysql
的容器中。如果是这样,那么命令本身是有效的,我们只需要找出 哪儿 该挂载是。docker inspect <container_id>
并查找 HostConfig 部分。你应该可以看到你的卷轴挂载在 Binds
. "HostConfig": {
"Binds": [
"/home/ubuntu/test:/test"
],
docker
组。退出并重新登录。重新运行您的 docker run
命令而不 sudo
看看是否能达到预期的效果。