zoukankan      html  css  js  c++  java
  • 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,不然仅仅有本机可以进行訪问。



    本文參考:


  • 相关阅读:
    头插法建立单链表
    顺序表
    栈的顺序存储实现
    折半查找
    myeclipe 快捷键盘
    ztree redio单选按钮
    webuploader上传进度条 上传删除
    svn乱码解决办法
    异构SOA系统架构之Asp.net实现(兼容dubbo)
    RPC框架
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7082698.html
Copyright © 2011-2022 走看看