首页 > 解决方案 > Docker 中的 Rancher 不会创建快照数据来托管

问题描述

我正在使用 CentOS 7 在 VPS 上的 Docker 中运行 Rancher 1.6。我想与主机共享配置数据(如果 docker 容器失败,请不要丢失数据)。

在启动 rancher 容器之前,我在主机上创建文件夹:

HOST_VOLUME=$HOME/rancher-data/mysql
mkdir -p $HOST_VOLUME

然后启动牧场主服务器:

sudo docker run -d \
-v $HOST_VOLUME:/var/lib/mysql \
--restart=unless-stopped \
-p 8080:8080 \
rancher/server

我设置了 Rancher - 身份验证,添加了几个正在运行的主机和容器。但是主机上的文件夹($HOME/rancher-data/mysql)是空的。如果我用 cmd 在容器内切换,我可以在 /var/lib/mysql 中看到很多 Rancher 正在使用的文件,但它们没有镜像到主机。

标签: dockercentosvpsdocker-volumerancher

解决方案


我在 Ubuntu 系统上对此进行了测试,但我无法复制您所遇到的情况。我的想法是,这与 sudo 由于env_resetin没有将环境从本地使用传递给 root 有关/etc/sudoers,但我从sudoers文件中删除了它,它仍然可以正常工作。

为了在您的系统上进一步测试,我将执行以下操作:

  1. 如果有问题,那是 Docker 的问题,而不是 Rancher 的问题,所以用busybox而不是rancher/rancher容器来测试它。像这样运行相同的命令:sudo docker run -it --rm -v $HOST_VOLUME:/var/lib/mysql busybox ash. 这会将您放入容器中的外壳 - 用于df -h查看主机中的卷是否已安装/var/lib/mysql在容器中。如果是这样,那么该命令本身正在工作,我们只需要找出挂载的位置。
  2. 从另一个登录到同一系统(当上述容器正在运行时),查看它docker inspect <container_id>并查找 HostConfig 部分。您应该会在Binds.
"HostConfig": {
    "Binds": [
        "/home/ubuntu/test:/test"
    ],
  1. 如果您在那里看不到它,那么 Docker 将忽略您安装它的请求。正如@nischay-goyal 建议的那样,使用绝对路径再次尝试。您还可以在系统日志中查看有关 Docker 为何不按请求安装卷的错误输出。我希望它会出错并失败,但也许还有其他东西充当noop并且它仍在继续。日志将为您提供更多信息。
  2. docker如果以上都不起作用,请通过将本地用户添加到组来排除 sudo 带来的“双用户环境”问题。注销并重新登录。重新运行您的docker run命令sudo,看看它是否按预期工作。

推荐阅读