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

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐