我仍然是码头工人和所有容器中的新人。 我有完全访问权限的服务器 1.1.1.1我在那里安装了docker。 (没有码头组成) 在另一个地方,我的朋友有服务器2.2.2.2,他安装了docker和docker在那里组成。
在2.2.2.2服务器上,我的朋友构建了3个容器:容器A(Git),容器B(未知),容器C(未知)。 我可以使用浏览器访问容器A(Git)的内容。
我的问题是:我可以在1.1.1.1中将容器A导入我的服务器吗?我有用户访问下载Git,但我想要的是导入容器,而不是Git(容器内的内容)。 任何提示?我该怎么办?或者,如果我无法访问命令控制台,则无法执行此操作?
答案 0 :(得分:2)
如果要移动正在运行的容器实例,我建议您运行以下命令
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES
c3f279d17e0a ubuntu:12.04 /bin/bash 7 days ago Up 25 hours desperate_dubinsky
197387f1b436 ubuntu:12.04 /bin/bash 7 days ago Up 25 hours focused_hamilton
$ docker commit c3f279d17e0a svendowideit/testimage:version3
这将在主机上创建映像,然后运行以下命令将映像保存为tar文件,以将其上载到另一台主机。
$ docker save -o testimage.tar svendowideit/testimage:version3
在scp上,tar映像到另一个主机运行以下命令来提取tar并将其保存为docker镜像。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
$ docker load --input testimage.tar
Loaded image: svendowideit/testimage:version3
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
svendowideit/testimage version3 769b9341d937 7 weeks ago 2.489 MB
现在,您可以使用docker run命令调出已保存图像的docker实例。
答案 1 :(得分:1)
可以将正在运行的容器导出到tar存档中,该存档可以复制到其他计算机上并将其导回。
在运行容器的计算机上,执行以下操作:
docker export --output "A.tar" <container-A>
接下来将生成的存档A.tar复制到您的计算机上,然后导入它:
docker import A.tar <container-A-image>
这将在您的计算机上创建一个图像,然后可以使用docker run ...
答案 2 :(得分:-1)
没有。如果你想拥有用于运行容器A(Git)的图像,那么你的朋友必须将Docker镜像推送到Docker注册表。这将使您可以在服务器上运行与Docker容器相同的Docker镜像。但不是数据。
Docker镜像是设计不可变的。已启动的Docker镜像称为Docker容器。基本上,如果停止并删除它们,则会完全删除此Docker容器。如果您有想要保留的数据,那么您可以使用所谓的bind volumes
。
你知道,你的问题很广泛。并且有一些方法可以实现您想要的功能,但我只能指出一些文档以便更进一步。或者你可以加入当地的聚会,这将成为登船的最佳方式。
https://www.slideshare.net/Docker/introduction-to-docker-2017