1. 程式人生 > >docker-ce-17.09 網絡基礎配置

docker-ce-17.09 網絡基礎配置

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 網絡基礎配置