zoukankan      html  css  js  c++  java
  • Docker

    容器具有自己的内部网络和ip地址,具体信息可以查看docker inspect命令结果的"NetworkSettings"部分。
    如果想要从外部访问容器中的应用,可以通过docker run命令的-P-p参数来指定端口映射。
    可以通过docker port命令或者docker ps命令结果的PORTS部分,可以查看端口映射关系。

      -p, --publish value               Publish a container's port(s) to the host (default [])
      -P, --publish-all                 Publish all exposed ports to random ports
    

    随机端口映射

    使用-P(大写)参数,Docker会随机映射一个端口到内部容器开放的网络端口.
    在不同系统类型和配置下,随机端口的范围也不同,例如:CentOS7系统下临时端口范围可查看/proc/sys/net/ipv4/ip_local_port_range文件。

    [root@CentOS-7 ~]# docker run -d --name test-access -P docker.io/nginx
    e3b9622095d0ea3e02a480178f199e4e2eff9a1b81175f6f88a77533d55ea82c
    [root@CentOS-7 ~]# 
    [root@CentOS-7 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                           NAMES
    e3b9622095d0        docker.io/nginx     "nginx -g 'daemon off"   5 seconds ago       Up 3 seconds        0.0.0.0:32771->80/tcp, 0.0.0.0:32770->443/tcp   test-access
    [root@CentOS-7 ~]#
    [root@CentOS-7 ~]# cat /proc/sys/net/ipv4/ip_local_port_range 
    32768	61000
    [root@CentOS-7 ~]#
    
    # 此时,使用浏览器打开`<local host>:32771`页面,然后就可以通过`docker logs`命令来查看容器中的应用信息。
    
    [root@CentOS-7 ~]# docker logs -f test-access
    10.141.46.100 - - [02/May/2017:08:12:40 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0" "-"
    10.141.46.100 - - [02/May/2017:08:12:40 +0000] "GET /favicon.ico HTTP/1.1" 404 170 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0" "-"
    2017/05/02 08:12:40 [error] 5#5: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 10.141.46.100, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "10.140.3.116:32771"
    2017/05/02 08:12:40 [error] 5#5: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 10.141.46.100, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "10.140.3.116:32771"
    10.141.46.100 - - [02/May/2017:08:12:40 +0000] "GET /favicon.ico HTTP/1.1" 404 170 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0" "-"
    ^C
    [root@CentOS-7 ~]#  
    

    指定端口映射

    使用-p(小写)参数, 可以在一个指定映射端口上绑定一个容器。可以多次使用此参数来绑定多个端口。

    • 所有接口地址
      使用hostPort:containerPort格式,默认会将所有接口所有地址的指定端口绑定到容器指定端口。
      如无必要,不建议使用此种方式。

    • 指定地址的指定端口
      使用ip:hostPort:containerPort格式,映射指定地址的指定端口到容器指定端口。

    • 指定地址的随机端口
      使用ip::containerPort格式,映射指定地址的随机端口到容器指定端口

    [root@CentOS-7 ~]# docker run -d --name test-access-port-1 -p 55555:80 docker.io/nginx
    df6efc01a023ad71986723465fa67970d317f983190ef56233ebe6ba08f69f30
    [root@CentOS-7 ~]# docker port test-access-port-1
    80/tcp -> 0.0.0.0:55555
    [root@CentOS-7 ~]# 
    [root@CentOS-7 ~]# docker run -d --name test-access-port-2 -p 10.140.3.116:54321:80 docker.io/nginx
    c8afcc740e062f1bae2cc98bb7e5df47bceadfc184f69868cf71ed3c24c6d90f
    [root@CentOS-7 ~]# docker port test-access-port-2
    80/tcp -> 10.140.3.116:54321
    [root@CentOS-7 ~]# 
    [root@CentOS-7 ~]# docker run -d --name test-access-port-3 -p 10.140.3.116::80 docker.io/nginx
    4bc063f2385cc96155054f23fc3dbf5d49f7e5572d713f539578fe01a4942c73
    [root@CentOS-7 ~]# docker port test-access-port-3
    80/tcp -> 10.140.3.116:32769
    [root@CentOS-7 ~]# 
    [root@CentOS-7 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                                 NAMES
    4bc063f2385c        docker.io/nginx     "nginx -g 'daemon off"   15 seconds ago       Up 14 seconds       443/tcp, 10.140.3.116:32769->80/tcp   test-access-port-3
    c8afcc740e06        docker.io/nginx     "nginx -g 'daemon off"   40 seconds ago       Up 39 seconds       443/tcp, 10.140.3.116:54321->80/tcp   test-access-port-2
    df6efc01a023        docker.io/nginx     "nginx -g 'daemon off"   About a minute ago   Up About a minute   443/tcp, 0.0.0.0:55555->80/tcp        test-access-port-1
    [root@CentOS-7 ~]# 
    

    使用udp标记来指定udp端口

    [root@CentOS-7 ~]# docker run -d --name test-access-port-4 -p 127.0.0.1:50000:80/udp docker.io/nginx
    cade927e2a9b934d650e0f359233ae1e19a890b6bd4ffd08fb3732968b91c554
    [root@CentOS-7 ~]# 
    [root@CentOS-7 ~]# docker port test-access-port-4
    80/udp -> 127.0.0.1:50000
    [root@CentOS-7 ~]# 
    
  • 相关阅读:
    ASP.NET刷新页面的六种方法(转)
    为什么用共有属性来封装私有变量
    ASP.NET伪静态及静态
    c#操作xml练习.
    .NET+FCKEditor使用配置_带例子下载(图)
    人生三大陷阱
    ComponentOne FlexGrid for WinForms 中文版快速入门(5)设置单元格类型(下)
    ComponentOne FlexGrid for WinForms 中文版快速入门(2)设计时支持
    ComponentOne FlexGrid for WinForms 中文版快速入门(3)单元格、行列交互
    ComponentOne FlexGrid for WinForms 中文版快速入门(6)—合并单元格
  • 原文地址:https://www.cnblogs.com/anliven/p/6799429.html
Copyright © 2011-2022 走看看