玖叶教程网

前端编程开发入门

Docker-composer之Network使用

一般对于集群服务,常常通过docker-compose.yml文档快速编排、部署应用服务。

官网中给出了如下的使用场景和方式:

1. 未显式声明网络环境的docker-compose.yml

例如,在目录test下创建docker-compose.yml,内容如下:

version: '2'
services:
  centos-ssh:
    image: centos

使用docker-compose up启动容器后,这些容器都会被加入test_default网络中。

使用docker network ls可以查看网络列表,docker network inspect <container id>可以查看对应网络的配置。

2. networks关键字指定自定义网络

例如下面的docker-compose.yml文件,定义了testNet网络,其中,bridge可以替换为host, bridge, overlay等选项中的一种。

version: '2'
services:
  centos-ssh:
    image: centos
    networks:
        - testNet
networks: 
   testNet:
        driver: bridge

这里testNet可以见多个,对不同的service进行网络隔离访问。例如:

version: '2'
services:
  a:
    image: centos
    networks:
        - AA
   b:
    image: centos
    networks:
        - AA
        - BB
   c:
    image: centos
    networks:
        - BB
networks: 
   AA:
        driver: bridge
   BB:
        driver: bridge

其中【a服务】和【c服务】之间只能通过【b服务】来实现通信。

值得注意的是,这里定义了AA和BB两个网络,似乎它们的名字就定义成了AA和BB,但是你使用docker network ls命令并不能找到它们。假如你是在test目录下运行的docker-compose up命令,那么这两个网络应该分别对应test_AAtest_BB

3. 配置默认网络

version: '2'
services:
  centos-ssh:
    image: centos
    networks:
        - testNet
networks: 
   default:
        driver: bridge

4. 使用已存在的网络

version: '2'
services:
  centos-ssh:
    image: centos
    networks:
        - testNet
networks: 
   default:
        external: 
              name: test

此种方式需要先行解决创建网络 docker network create test

对应的删除网络 docker network rm test

使用networks的要点在于:
1. 注意自定义网络的方式
2. 注意docker-compose.yml文件的位置与网络默认命名的关系
3. 注意遇到问题尝试几种替代方式去解决

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言