docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker网络docker-compose network

docker网络,docker-compose network问题

作者:罗德斯

这篇文章主要介绍了docker网络,docker-compose network问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

docker网络,docker-compose network

单机桥接网络,bridge(Linux)、nat(Windows) 

特点:

1.只能在单个docker主机上运行,并且只能与所在docker主机上的容器进行连接。

2.桥接意味着这是802.1.d桥接的一种实现(二层交换机)

Linux主机上:

docker网络由bridge驱动创建,而bridge底层是基于Linux内核中久经考验达15年的Linux bridge技术。

默认的“bridge”网络被映射到内核中为“docker0”的Linux网桥。

本地系统中存在的网桥如下图(需要安装bridge-utils):

docker0对应docker中默认网桥bridge;

网桥未开启STP,并且有容器内部的网桥借口设备接入对应网桥(网桥对应的interfaces下有关联容器网络借口网络)

调整思绪,未完待续。。。。。。

docker-compose 网络

networks:

  my_network:     #网络名称
    driver: bridge      #桥接模式
    attachable:true      #允许独立的网络连接到该网络上

  persist:                #网络名称
    external:           #使用已存在的网络
      name: bridge2    #已创建的网络名

docker-compose network名称定义

docker-compose启动的网络名称:

1、没有自定义网络名

$ cat docker-compose.yaml 
version: '2'
 
services:
  zookeeper1:
    image: zookeeper
    container_name: zookeeper1
    environment:
        - ZOO_MY_ID=1
        - ZOO_SERVERS=server.1=zookeeper1:2888:3888

实际使用的网络是:<当前路径名_default>,如果<当前路径名>太长,会截取前缀部分。

例如当然目录名为testdocker,那么最终生产的网络名为:testdocker_default

$ docker network ls
abf87f64de25        testdocker_default   bridge              local

2、定义后缀

$ cat docker-compose.yaml 
version: '2'
networks:
  byfn:
 
services:
  zookeeper1:
    image: zookeeper
    container_name: zookeeper1
    environment:
        - ZOO_MY_ID=1
        - ZOO_SERVERS=server.1=zookeeper1:2888:3888
    networks:
      - byfn

定义网络名为byfn,那么最终生产的网络名为:<当前路径名_byfn>。

相对于之前没有定义的时候,把default替换成了定义的网络名,同样还是使用路径名作为前缀。

$ docker network ls
abf87f64de25        testdocker_byfn   bridge              local

3、定义前缀

当然使用路径名作为网络名是很不友好的,docker-compose使用环境变量来取代路径名。

设置环境变量:COMPOSE_PROJECT_NAME

$ cat .env
COMPOSE_PROJECT_NAME=aaa

这时网络名如下:

$ docker network ls
967ef0d41dd6        aaa_byfn                       bridge              local

所以,docker-compose的网络名的规则是:<COMPOSE_PROJECT_NAME>_<NETWORKS>

1、如果NETWORKS没有定义,那么就是default。

2、如果COMPOSE_PROJECT_NAME,那么就是当前路径名(取前缀)。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文