• Mac使用Docker-machine訪问docker publish port


    Step 1、Export the port in your container(docker-machine or boot2docker)

    首先,要保证你公布port的image已经run起来了。假设你是通过Dockerfile build起来的image。注意在image里面加上以下的一段话:

    Expose 80

    假设你须要公布其它port,仅仅需把80改变就可以。

    Expose这个命令的意思是docker image公布一个port。

    然后你须要将基于这个容器的image指定一个port去绑定:

    docker rum -p 80:80 -d YOUR_IMAGE

    -p选项的含义是把80port绑定在主机的80port(这里的“主机”指docker-machine或者boot2docker容器)

    假设你不想在你的mac或者windows上通过http://localhost:80的方式去訪问,到这就能够结束了。

    你能够通过你docker-machine或者boot2docker的ip去訪问。

    $docker-machine ip MACHINE_NAME
    192.168.99.100

    这里我就能够通过http://192.168.99.100:80去訪问我公布的image


    Step 2、Configure VirtualBox

    大家都知道docker-machine和boot2docker本身是不能直接在mac或windows下执行的,它必须依附一个VM,这里的VM就是VirtualBox。怎样让我们在本机訪问docker里公布的应用,这里就须要打开VirtualBox的port forwarding。

    执行下面命令通过ssh去转发OSX/Windows的80port到boot2docker/docker-machine VM的80port:

    $ boot2docker ssh -vnNTL *:80:localhost:80

    或者你能够设置VirtualBox的參数来进行port转发:

    $ VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port8000,tcp,,80,,80";

    假设你的VM还在running,你须要执行下面命令:

    $ VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port8000,tcp,,80,,80";

    如今你能够通过localhost:80去訪问了。


    假设你有非常多容器公布同一个port,你有必要使用docker的动态转发

    For example, running 3 nginx containers:

    container-1 : 80 -> 49153 (i.e. docker run -p 49153:80 ...)
    container-2 : 80 -> 49154 (i.e. docker run -p 49154:80 ...)
    container-3 : 80 -> 49155 (i.e. docker run -p 49155:80 ...)

    使用VBoxManage modifyvm命令转发49XXXport。

    这样的方法能够非常easy做到同一时候转发。


    # vm must be powered off
    for i in {49000..49900}; do
     VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port$i,tcp,,$i,,$i";
     VBoxManage modifyvm "boot2docker-vm" --natpf1 "udp-port$i,udp,,$i,,$i";
    done

    假设须要删除公布的port,能够这么做:

    # vm must be powered off
    for i in {49000..49900}; do
     VBoxManage modifyvm "boot2docker-vm" --natpf1 delete "tcp-port$i";
     VBoxManage modifyvm "boot2docker-vm" --natpf1 delete "udp-port$i";
    done


    另公布jboss会发现外部无法訪问,这是由于jboss应用仅仅对localhost有效,假设想让外部訪问。必须在启动命令后面加上
    <strong><span style="font-size:24px;">-b 0.0.0.0</span></strong>

    这样就绑定了全部ip,不然仅仅有本机可以进行訪问。



    本文參考:


  • 相关阅读:
    第一章 工欲善其事 必先利其器—Android SDK工具(3)
    UVa 11063
    Remember the Word,LA3942(Trie树+DP)
    Atitit.Gui控件and面板----数据库区-mssql 2008 权限 配置 报表查看成员
    Android手机令牌教程
    cocos2d-x 在mac下执行 demo
    Install Oracle 10g on Red Hat Linux 5.3 Step by Step
    Python根据内嵌的数字将字符串排序(sort by numbers embedded in strings)
    mysql一次运行多个SQL文件
    CentOS/Linux 卸载MATLAB
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7082698.html
Copyright © 2020-2023  润新知