docker-ce-17.09 网络基础配置

一、端口映射实现访问容器

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 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Li...
1、什么是docker?答:docker是开源的应用容器引擎;开发人员把他们的应用及依赖包打包发布到容器当中。...
1、什么是namespace? 答:名称空间,作用隔离容器 2、namespace隔离有那些? 答:ipc:共享内存、消息队...
1、Docker能在非Linux平台(Windows+MacOS)上运行吗? 答:可以 2 、如何将一台宿主机的docker环境...
环境要求: IP hostname 192.168.1.1 node1 项目规划: 容器网段:172.16.10.0/24 NGINX:172.16.10.10...
文档上传地址:https://files.cnblogs.com/files/lin-strive/07-docker%E8%B7%A8%E4%B8%BB%E6%9C%BA%E7...