当前位置:   article > 正文

【docker】docker-compose技术文档

【docker】docker-compose技术文档

docker-compose.ymlDocker Compose 使用的配置文件,用于定义和运行多容器的 Docker 应用程序。该文件采用 YAML 格式,允许用户指定应用程序所需的服务、网络、卷和其他配置。

下面是一个简单的 docker-compose.yml 文件示例,并解释其中的各个部分:

  1. version: '3'
  2. services:
  3. web:
  4. build: .
  5. ports:
  6. - "5000:5000"
  7. db:
  8. image: postgres
  9. redis:
  10. image: redis
  11. volumes:
  12. db-data:
  13. networks:
  14. default:
  15. driver: bridge

版本(version)

version 字段指定了 Compose 文件的版本。这决定了文件中可以使用的配置选项。在上面的例子中,版本是 '3'

服务(services)

services 字段下定义了应用程序中每个容器实例(或称为服务)的配置。每个服务都有自己的名称(例如 web、db、redis)和一组配置选项

服务配置选项

build:       指定 Dockerfile 所在文件夹的路径(相对于 docker-compose.yml 文件的位置)。Docker Compose 会构建这个 Dockerfile 并生成一个镜像。
image:       使用已经存在的 Docker 镜像
ports:       映射宿主机的端口到容器的端口。格式为 "宿主机端口:容器端口"。
volumes:     挂载卷,用于持久化数据或共享数据。
networks:    指定容器要使用的网络。
environment: 设置环境变量。
command:     覆盖容器启动后默认执行的命令。
depends_on:  定义服务之间的依赖关系,确保服务的启动顺序。

卷(volumes)

volumes 字段用于定义命名卷,这些卷可以在多个服务之间共享,并且可以在容器之间持久化数据

网络(networks)

networks 字段允许用户定义自定义网络,以便服务可以相互通信。在这个例子中,定义了一个默认的 bridge 网络

实例

  1. version: "3" # compose版本,都是3
  2. services: # 有几个实例
  3. microService: #名称不冲突就行
  4. image: zzyy_docker:1.6 #你拉取的镜像版本 镜像名称:版本号
  5. container_name: ms01 #容器的名称
  6. ports:
  7. - "6001:6001" #端口号(对外映射端口:容器内端口)
  8. volumes:
  9. - /app/microService:/data #容器数据卷路径映射(宿主机路径:容器内路径)
  10. networks:
  11. - atguigu_net #网络,名称在下面networks节点
  12. depends_on: #此实例依赖于redis与mysql
  13. - redis
  14. - mysql
  15. redis:
  16. image: redis:6.0.8
  17. ports:
  18. - "6379:6379"
  19. volumes:
  20. - /app/redis/redis.conf:/etc/redis/redis.conf
  21. - /app/redis/data:/data
  22. networks:
  23. - atguigu_net
  24. command: redis-server /etc/redis/redis.conf #linux命令
  25. mysql:
  26. image: mysql:5.7
  27. environment: #设置容器的环境变量
  28. MYSQL_ROOT_PASSWORD: '123456'
  29. MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
  30. MYSQL_DATABASE: 'db2021'
  31. MYSQL_USER: 'zzyy'
  32. MYSQL_PASSWORD: 'zzyy123'
  33. ports:
  34. - "3306:3306"
  35. volumes:
  36. - /app/mysql/db:/var/lib/mysql
  37. - /app/mysql/conf/my.cnf:/etc/my.cnf
  38. - /app/mysql/init:/docker-entrypoint-initdb.d
  39. networks:
  40. - atguigu_net
  41. command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
  42. networks:
  43. atguigu_net: #定义网络:等于是docker network create atguigu_net

Compose常用命令

docker-compose -h 查看帮助
docker-compose up 启动所有docker-compose服务
docker-compose up -d 启动所有docker-compose服务并后台运行
docker-compose down停止并删除容器、网络、卷、镜像。
docker-compose exec  yml里面的服务id,进入容器实例内部  docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
docker-compose ps展示当前docker-compose编排过的运行的所有容器
docker-compose top展示当前docker-compose编排过的容器进程
docker-compose logsyml里面的服务id,查看容器输出日志
dokcer-compose config检查配置
dokcer-compose config -q检查配置,有问题才有输出
docker-compose restart重启服务
docker-compose start启动服务
docker-compose stop停止服务

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/458851
推荐阅读
相关标签
  

闽ICP备14008679号