这里,我启动了三个容器mysql、tars-node ,tars-framework,就会有三个容器网卡,以及一个docker0虚拟网卡,这三个容器网卡都会桥接到docker0网卡,docker0网卡与物理机网卡连接使用的是nat技术,如下图:
使用命令:ip addr (ip a 或 ip add list),查看网卡状态
使用命令查看bridge模式的详细信息:docker network inspect bridge
2)host模式
该模式下容器是不会拥有自己的ip地址,而是使用宿主机的ip地址和端口。这种模式的好处就是网络性能比桥接模式的好。缺点就是会占用宿主机的端口,网络的隔离性不太好
3)none
none模式没有IP地址,无法连接外网,等于就是断网的状态,作用就是用于测试,生产环境一般不会用到这种
4)container
新创建的容器不会创建自己的网卡和配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。
3. docker-compose.yml文件分析
1 version: "3" 2 3 services: 4 mysql: 5 image: mysql:5.6 6 container_name: compose-tars-mysql 7 ports: 8 - "3307:3306" 9 restart: always 10 environment: 11 MYSQL_ROOT_PASSWORD: "123456" 12 volumes: 13 - ./mysql/data:/var/lib/mysql:rw 14 - ./source/Shanghai:/etc/localtime 15 networks: 16 internal: 17 ipv4_address: 172.25.1.2 18 framework: 19 image: tarscloud/framework:v2.4.0 20 container_name: compose-tars-framework 21 ports: 22 - "3000:3000" 23 - "3001:3001" 24 restart: always 25 networks: 26 internal: 27 ipv4_address: 172.25.1.3 28 environment: 29 MYSQL_HOST: "172.25.1.2" 30 # MYSQL_HOST: "123.56.***.184" 31 MYSQL_ROOT_PASSWORD: "123456" 32 MYSQL_USER: "root" 33 MYSQL_PORT: 3306 34 # MYSQL_PORT: 3307 35 REBUILD: "false" 36 INET: eth0 37 SLAVE: "false" 38 volumes: 39 - ./framework/data:/data/tars:rw 40 - ./source/Shanghai:/etc/localtime 41 depends_on: 42 - mysql 43 node: 44 image: tarscloud/tars-node:latest 45 container_name: compose-tars-node 46 restart: always 47 networks: 48 internal: 49 ipv4_address: 172.25.1.5 50 volumes: 51 - ./node/data:/data/tars:rw 52 - ./source/Shanghai:/etc/localtime 53 environment: 54 INET: eth0 55 WEB_HOST: http://172.25.1.3:3000 56 # WEB_HOST: ***.184:3000 57 ports: 58 - "9000-9009:9000-9009" 59 depends_on: 60 - framework 61 networks: 62 internal: 63 driver: bridge 64 ipam: 65 config: 66 - subnet: 172.25.1.0/16