如果没有shell,我怎么能从运行官方etcd映像的docker容器中获取文件?

我有一个docker容器,它运行的是CoreOS的etcd docker镜像,可以在这里find: https ://quay.io/repository/coreos/etcd。 我想要做的就是复制保存在etcd数据目录中的所有文件。 我尝试使用docker exec -it etcd /bin/sh连接到容器,但似乎没有shell( /bin/bash/bin/sh ),或者至less不能在$PATHvariables。 我怎样才能进入图像或获取本地复制的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