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