我在mac os上安装docker。我知道在我的mac os和docker镜像之间安装并运行了一个docker-machine。当我启动一个docker镜像时,我无法从我的mac os中ping图像,而是必须从docker-machine连接到这些图像。我想知道是否有办法允许我从mac os连接到docker镜像。
答案 0 :(得分:1)
这通常通过将端口暴露给docker-machine来完成。例如,您可以映射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
配置对服务的访问,而不是使用docker-machine IP。这样做需要在docker-machine驱动程序中进行一些网络配置。假设您使用的是VirtualBox(Mac OS X安装的默认驱动程序),您可以在VirtualBox UI中或通过VBoxManage
(下面的文档链接)配置端口转发。
用于公开端口的Docker文档:https://docs.docker.com/engine/reference/run/#expose-incoming-ports
端口转发的VirtualBox文档: https://www.virtualbox.org/manual/ch06.html#natforward
答案 1 :(得分:0)
这是我理解的方式:
docker-machine就像一台虚拟机。容器基于虚拟机(docker-machine),但与其他容器(它拥有自己的文件系统,进程树等)完全隔离。图像只是一组已保存在一起的容器层。所以"图像"和#34;容器"在一些情况下可能会混杂在一起。容器通常指的是图像的最顶层(并且是"写"层)。
我解决这个问题的原因是因为从您的问题来看,我并不完全确定您尝试使用的术语。
您可以SSH到docker-machine图像以及容器。
要SSH到正在运行的容器,您可以使用
docker exec -it CONTAINER_NAME bash
要SSH到正在运行的docker-machine映像,您可以使用
docker-machine ssh DOCKER_IMAGE_NAME
我只能想到你想要SSH到docker-machine的几个原因,但是可以使用上面的命令。几乎总是,您将使用docker容器。这就是Docker的首要原因 - 集装箱管理系统。