docker - 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 正在使用的文件,但它们没有镜像到主机。
解决方案
我在 Ubuntu 系统上对此进行了测试,但我无法复制您所遇到的情况。我的想法是,这与 sudo 由于env_reset
in没有将环境从本地使用传递给 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
,看看它是否按预期工作。
推荐阅读
- python - 熊猫连续时间戳中的值计数
- html - 如何修复 iOS Safari 显示的“a”标签样式与浏览器不同?
- c++ - 如何使用 cuda 纹理<> 声明函数(方法)?
- wordpress - 仅在首次访问 WordPress 5.3.2 时出现错误 500
- reactjs - React Ant:如何创建左右布局
- authentication - 使用Tomcat进行身份验证| NGINX 错误 301 已移动
- haskell - Haskell Text.Regex.Posix 和 Text.Regex.TDFA 在 ghci 中不起作用
- javascript - 如何迭代 JSON 对象并在 Javascript 中使用其层次结构级别动态添加键值对对象?
- apache-kafka - 使用示例设置 kafka flink 连接器项目
- node.js - 如何从这个 Promise.all() 中提取数据?获取 TypeError:将循环结构转换为 JSON