我有一个通过 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 export <CONTAINER ID> > /some_file.tar
理想情况下,您应该使用卷,以便所有数据都存储在容器外部。然后您就可以像访问任何其他文件一样访问这些文件。
Docker 有 cp 命令用于在容器和主机之间复制文件:
docker cp <id>:/container/source /host/destination
您在源中指定容器 ID 或名称,然后可以翻转命令以从主机复制到容器中:
docker cp /host/source <id>:/container/destination
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