docker-ce-17.09 網絡基礎配置
阿新 • • 發佈:2017-10-25
start 信息 sts star 進程 docker-ce /etc/ lin 互聯
一、端口映射實現訪問容器
1、我們先從pull一個nginx鏡像,然後後臺運行該鏡像
> docker pull nginx > docker run -d -P nginx:latest
使用-P標記,docker會隨機映射一個端口至容器內部開放的網絡端口。
然後在本地主機上通過32773端口就可訪問容器內的服務
如果出現如下問題:
WARNING: IPv4 forwarding is disabled. Networking will not work.
修改/etc/sysctl.conf,添加如下代碼:
> vi /etc/sysctl.conf
net.ipv4.ip_forward=1
然後重啟network服務
> systemctl restart network
當然我們也可以自已定義映射的端口
> docker run -d -p 8881:80 nginx:latest
把主機的8881端口映射到容器80端口
我們也可以指定地址來映射端口
> docker run -d -p 192.168.137.222:8882:80 nginx:latest
查看映射端口配置(676b282131f3是容器ID):
> docker port 676b282131f3
二、容器互聯實現容器間通信
容器間的連接,會在源和接收容器之間創建一個隧道,接收容器可以看到源容器指定的信息。
1、我們先創建一個mysql容器
> docker pull mysql > docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
--name可以自定義容器名稱
2、再創建一個nginx容器,並連接到mysql容器
> docker run -d -P --name nginx --link mysql:mysql nginx:latest
3、我們進入nginx容器,這時我們就可以訪問mysql容器
> docker inspect --format "{{.State.Pid}}" c6b1b49cabf4 > nsenter --target 3756 --mount --uts --ipc --net --pid > ping mysql
3756表示通過第一條語句查詢出的容器進程PID。
官方默認nginx容器沒有安裝ping,需自行安裝。
我們也可以看看/etc/hosts下mysql到底被解析到了哪裏。
docker-ce-17.09 網絡基礎配置