前言
本周内在使用docker-compose 的过程中, 复习了docker的network. 以此为引言, 将整个过程稍微概述下. ?
常见声明 & 疑问解决
version: "3"
services:
nginx:
image: nginx:stable-alpine
container_name: nginx
ports:
- "8080:80"
volumes:
- ./src:/var/www
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
networks:
- laravel
php:
build:
context: .
dockerfile: Dockerfile
container_name: php
volumes:
- ./src:/var/www
working_dir: /var/www
# command: "php artisan serve --host=0.0.0.0 --port=8000"
ports:
- "9000:9000"
# 使用声明的网络
networks:
- laravel
# 声明网络
networks:
laravel:
# 该网络是外部的网络
external: true
- 可以看到
networks 目录下. 就是声明了network网络. external: true . 表示使用的是外部的网络. 但是, 值得注意的是, 这样使用需要提前使用docker network create <network-name (ex. laravel)> 命令创建相关网络. (否则在使用docker-compose up -d 时, 会报如下错误ERROR: Service "xxx" uses an undefined network "network-name" )- 另外,
docker-compose.yml 的version必须大于1.
?
?
Reference
[1] docker-compose.yaml 中network配置问题 [2]. docker的docker-compose.yml文件的networks配置 [3]. docker-compose文件中networks使用已经创建的网络
docker-compose中的networks网络设置一览
- 不进行设置. 使用默认.
未显式声明网络环境的docker-compose.yml
version: '3'
services:
web:
mage: nginx:latest
container_name: web
depends_on:
- db
ports:
- "9090:80"
links:
- db
db:
image: mysql
container_name: db
docker会自动生成一个默认的bridge 类型网络. 将容器加入其中. 比如如下所示: 我们启动一个mongodb 的容器.
前言
本周内在使用docker-compose 的过程中, 复习了docker的network. 以此为引言, 将整个过程稍微概述下. ?
常见声明 & 疑问解决
version: "3"
services:
nginx:
image: nginx:stable-alpine
container_name: nginx
ports:
- "8080:80"
volumes:
- ./src:/var/www
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
networks:
- laravel
php:
build:
context: .
dockerfile: Dockerfile
container_name: php
volumes:
- ./src:/var/www
working_dir: /var/www
# command: "php artisan serve --host=0.0.0.0 --port=8000"
ports:
- "9000:9000"
# 使用声明的网络
networks:
- laravel
# 声明网络
networks:
laravel:
# 该网络是外部的网络
external: true
- 可以看到
networks 目录下. 就是声明了network网络. external: true . 表示使用的是外部的网络. 但是, 值得注意的是, 这样使用需要提前使用docker network create <network-name (ex. laravel)> 命令创建相关网络. (否则在使用docker-compose up -d 时, 会报如下错误ERROR: Service "xxx" uses an undefined network "network-name" )- 另外,
docker-compose.yml 的version必须大于1.
?
?
Reference
[1] docker-compose.yaml 中network配置问题 docker-compose.yaml 中network配置问题.pdf [2]. docker的docker-compose.yml文件的networks配置 docker的docker-compose.yml文件的networks配置.pdf [3]. docker-compose文件中networks使用已经创建的网络 docker-compose文件中networks使用已经创建的网络.pdf
docker-compose中的networks网络设置一览
- 不进行设置. 使用默认.
未显式声明网络环境的docker-compose.yml
version: '3'
services:
web:
mage: nginx:latest
container_name: web
depends_on:
- db
ports:
- "9090:80"
links:
- db
db:
image: mysql
container_name: db
docker会自动生成一个默认的bridge 类型网络. 将容器加入其中. 比如如下所示: 我们启动一个mongodb 的容器. ![image.png](https://img-blog.csdnimg.cn/img_convert/1de977455efcc5e4236e1877a1b7edb7.png#clientId=u47ea35ae-66e4-4&from=paste&height=213&id=uc13624a7&margin=[object Object]&name=image.png&originHeight=425&originWidth=1766&originalType=binary&ratio=1&size=68967&status=done&style=none&taskId=u0f0c53d3-1106-4d95-b8e1-efc1fc8fd85&width=883) 然后查询网络 & 查询网络的整体情况. docker network ls / docker network inspect bridge ![image.png](https://img-blog.csdnimg.cn/img_convert/7103cbbe30cbc224f35af60649f93b4f.png#clientId=u47ea35ae-66e4-4&from=paste&height=627&id=ue341c8eb&margin=[object Object]&name=image.png&originHeight=1254&originWidth=1625&originalType=binary&ratio=1&size=151479&status=done&style=none&taskId=ub63301d0-622b-4075-a1c3-32832384f1f&width=812.5) 可以看到. 自动创建了一个桥接的模式的网络. 并将容器放入其中. ?
- networks关键字指定自定义网络
?
version: '3'
services:
proxy:
build: ./proxy
networks:
- front
app:
build: ./app
networks:
- front
- back
db:
image: postgres
networks:
- back
networks:
front:
# Use a custom driver
driver: custom-driver-1
back:
# Use a custom driver which takes special options
driver: custom-driver-2
driver_opts:
foo: "1"
bar: "2"
custom-driver-1 应当选择相应的driver模式. host / bridge / overlay 等模式的一种. ?
- 配置默认网络
version: '2'
services:
web:
build: .
ports:
- "8000:8000"
db:
image: postgres
networks:
default:
# Use a custom driver
driver: custom-driver-1
可以看到. 这种设置. 在server处没有显示的声明使用的网络. 但是其还会. 默认使用下方配置的默认网络. ?
version: '2'
networks:
default:
external: true
name: my-pre-existing-network
默认网络. 可能还可以和external合并起来进行使用. ?
- 使用已经存在的网络 (外部网络)
networks:
default:
external: true
name: my-pre-existing-network
Reference
[1]. docker-compose网络设置之networks docker-compose网络设置之networks.pdf
然后查询网络 & 查询网络的整体情况. docker network ls / docker network inspect bridge
可以看到. 自动创建了一个桥接的模式的网络. 并将容器放入其中. ?
- networks关键字指定自定义网络
?
version: '3'
services:
proxy:
build: ./proxy
networks:
- front
app:
build: ./app
networks:
- front
- back
db:
image: postgres
networks:
- back
networks:
front:
# Use a custom driver
driver: custom-driver-1
back:
# Use a custom driver which takes special options
driver: custom-driver-2
driver_opts:
foo: "1"
bar: "2"
custom-driver-1 应当选择相应的driver模式. host / bridge / overlay 等模式的一种. ?
- 配置默认网络
version: '2'
services:
web:
build: .
ports:
- "8000:8000"
db:
image: postgres
networks:
default:
# Use a custom driver
driver: custom-driver-1
可以看到. 这种设置. 在server处没有显示的声明使用的网络. 但是其还会. 默认使用下方配置的默认网络. ?
version: '2'
networks:
default:
external: true
name: my-pre-existing-network
默认网络. 可能还可以和external合并起来进行使用. ?
- 使用已经存在的网络 (外部网络)
networks:
default:
external: true
name: my-pre-existing-network
Reference
[1]. docker-compose网络设置之networks
|