Docker端口映射與容器互聯

       Docker提供了兩個功能來知足訪問的基本需求:一是容許映射容器內應用的服務端口到本地宿主主機;另外一個是互聯機制實現多個容器間經過容器名來快速實現訪問。python

1、端口映射實現訪問容器

       當容器中運行一些網絡應用,要讓外部訪問這些應用時,能夠經過-P或-p參數來指定端口映射。當使用-P時,Docker會隨機映射一個49000~49900的端口到內部容器開放的網絡端口:docker run -d -P training/webapp python app.pyweb

       -p能夠指定要映射的端口,而且在一個指定端口上只能夠綁定一個容器。支持的格式有:docker

       ① 映射全部接口地址:HostPort:ContainerPort(屢次使用-p標記能夠綁定多個端口)數據庫

       ② 映射到指定地址的指定端口:IP:HostPort:ContainerPort安全

       ③ 映射到指定地址的任意端口:IP::ContainerPort網絡

       能夠使用docker port命令來查看當前映射的端口配置和綁定地址。app

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

       容器的互聯會在源和接受容器之間建立鏈接關係,接收容器能夠經過容器名快速訪問到源容器,而不用指定具體的IP地址。webapp

       使用--link參數能夠讓容器之間安全地進行交互,格式爲--link name:alias。先建立一個新的數據庫容器db:post

              docker run -d --name db training/postgres接口

       再建立一個web容器,並將它鏈接到db容器:

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

       使用docker ps查看容器鏈接,能夠看到db容器的names列表有db也有web/db。這表示web容器鏈接到db容器,容許web容器訪問db容器的信息。Docker至關於在兩個互聯的容器之間建立了一個虛擬通道,並且不用映射它們的端口到宿主主機上在啓動db容器時並無使用-P和-p標記,從而避免了暴露數據庫服務端口到外部網絡上。

       Docker經過兩種方式爲容器公開鏈接信息:更新環境變量,更新/etc/hosts文件。

相關文章
相關標籤/搜索