gpt4 book ai didi

docker - 为什么在使用 fig 时我的卷有时不会安装在我的 Docker 容器中?

转载 作者:IT老高 更新时间:2023-10-28 21:40:24 24 4
gpt4 key购买 nike

我在 Docker/Fig 环境中看到了一个奇怪的问题。我的假设是,这是由于延迟将卷装入容器,但我不确定如何确认。

我有一个包含以下内容的容器:

Dockerfile

FROM busybox
MAINTAINER Dan Rumney <email>

ADD loadsnapshot.sh /loadsnapshot.sh
RUN ["chmod", "u+x", "/loadsnapshot.sh"]

VOLUME ["/snapshot"]

ENTRYPOINT ["/loadsnapshot.sh"]

loadsnapshot.sh

#!/bin/sh

if [ "$( ls -A /snapshot)" ]; then
echo "Loading snapshot..."
# Do stuff
else
echo "No snapshot to load"
fi

在我的 fig.yml 文件中:

pdsvol:
image: busybox
volumes:
- "/opt/alfresco/alf_data"
- "/data"
- "/mysqlbackup"
- "/ldapbackup"
loader:
image: "docker.myregistry.com/snapshot.loader:3.5.0"
volumes_from:
- pdsvol
volumes:
- "/opt/snapshots/my-data/:/snapshot/"

这里的目标(可能很明显)是启动一个数据容器 (pdsvol),然后用我的机器上运行的一些数据填充它。 pdsvol 然后被一堆其他容器共享。

我的运行方式是调用

fig up pdsvol

然后

fig run --rm loader

我希望看到的是

builder@beast:/opt/docker-vm$ fig run --rm loader
Loading snapshot...
... stuff ...
Removing dockervm_loader_run_1...

而且,有时我会这样做。但是,有时我会看到:

builder@beast:/opt/docker-vm$ fig run --rm loader
No snapshot to load
Removing dockervm_loader_run_1...

我可以一遍又一遍地运行 fig run --rm loader,我会得到两个结果之一。

我的工作理论是安装卷有一些延迟,有时会发生在 ENTRYPOINT 脚本运行之前,有时会在运行之后发生。但是,如果我运行:

 docker run --rm -v /opt/snapshots/my-data/:/snapshot/ busybox ls -A /snapshot

我总是看到我期待的文件......所以这与那个理论背道而驰。

我知道我可以破解 loadsnapshot.sh 并进行延迟,看看是否有帮助,但我宁愿了解发生了什么,也不愿拼凑修复。

有人知道这里发生了什么吗?

顺便说一句:主机系统是 Linux,所以我们在这里使用原生容器。

更新

我尝试在 loadsnapshot.sh 的顶部放置 2 秒的延迟,但没有帮助。

更新 2

我在 fig 中添加了一些日志记录来转储用于创建容器的配置,并且在每个实例中(失败或否)都是相同的:

{
'Env': None,
'Hostname': None,
'Entrypoint': None,
'Dns': None,
'Memory': 0,
'OpenStdin': True,
'User': None,
'CpuShares': None,
'AttachStdout': True,
'NetworkDisabled': False,
'WorkingDir': None,
'Cmd': None,
'StdinOnce': True,
'AttachStdin': True,
'Volumes': {u'/snapshot/': {}},
'MemorySwap': 0,
'VolumesFrom': None,
'Tty': True,
'AttachStderr': True,
'Domainname': None,
'Image': 'docker.myregistry.com/snapshot.loader:3.5.0',
'ExposedPorts': None
}

最佳答案

我可以使用 Docker 1.4.0/图 1.0.1 重现该问题。

回滚到 Docker 1.3.1 为我解决了这个问题。

这似乎仍然是一个影响许多人的悬而未决的问题。

虽然#443已关闭,还有相关的未解决问题:

关于docker - 为什么在使用 fig 时我的卷有时不会安装在我的 Docker 容器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25464827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com