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 地址映射到容器的特定端口,以实现内部拜访容器的目标,比方这里的 ip
为127.0.0.1
,指令如下所示:
docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
如下图所示,默认会绑定本地端口 5000
上127.0.0.1
的 ip 地址到容器的 5000
端口上。
3、映射本地主机特定 ip 地址的随机端口到容器特定的端口
应用 ip::containerPort
格局能够将本地主机特定的 ip 地址的随机端口到容器的特定端口,以实现内部拜访容器的目标,比方这里的 ip
为127.0.0.1
,指令如下所示:
docker run -d -p 127.0.0.1::5000 training/webapp python app.py
如下图所示,绑定本地主机随机端口上的 127.0.0.1
ip 地址到容器的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_Net
docker 网络,指令如下所示:
docker run -it --rm \
--name busybox_1 \
--network My_Net busybox sh
如下如所示,因为本地没有 busybox:latest
镜像,所以首先从近程镜像仓库拉取镜像,再创立连贯的 docker 网络 My_Net
的容器busybox_2
:
而后 ,再关上一个终端,应用同样的办法创立一个busybox_2
容器并连贯到My_Net
docker 网络:
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 多平台公布