乐趣区

关于后端:Docker入门与实践Docker中的网络功能简介

Docker 入门与实际:Docker 中的网络性能简介

Docker 提供网络服务的办法包含两种:

  • 通过内部拜访 docker 容器的形式;
  • 通过 Docker 容器间互联的形式。

一、内部拜访 docker 容器

在 docker 容器中能够运行一些网络应用,内部想要拜访 docker 容器内的利用,能够通过 -p-P选项来指定端口映射,两个选项的区别如下所示:

  • (1)-p:指定要映射的端口,通过该端口绑定一个 docker 容器;
  • (2)-P:docker 会随机映射一个范畴的端口到外部容器凋谢的网络端口。其中这个随机的端口范畴能够在 /proc/sys/net/ipv4/ip_local_port_range 文件中查看,如下图所示,我的电脑中的端口范畴为32768-60999

1.1 应用 -P 选项内部拜访 docker 容器

如下图所示,应用 docker run -d -P training/webapp python app.py 命令创立一个能够通过内部网络拜访的 docker 容器;而后应用 docker container ls -l 查看容器的端口信息。这样就创立了一个本地主机 49159 端口映射到容器 5000 端口的容器。

1.2 应用 -p 选项内部拜访 docker 容器

如上所述,-p指定特定的端口绑定到一个容器上,其反对的格局有:

  • hostPort:containerPort:映射本地特定端口所有 ip 地址到容器的特定端口;
  • ip:hostPort:containerPort:映射本地特定端口的特定 ip 地址到容器的特定端口;
  • ip::containerPort:映射本地主机特定 ip 地址的随机端口到容器特定的端口;

其中,下面的 hostPort 示意主机端口或本地端口;containerPort示意容器端口;ip示意网址,上面别离列举这三种格局的应用办法:

1、映射本地特定端口所有 ip 地址到容器的特定端口

应用 hostPort:containerPort 格局能够将本地主机特定端口映射到容器的特定端口,以实现内部拜访容器的目标,指令如下所示:

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

如下图所示,默认会绑定本地接口 5000 上所有 ip 地址到容器的 5000 端口上。

上图中的 0.0.0.0:5000 示意本地主机 5000 端口上的所有 ip 地址。

2、映射本地特定端口的特定 ip 地址到容器的特定端口

应用 ip:hostPort:containerPort 格局能够将本地主机的特定端口的特定 ip 地址映射到容器的特定端口,以实现内部拜访容器的目标,比方这里的 ip127.0.0.1,指令如下所示:

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

如下图所示,默认会绑定本地端口 5000127.0.0.1的 ip 地址到容器的 5000 端口上。

3、映射本地主机特定 ip 地址的随机端口到容器特定的端口

应用 ip::containerPort 格局能够将本地主机特定的 ip 地址的随机端口到容器的特定端口,以实现内部拜访容器的目标,比方这里的 ip127.0.0.1,指令如下所示:

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

如下图所示,绑定本地主机随机端口上的 127.0.0.1ip 地址到容器的5000 端口上,这里的随机调配的主机端口为49154

留神:-p能够屡次应用来绑定多个端口,指令如下所示:

docker run -d \
    -p 5000:5000 \
    -p 3000:80 \
    training/webapp \
    python app.py

执行完下面指令,应用 docker container ls 命令就能够看出绑定了两组端口:

二、Docker 容器的互联

Docker 容器不仅能够通过网络与本地主机互联,容器还能够通过 docker 自定义的网络来实现容器间互联。

2.1 自定义 docker 网络的构建

构建自定义 docker 网络的指令如下所示:

docker network create -d bridge My_Net

其中,-d指定了 docker 的网络类型为 bridge 类型,并自定义 docker 网络的名称为 My_Net。如下图所示,能够应用docker network ls 查看零碎的 docker 网络:

2.2 Docker 容器的网络连接

这里演示两个容器通过下面创立的 docker 网络My_Net,进行互联的过程:

1、创立连贯 docker 网络的容器

首先 ,启动或创立一个busybox_1 容器并连贯到下面创立的My_Netdocker 网络,指令如下所示:

docker run -it --rm \
    --name busybox_1 \
    --network My_Net busybox sh

如下如所示,因为本地没有 busybox:latest 镜像,所以首先从近程镜像仓库拉取镜像,再创立连贯的 docker 网络 My_Net 的容器busybox_2

而后 ,再关上一个终端,应用同样的办法创立一个busybox_2 容器并连贯到My_Netdocker 网络:

docker run -it --rm \
    --name busybox_2 \
    --network My_Net busybox sh

再关上一个终端,如下图所示,应用 docker container ls 查看容器信息:

2、测试通过 docker 网络互联的容器

通过 ping 来测试 busybox_1 容器和 busybox_2 容器的互联:

如下图所示,在 busybox_2 容器内输出 ping busybox_1,即用ping 指令来测试 busybox_2 容器连贯 busybox_1 的状况,到如下图的后果则示意两个容器互联胜利:

本文由 mdnice 多平台公布

退出移动版