Docker 网络互相访问

对于docker容器,我们知道它是沙箱隔离的,每一个docker容器都是独立运行的,相当于一个独立的虚拟机,所以他们只能进行网路访问,如果我们使用docker run时启动容器,没有指定网路(--net参数),默认使用的bridge的网络类型。

#查看全部网路类型
docker network ls
#创建一个新的网路
docker network create mynetwork

Docker 网络互相访问_第1张图片

创建三个容器,docker_redis,docker-nacos,docker-nacos


#创建redis使用默认网络
docker run --name=docker_redis  -d docker_redis

#创建nacos-docker使用默认网络
docker run --name=nacos-docker  -d docker-nacos

#创建docker-nacos使用mynetwork网络
docker run --name=docker-nacos --net=mynetwork --network-alias=nacosdockerservice -d docker-nacos

 查看docker_redis网路类型

Docker 网络互相访问_第2张图片

 查nacos_docker网路类型

Docker 网络互相访问_第3张图片

查看docker-nacos网路

Docker 网络互相访问_第4张图片  

 创建容器时使用同一个网路,创建出来的容器时属于同一个网段,如果使用不同网段创建处理的容器不属于同一个网段所以也就不能直接访问。

1.ip访问

 如果它们属于同一个网络设备,可以直接访问。这种方式必须知道每个容器的ip,在实际使用中并不实用。

Docker 网络互相访问_第5张图片

 2.link方式

运行容器的时候加上参数link

--link:参数中第一个centos-1是容器名,第二个centos-1是定义的容器别名(使用别名访问容器),为了方便使用,一般别名默认容器名。

#第一容器
docker run --name=docker-nacos -d docker-nacos

#第二个容器
 docker run --name=docker-redis --link docker-nacos:docker-nacos docker-redis

 此方法对容器创建的顺序有要求,如果集群内部多个容器要互访,使用就不太方便。 

3.创建bridge网络

 3.1创建一个新的网路

docker network create mynetwork

3.2创建容器并使用,并且增加网络别名

#第一个容器
docker run --name=docker-nacos --net=mynetwork --network-alias=nacosdockerservice -d docker-nacos

#第二个容器
docker run --name=producter-one --net=mynetwork --network-alias=producter-one -d producter-one 

3.3使用容器别名访问

在 docker-nacos容器中可以直接ping producter-one

在producter-one容器中可以直接ping nacosdockerservice

Docker 网络互相访问_第6张图片

 这三种方式,最推荐使用第三种

你可能感兴趣的:(docker,docker,容器,运维)