端口映射與容器互聯
Docker除了通過網絡訪問外,還提供了兩個很方便的功能來滿足服務訪問的基本需求:
- 允許映射容器內應用的服務端口到本地宿主主機;
- 互聯機制實現多個容器間通過容器名來快速訪問;
端口映射實現容器訪問
1、從外部訪問容器應用
當容器中運行一些網絡應用,要讓外部訪問這些應用時,可以用過-P或-p參數來指定端口映射。當使用-P標記時,Docker會隨機映射一個49000~49900的端口到內部容器開放的網絡端口:
此時可以看到,本地主機的5000被映射到了容器的5000端口。訪問宿主主機的5000端口即可訪問容器內應用提供的界面。
具體的應用實例可參考:
2、映射所有接口地址
3、映射到指定地址的指定端口
4、映射到指定地址的任意端口
5、查看映射端口配置
互聯機制實現便捷互訪
容器的互聯是一種讓多個容器中的應用進行快速交互的方式。它會在源和接收容器之間創建連接關係,接收容器可以通過容器名快速訪問到源容器,而不用指定具體的IP地址。
1、自定義容器命名
連接系統依據容器的名稱來執行。自定義命名容器有兩個好處:
- 自定義的命名,比較好記,比如一個Web應用容器我們可以給它起名web,一目瞭然;
- 當要連接其他容器時候(即便重啓),也可以使用容器名而不用改變,比如連接web容器到db容器;
例:使用--name標記可以爲容器自定義命名
【注】
- 在執行docker [container] run的時候如果添加--rm標誌,則容器在終止後會立刻刪除;
- 同時,--rm和-d參數不能同時使用;
2、容器互聯
使用--link參數可以讓容器之間安全地進行交互。
例:首先創建一個新的數據庫容器
刪除之前創建的web容器
然後創建一個新的web容器,並將它連接到db容器
【注】
--link參數的格式爲:
--link name:alias
name:鏈接的容器的名稱
alias:別名
Docker相當於在兩個互聯的容器之間創建了一個虛機通道,而且不用映射它們的端口到宿主主機上。在啓動db容器的時候並沒有使用-p和-P標記,從而避免了暴露數據庫服務端口到外部網絡上。
Docker通過兩種方式爲容器公開連接信息:
- 更新環境變量;
- 更新/etc/hosts文件;