一、端口映射实现访问容器
使用-P标记,docker会随机映射一个端口至容器内部开放的网络端口。
然后在本地主机上通过32773端口就可访问容器内的服务
如果出现如下问题:
WARNING: IPv4 forwarding is disabled. Networking will not work.
> 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容器
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到底被解析到了哪里。