Docker的网络模式和Compose基本使用及示例
·
1、docker的网络模式
| 网络模式 |
简介 |
使用方式 |
| bridge | 为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,默认为该模式。 | --network bridge,默认使用docker0 |
| host | 容器将不会虚拟出自己的网卡、配置自己的IP等,而是使用宿主机的IP和端口。 | --network host |
| none | 容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配 veth pari和网桥连接、IP等 | --network none |
| container | 新创建的容器不会创建自己的网卡和配置自己的IP,而是和一个指定的容器共享IP、端口范围等 | --network container:NAME或者容器ID |
2、docker compose简介
DockerCompose 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用 YAML 文件来配置应用程序的服务,这些服务可以是运行在 Docker 容器中的单个服务,也可以是由多个容器组成的服务,DockerCompose 允许用户通过一个简单的命令来启动、停止和重建应用程序中的所有服务。
3、docker compose模板文件
| 字段 | 含义 |
| build | 指定Dockerfile所在的文件夹路径 |
| image | 指定为镜像名称或镜像ID |
| container_name | 指定容器模式 |
| depends_on | 指定多个服务之间的依赖关系 |
| ports | 端口映射 |
| command | 覆盖容器启动后默认执行的命令 |
| entrypoint | 覆盖容器中默认的入口命令 |
| env_file | 从文件中获取环境变量 |
| environment | 设置环境变量 |
| expose | 暴露端口,但不映射到宿主机 |
|
restart |
指定重启策略 |
| healthcheck | 指定检测应用健康状态的机制 |
| volumes | 数据卷所挂载路径设置 |
| extends | 基于其他模板文件进行扩展 |
| networks | 所加入的网络 |
| ulimits | 指定容器的ulimits限制值 |
4、docker compose的常见命令
| 命令 | 含义 |
| docker compose up | 启动所有服务(-d 后台运行) |
| docker compose down | 停止并删除容器(-v 同时删除数据卷) |
| docker compose config | 校验和查看compose文件的配置信息 |
| docker compose exec | 在一个运行中的容器内执行给定命令 |
| docker compose logs | 查看服务容器的输出 |
| docker compose pause | 暂停一个服务容器 |
| docker compose restart | 重启项目中的服务 |
| docker compose ps | 列出项目中目前的所有容器 |
| docker compose top | 显示服务栈中正在运行的服务 |
5、docker-compose示例
部署discuz论坛和wordpress博客,使用adminer管理数据库。
name: discuz_wordpress
services:
adminer:
container_name: adminer
depends_on:
db:
condition: service_started
required: true
image: adminer
networks:
mynetwork:
ipv4_address: 192.168.93.10
ports:
- mode: ingress
target: 8080
published: "8080"
protocol: tcp
restart: always
db:
command:
- --character-set-server=utf8
- --collation-server=utf8_general_ci
container_name: mysql56
environment:
MYSQL_DATABASE: wordpress
MYSQL_PASSWORD: wordpress
MYSQL_ROOT_PASSWORD: "123456"
MYSQL_USER: wordpress
image: mysql:5.6
networks:
mynetwork:
ipv4_address: 192.168.93.10
restart: unless-stopped
volumes:
- type: volume
source: db_data
target: /var/lib/mysql
volume: {}
discuz:
container_name: discuz
depends_on:
db:
condition: service_started
required: true
environment:
DISCUZ_DB_HOST: db:3306
image: tencentci/discuz
networks:
mynetwork:
ipv4_address: 192.168.93.10
ports:
- mode: ingress
target: 80
published: "80"
protocol: tcp
restart: unless-stopped
volumes:
- type: volume
source: discuz_data
target: /var/www/html
volume: {}
wordpress:
container_name: wordpress
depends_on:
db:
condition: service_started
required: true
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_USER: wordpress
image: wordpress:latest
networks:
mynetwork:
ipv4_address: 192.168.93.10
ports:
- mode: ingress
target: 80
published: "8001"
protocol: tcp
restart: unless-stopped
volumes:
- type: volume
source: wp_data
target: /var/www/html
volume: {}
networks:
mynetwork:
name: discuz_wordpress_mynetwork
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.93.0/24
gateway: 192.168.93.2
volumes:
db_data:
name: discuz_wordpress_db_data
discuz_data:
name: discuz_wordpress_discuz_data
wp_data:
name: discuz_wordpress_wp_data
更多推荐


所有评论(0)