端口映射

docker run-P or -p来映射端口

  • -P: Docker随机映射宿主机49000~49900的一个端口到容器内部开放的网络端口

    1
    2
    3
    
    $ docker run --name test -d -P ubuntu:14.04 /bin/bash
    # 查看容器信息
    $ docker ps -l 
  • -p: 指定端口映射(一个端口只能对应一个容器)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
    # -p hostPort:containerPort
    # 不绑定ip,默认映射所有网络接口(localhost|ip|domain...)
    # -p 多次使用则指定多个端口
    # 本地 8080, 9090 分别映射到容器 8080,9090
    $ docker run --name test -d -p 8080:8080 -p 9090:9090 ubuntu:14.04 /bin/bash
    
    # -p ip:hostPort:containerPort
    # 映射主机的特定地址到容器的8080端口
    $ docker run --name test -d -p 127.0.0.1:8080:8080 ubuntu:14.04 /bin/bash
    
    # -p ip::containerPort
    # 映射 localhost 的任意端口(本地主机自动分配)到容器 8080
    $ docker run --name test -d -p ip::8080 ubuntu:14.04 /bin/bash
  • 查看端口映射配置

    1
    2
    3
    4
    5
    
    # 端口映射配置
    $ docker port container(id|name|digist)
    
    # 容器所有配置
    $ docker inspect container(id|name|digist)

注意

  • 容器有自己的内部网络和ip,Docker还可以有一个可变的网络配置

容器互联系统

容器互联系统:在源容器和接收容器之间建立隧道,供容器应用交互
容器互联系统依据容器名称执行,因此容器名称要保持唯一

  • 容器命名
    docker run--name来指定

    1
    2
    
    # 容器起名:test
    $ docker run --name test -d -p 8080:8080 ubuntu:14.04 /bin/bash
  • 容器互联

docker run--link来指定

1
2
3
4
5
6
7
8
9
    # Usage: `--link name:alias`
    # name:  要连接容器的名称
    # alias: 此连接的别名

    # 创建容器test作为源容器
    $ docker run --name test -d -it ubuntu:14.04 /bin/bash

    # 创建容器test1链接到容器test
    $ docker run --name test1 -d -it --link test:link_test ubuntu:14.04 /bin/bash

See Also

Thanks to the authors 🙂