1. 程式人生 > >docker-5.網絡

docker-5.網絡

rep running 開頭 -name 隨機 con 容器互聯 oca http

端口映射

docker run -d -P training/webapp python app.py

-P 映射隨機端口,隨機端口範圍由/proc/sys/net/ipv4/ip_local_port_range定義

通過docker port查看映射的端口

docker port backstabbing_hodgkin

5000/tcp -> 0.0.0.0:32775

docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

b3bab6730061 training/webapp "python app.py" 4 seconds ago Up 4 seconds 0.0.0.0:32775->5000/tcp backstabbing_hodgkin

curl 127.0.0.1:32773

Hello world!

通過docker logs可以查看容器內消息

docker logs determined_carson

* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

172.18.0.1 - - [24/Oct/2017 08:42:12] "GET / HTTP/1.1" 200 -

映射所有接口地址的端口

docker run -d -p 5000:5000 training/webapp python app.py

#-p參數可多次使用

映射指定地址指定端口

docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py

映射UDP端口

docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

ss -ntlu | grep "5000"

udp UNCONN 0 0 127.0.0.1:5000 *:*

容器互聯

容器的連接(linking) 系統是除了端口映射外,另一種跟容器中應用交互的方式。

該系統會在源和接收容器之間創建一個隧道,接收容器可以看到源容器指定的信

息。

容器連接根據容器的名稱來執行

創建db容器

docker run -d --name db training/postgres

創建web容器並連接db容器

docker run -d -P --name web --link db:db training/webapp python app.py

通過查看環境變量來查看容器公開連接信息

docker run --rm --name web2 --link db:db training/webapp env

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

HOSTNAME=d6fc554fd0d4

DB_PORT=tcp://172.18.0.2:5432

DB_PORT_5432_TCP=tcp://172.18.0.2:5432

DB_PORT_5432_TCP_ADDR=172.18.0.2

DB_PORT_5432_TCP_PORT=5432

DB_PORT_5432_TCP_PROTO=tcp

DB_NAME=/web2/db

DB_ENV_PG_VERSION=9.3

HOME=/root

DB_ 開頭的環境變量是供 web 容器連接 db 容器使用,前綴采用大寫的連接
別名。

通過查看hosts文件查看容器公開連接信息

docker run -it --rm --link db:db training/webapp /bin/bash

root@7c6c61eaa74b:/opt/webapp# cat /etc/hosts

127.0.0.1 localhost

172.18.0.2 db 5ca8502421a5

172.18.0.4 7c6c61eaa74b

root@7c6c61eaa74b:/opt/webapp# ping db

PING db (172.18.0.2) 56(84) bytes of data.

64 bytes from db (172.18.0.2): icmp_seq=1 ttl=64 time=0.083 ms

docker-5.網絡