docker - Docker 中的 Rancher 不会创建快照数据来托管

标签 docker centos vps docker-volume rancher

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

最佳答案

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

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

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

    相关文章:

    docker - rabbitmqctl在docker上返回错误

    java - 测试容器在等待容器端口打开时超时,使用 Elasticsearch docker 镜像

    node.js - 如何设置服务器运行 Node.js?

    ubuntu - 自指向名称服务器?

    ruby-on-rails - 环境变量在 Rails 控制台中可用但在应用程序中不可用

    docker - docker compose 会自动创建端口映射吗?

    mysql - 在 Dockerfile 中创建动态用户 - MySQL

    sql-server - 更改 Linux 上的默认 SQL Server 时区?

    apache - 如何让Apache Server显示测试页面

    centos - 如何清除 OpenVZ 中的缓存?