Docker提供了兩個功能來知足訪問的基本需求:一是容許映射容器內應用的服務端口到本地宿主主機;另外一個是互聯機制實現多個容器間經過容器名來快速實現訪問。python
當容器中運行一些網絡應用,要讓外部訪問這些應用時,能夠經過-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
容器的互聯會在源和接受容器之間建立鏈接關係,接收容器能夠經過容器名快速訪問到源容器,而不用指定具體的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文件。