5、Docker 容器連線
阿新 • • 發佈:2018-12-02
Docker 容器連線
前面我們實現了通過網路埠來訪問執行在docker容器內的服務。下面我們來實現通過埠連線到一個docker容器
網路埠對映
我們建立了一個 python 應用的容器。
[[email protected] ~]# docker run -d -P training/webapp python app.py
f9a0558823043e2a188b94265dcc245e1a256c26cc20d8cb5f2ee4817e006e92
[[email protected] ~]#
另外,我們可以指定容器繫結的網路地址,比如繫結 127.0.0.1
我們使用 -P
引數建立一個容器,使用 docker ps
來看到埠 5000 繫結主機埠 32771 。
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f9a055882304 training/webapp "python app.py" 44 seconds ago Up 43 seconds 0.0.0.0:32771->5000/tcp confident_banach
74c14274a8f0 training/webapp "python app.py" About an hour ago Up About an hour 0.0.0.0:5000->5000/tcp nostalgic_jones
[ [email protected] ~]#
我們也可以使用 -p
標識來指定容器埠繫結到主機埠。
兩種方式的區別是:
-
-P :是容器內部埠隨機對映到主機的高階口。
-
-p : 是容器內部埠繫結到指定的主機埠。
[[email protected] ~]# docker run -d -p 5001:5000 training/webapp python app.py f80f4f4490beda799c71068a2d7fc196c85e054a588f15428fc35bb805bea725 [[email protected] ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f80f4f4490be training/webapp "python app.py" 14 seconds ago Up 14 seconds 0.0.0.0:5001->5000/tcp cocky_cocks f9a055882304 training/webapp "python app.py" 2 minutes ago Up 2 minutes 0.0.0.0:32771->5000/tcp confident_banach 74c14274a8f0 training/webapp "python app.py" About an hour ago Up About an hour 0.0.0.0:5000->5000/tcp nostalgic_jones [
另外,我們可以指定容器繫結的網路地址,比如繫結 127.0.0.1
。
[[email protected] ~]# docker run -d -p 127.0.0.1:5002:5000 training/webapp python app.py
53808c9cb8668c382bbc74eb2924a5838616f82595ae6bd6d1c41a70b52860e5
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
53808c9cb866 training/webapp "python app.py" 4 seconds ago Up 2 seconds 127.0.0.1:5002->5000/tcp distracted_shirley
f80f4f4490be training/webapp "python app.py" 2 minutes ago Up 2 minutes 0.0.0.0:5001->5000/tcp cocky_cocks
f9a055882304 training/webapp "python app.py" 5 minutes ago Up 5 minutes 0.0.0.0:32771->5000/tcp confident_banach
74c14274a8f0 training/webapp "python app.py" About an hour ago Up About an hour 0.0.0.0:5000->5000/tcp nostalgic_jones
[[email protected] ~]#
這樣我們就可以通過訪問 127.0.0.1:5002
來訪問容器的 5000
埠。
上面的例子中,預設都是繫結 tcp 埠,如果要繫結 UDP 埠,可以在埠後面加上 /udp
。
[[email protected] ~]# docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
df5a6eb999d9509c3874f59846e056513bafed3ad3a0eee4895b837ff2b56f5e
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
df5a6eb999d9 training/webapp "python app.py" 2 seconds ago Up 1 second 5000/tcp, 127.0.0.1:5000->5000/udp amazing_wright
53808c9cb866 training/webapp "python app.py" About a minute ago Up About a minute 127.0.0.1:5002->5000/tcp distracted_shirley
f80f4f4490be training/webapp "python app.py" 4 minutes ago Up 4 minutes 0.0.0.0:5001->5000/tcp cocky_cocks
f9a055882304 training/webapp "python app.py" 6 minutes ago Up 6 minutes 0.0.0.0:32771->5000/tcp confident_banach
74c14274a8f0 training/webapp "python app.py" About an hour ago Up About an hour 0.0.0.0:5000->5000/tcp nostalgic_jones
[[email protected] ~]#
docker port
命令可以讓我們快捷地檢視埠的繫結情況。
[[email protected] ~]# docker port cocky_cocks 5000
0.0.0.0:5001
[[email protected] ~]#
Docker容器連線
埠對映並不是唯一把 docker 連線到另一個容器的方法。
docker有一個連線系統允許將多個容器連線在一起,共享連線資訊。
docker連線會建立一個父子關係,其中父容器可以看到子容器的資訊。
容器命名
當我們建立一個容器的時候,docker會自動對它進行命名。另外,我們也可以使用–name標識來命名容器,例如:
我們可以使用 docker ps -l
命令來檢視容器名稱。
[[email protected] ~]# docker run -d -P --name runoob training/webapp python app.py
fdf22bdbe0892d91b92edc0018aad18dc95a5cfd9bbebc2e983f7774a04a3e7c
[[email protected] ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fdf22bdbe089 training/webapp "python app.py" 10 seconds ago Up 8 seconds 0.0.0.0:32772->5000/tcp runoob
[[email protected] ~]#