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多平台公布