我正在mac os上安装docker。我知道在我的mac操作系统和docker镜像之间安装并运行了一台docker-machine。当我启动一个docker镜像时,我不能从我的mac操作系统ping该镜像,而是必须从docker机器连接到这些镜像。我想知道是否有一种方法可以让我从mac操作系统连接到docker镜像。
发布于 2016-02-24 12:28:52
这通常是通过将端口暴露给扩展坞机器来完成的。例如,您可以像这样映射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上公开服务。您必须参考容器的文档来查看公开了哪些服务。
如果需要,您还可以通过localhost
配置对服务的访问,而不是使用扩展底座IP。这样做需要在docker-machine驱动程序中进行一些网络配置。假设您使用的是VirtualBox ( Mac安装的默认驱动程序),您可以在VirtualBox UI中或通过VBoxManage
(下面的文档链接)配置端口转发。
用于暴露端口的Docker文档:https://docs.docker.com/engine/reference/run/#expose-incoming-ports
端口转发的VirtualBox文档:https://www.virtualbox.org/manual/ch06.html#natforward
发布于 2016-02-24 10:35:57
这是我理解它的方式:
docker-machine就像一台虚拟机。容器基于虚拟机(docker- machine ),但与其他容器完全隔离(它有自己的文件系统、进程树等)。图像只是一组保存在一起的容器层。因此,单词"image“和"container”可能会在一些上下文中混在一起。容器通常是指图像的最顶层(也就是“写”层)。
我解决这个问题的原因是,从您的问题中,我不完全确定您尝试使用的术语。
您可以通过SSH连接到docker-machine镜像和容器。
要通过SSH进入正在运行的容器,您可以使用
docker exec -it CONTAINER_NAME bash
要通过SSH进入正在运行的docker-machine映像,您可以使用
docker-machine ssh DOCKER_IMAGE_NAME
我能想到的只有几个原因,为什么你会想要SSH到一个docker-machine,但这是可能的,通过上面的命令。几乎所有的情况下,您都将使用码头容器。这就是Docker的全部原因--一个容器管理系统。
https://stackoverflow.com/questions/35592020
复制相似问题