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 引擎,您可以使用带有 --engine-opt option 的 docker 机器:
docker-machine create --engine-opt host=tcp://0.0.0.0:443 ...
然后当您使用docker-machine env ... 时,您会注意到DOCKER_HOST 环境变量仍将设置为默认端口2376,但现在您可以使用443 覆盖它,它会起作用。
不幸的是,这将不允许 docker-machine ls 工作,因为 docker 引擎端口的 2376 值在 docker-machine 驱动程序中是硬编码的。如果您真的想让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