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

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

创建三个容器,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网路类型

 查nacos_docker网路类型

查看docker-nacos网路

  

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

1.ip访问

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

 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

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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐