如何连接到mac os上的docker镜像

我在mac os上安装docker。 我知道在我的mac os和docker镜像之间安装了docker-machine。 当我启动一个泊坞窗图像时,我无法从我的mac os中ping图像,而是必须从docker-machine连接到这些图像。 我不知道是否有办法让我连接到mac os的docker镜像。

这通常是通过将端口暴露给docker机来完成的。 例如,您可以像这样映射SSH端口:

docker run -d -p 2022:22 my-image 

这会将docker-machine上的端口2022绑定到容器内的端口22。 现在你可以通过使用docker-machine的IP来访问,就像这样(假设default docker-machine):

 ssh -p 2022 user@$(docker-machine ip default) 

当然,这需要您的容器在端口22上公开一个服务。您将不得不引用您的容器的文档,以查看哪些服务正在被暴露。

如果需要,也可以通过localhostconfiguration对服务的访问,而不是使用docker-machine IP。 这样做需要在您的docker-machine驱动程序中进行一些networkingconfiguration。 假设您正在使用VirtualBox(Mac OS X安装的默认驱动程序),则可以在VirtualBox UI中或通过VBoxManage (下面的文档链接)configuration端口转发。

用于公开端口的Docker文档: https : //docs.docker.com/engine/reference/run/#expose-incoming-ports

用于端口转发的VirtualBox文档: https : //www.virtualbox.org/manual/ch06.html#natforward

这是我理解的方式:

docker机就像一个虚拟机。 一个容器是基于虚拟机(docker-machine),但是与其他容器(它拥有自己的文件系统,进程树等)完全隔离。 图像只是一组已经保存在一起的容器。 所以“形象”这个词和“容器”这个词可以在一些情况下相互混合。 容器通常指的是图像的最顶层(和“写”层)。

我解决这个问题的原因是因为从你的问题,我不完全确定你正在尝试使用什么术语。

您可以同时连接到docker-machine镜像和容器。

要SSH进入正在运行的容器,可以使用

 docker exec -it CONTAINER_NAME bash 

要通过SSH连接到正在运行的docker-machine映像,可以使用

 docker-machine ssh DOCKER_IMAGE_NAME 

我只能想到为什么要SSH进入docker-machine的几个原因,但可以使用上面的命令。 几乎总是,你将与docker集装箱工作。 这就是Docker的首要原因 – 一个容器pipe理系统。