Docker - 訪問容器

容器具備本身的內部網絡和ip地址,具體信息能夠查看docker inspect命令結果的"NetworkSettings"部分。
若是想要從外部訪問容器中的應用,能夠經過docker run命令的-P-p參數來指定端口映射。
能夠經過docker port命令或者docker ps命令結果的PORTS部分,能夠查看端口映射關係。html

-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文件。nginx

[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(小寫)參數, 能夠在一個指定映射端口上綁定一個容器。能夠屢次使用此參數來綁定多個端口。docker

  • 全部接口地址
    使用hostPort:containerPort格式,默認會將全部接口全部地址的指定端口綁定到容器指定端口。
    如無必要,不建議使用此種方式。瀏覽器

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

  • 指定地址的隨機端口
    使用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 ~]#
相關文章
相關標籤/搜索