如果没有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不能在$PATH
variables。 我怎样才能进入图像或获取本地复制的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