我的服务提供商不允许我连接到端口2376上的docker。是否有一个标记为docker-machine在主机上设置docker以侦听另一个端口但是2376以便命令如
docker-machine ls 要么 docker-machine env
工作?现在它们失败了,因为在主机上创建了docker之后,守护进程在端口2376上启动,这是无法访问的。当然,我可以在创建后手动更改该端口,但后面提到的命令无法连接到另一个端口上的主机上的docker守护程序,但是2376。
答案 0 :(得分:1)
docker-machine是否有标志在主机上设置docker以侦听另一个端口但是2376
是的,使用docker daemon
命令的-H
或--host
选项。要使您的Docker守护程序侦听端口443(应该打开所有大多数防火墙),请启动您的docker守护程序:
docker daemon -H tcp://0.0.0.0:443
如果你的docker主机操作系统是Debian或Ubuntu,你可以在/etc/default/docker
文件中添加行DOCKER_OPTS="-H tcp://0.0.0.0:443"
来设置它。
如果您使用的是RedHat或CentOS,请将OPTIONS=-H tcp://0.0.0.0:443
添加到/etc/sysconfig/docker
文件中。
要使用自定义--host
选项安装Docker引擎,您可以将docker machine与--engine-opt
option一起使用:
docker-machine create --engine-opt host=tcp://0.0.0.0:443 ...
然后当您使用docker-machine env ...
时,您会注意到仍会使用默认端口DOCKER_HOST
设置2376
环境变量,但现在您可以使用443
覆盖它它会起作用。
不幸的是,这不允许docker-machine ls
工作,因为docker-engine驱动程序中的docker引擎端口的2376
值是硬编码的。如果您真的想让docker-machine ls
为不同的端口工作,最简单的方法是复制您使用的docker-machine driver source file之一并对其他端口进行硬编码;然后用你的新驱动程序编译一个新的docker-machine二进制文件。
假设远程服务器的IP地址是11.22.33.44。
# create the docker engine using the generic Machine driver
docker-machine create --engine-opt host=tcp://0.0.0.0:443 --driver=generic --generic-ip-address=11.22.33.44 mytestengine
# prepare the environments so that docker client can connect on port 443
docker-machine env mytestengine
export DOCKER_HOST=tcp://11.22.33.44:443
# use docker client as usual
docker version