1. 程式人生 > 其它 >Docker埠對映與容器互聯

Docker埠對映與容器互聯

技術標籤:dockerlinux

在實踐中經常需要多個服務元件容器共同協作的情況,這往往需要多個容器之間能夠互相訪問到對方的服務,Docker除了通過網路訪問外還提供了兩個很方便的功能來滿足服務訪問的基本需求:
Ⅰ、允許對映容器內應用的服務埠到本地宿主機上
Ⅱ、互聯機制實現多個容器間通過容器名進行快速訪問

這裡寫目錄標題

1、埠對映實現容器訪問

① 從外部訪問容器應用

在容器啟動時如果不指定對應引數,在容器外部是無法通過網路訪問容器內的網路應用和服務的
當容器中執行一些網路應用,要讓外部訪問這些應用時,可以通過-P或-p來指定埠對映

引數對映範圍
-P隨機對映49000-49900埠
-p指定要對映的埠,一個指定埠只能繫結一個容器
格式 IP:HostPort:ContainerPort

在這裡插入圖片描述
本地主機的49153埠被對映到容器的5000埠
-p

# 本地5000埠對映到容器5000埠
docker container run --name webapp -d -p 5000:5000 training/webapp python app.py
# 可以通過多個-p繫結多個埠
docker container run --name webapp -d -p 5000:5000 -p 5001:5001 training/webapp python app.py

# 對映指定地址的指定埠
docker container run --name webapp -d -p 127.0.0.1:5000:5000 training/webapp python app.py
# 對映指定地址的任意埠
docker container run --name webapp -d -p 127.0.0.1::5000 training/webapp python app.py # 還可以使用udp來標記指定udp埠 docker container run --name webapp -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

2、互聯機制實現便捷互訪

在源和接收容器上建立連線關係,接收容器可通過容器名訪問源容器,而不需要指定具體的ip地址

① 建立容器名

通過 --name 引數指定容器名,且此容器名稱是唯一

② 容器互聯

通過 --link 引數使容器之間安全的互動

# --link name:alias 【name為要連線容器的名稱 alias為別名】
# 先建立一個數據庫容器
docker container run --name db -d training/postgres
# 建立一個web1容器並連線到db容器
docker container run --name web1 -d -P --link db:db training/webapp python app.py
# 此時web1容器將可以訪問db容器的資訊