一、网络端口映射

容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P-p 参数来指定端口映射。
下面我们来实现通过端口连接到一个 docker 容器。

  1. docker run -d -p 5000:5000 training/webapp python app.py

参数说明:
-p : 是容器内部端口绑定到指定的主机端口
image.png
通过访问5000端口即可
image.png
默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp

  1. docker run -d -p 5000:5000/udp training/webapp python app.py

image.png

二、Docker容器互联

docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。
docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息。

1、容器命名

当我们创建一个容器的时候,docker 会自动对它进行命名。另外,我们也可以使用 —name 标识来命名容器

  1. docker run -d -p 5000:5000 --name wyf_web training/webapp python app.py

image.png

2、新建网络

创建一个新的Docker网络

  1. docker network create -d bridge test-net

image.png
参数说明:
-d:参数指定 Docker 网络类型,有 bridge、overlay。
其中 overlay 网络类型用于 Swarm mode,在此可以忽略它。

3、连接容器

先运行两个容器并连接到test-net网络

  1. docker run -itd --name test1 --network test-net debian /bin/bash
  2. docker run -itd --name test2 --network test-net debian /bin/bash

image.png
下面通过 ping 来证明 test1 容器和 test2 容器建立了互联关系。
如果 test1、test2 容器内中无 ping 命令,则在容器内执行以下命令安装 ping
进入test1容器 ping test2容器
image.png
进入test2容器 ping test1容器
image.png
这样发现,test1和test2容器建立了互联关系

4、配置DNS

默认创建容器后其DNS是这个样子:
image.png
可以在宿主机的 /etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS

  1. "dns" : [
  2. "114.114.114.114",
  3. "8.8.8.8"
  4. ]

image.png
设置后,启动容器的 DNS 会自动配置为 114.114.114.114 和 8.8.8.8。
配置完,需要重启 docker 才能生效。

启动一个新容器查看其DNS信息
image.png