【问题标题】:How to use `docker-machine create` so that the docker engine listens on a custom port?如何使用 `docker-machine create` 让 docker 引擎监听自定义端口?
【发布时间】:2016-01-11 19:04:39
【问题描述】:

我的服务提供商不允许我连接到端口 2376 上的 docker。是否有一个标志让 docker-machine 设置 docker 在主机上侦听另一个端口但 2376 以便类似命令

码头机器 ls 或者 码头机器环境

工作?现在它们失败了,因为在主机上创建 docker 后,守护程序在无法访问的端口 2376 上启动。当然,我可以在创建后手动更改该端口,但是提到的命令不知道要连接到该主机上的另一个端口上的 docker 守护程序,但 2376。

【问题讨论】:

    标签: docker port docker-machine


    【解决方案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 引擎,您可以使用带有 --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
    

    【讨论】:

    • 这并不能回答我的问题,因为我正在寻找一种通过 docker-machine 配置 docker 创建的方法,以便我能够运行 docker-machine ls 或 docker-machine env 等命令Docker 守护程序未在标准端口上运行的主机。
    • 对不起,我误会了。 如何使用docker-machine create 以便 docker 引擎在自定义端口上侦听? 你在追求什么?
    • 是的,这就是我要找的东西,这需要一个 switxh 等。使用 docker-machine 创建主机时,随后发出的命令 locolly 知道连接到侦听另一个端口的 docker 守护进程,但是默认的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多