如果没有 shell,我如何从运行官方 etcd 镜像的 docker 容器获取文件?

问题描述 投票:0回答:3

我有一个通过 CoreOS 运行 etcd docker 镜像的 docker 容器,可以在这里找到:https://quay.io/repository/coreos/etcd。我想要做的是将etcd数据目录中保存的所有文件复制到本地。我尝试使用

docker exec -it etcd /bin/sh
连接到容器,但似乎那里没有 shell(
/bin/bash
/bin/sh
),或者至少在
$PATH
变量上找不到它。我怎样才能获取图像或将 etcd 内的所有数据文件复制到本地?

docker etcd
3个回答
1
投票

您可以轻松导出图像内容:

docker export <CONTAINER ID> > /some_file.tar

理想情况下,您应该使用卷,以便所有数据都存储在容器外部。然后您就可以像访问任何其他文件一样访问这些文件。


0
投票

Docker 有 cp 命令用于在容器和主机之间复制文件:

docker cp <id>:/container/source /host/destination

您在源中指定容器 ID 或名称,然后可以翻转命令以从主机复制到容器中:

docker cp /host/source <id>:/container/destination

0
投票

bin文件夹是空的。但

etcdctl
位于
/usr/local/bin/
文件夹中。

所以你可以尝试:

docker exec -it <container_id> /usr/local/bin/etcdctl
docker exec -it <container_id> /usr/local/bin/etcdctl put foo "hello"
docker exec -it <container_id> /usr/local/bin/etcdctl get foo
© www.soinside.com 2019 - 2024. All rights reserved.