Docker---容器编排工具Docker Compose
Docker Compose核心功能使用YAML文件定义多容器应用一键启动/停止/重建整个应用栈管理服务依赖关系与网络配置环境变量集中管理适配多环境部署核心概念层级Service服务一个应用组件可包含多个相同镜像的容器实例Project项目一组关联服务组成的业务单元由docker-compose.yml定义Container容器服务的运行实例基于镜像创建YAML文件关键配置项配置项说明示例image指定镜像image: nginx:latestbuild构建镜像build: {context: ./app, dockerfile: Dockerfile.prod}ports端口映射ports: [80:80, 443:443]expose内部暴露端口不映射到主机expose: [80]environment环境变量environment: {MYSQL_ROOT_PASSWORD: lee}volumes数据卷挂载volumes: [/host/data:/container/data:ro]networks网络连接networks: [mynet1, mynet2]command覆盖默认启动命令command: [python,app.py]restart重启策略restart: alwayscontainer_name指定容器名称container_name: webservernetwork_mode使用指定网络模式network_mode: bridge网络与卷的自定义networks定义自定义网络驱动、子网、外部网络引用volumes定义命名卷支持外部卷引用常用命令# 启动服务后台运行 docker compose up -d # 指定YAML文件启动 docker compose -f custom.yml up -d # 启动前重新构建镜像 docker compose up -d --build # 停止并删除服务、网络、卷 docker compose down # 启动/停止/重启已存在服务 docker compose start docker compose stop docker compose restart # 查看服务状态 docker compose ps # 查看服务日志 docker compose logs docker compose logs -f web # 跟踪指定服务日志 # 在运行容器中执行命令 docker compose exec web bash # 拉取服务镜像 docker compose pull # 验证YAML配置 docker compose config docker compose config -q # 静默验证无输出表示正确 # 构建自定义镜像 # Dockerfile示例 vim Dockerfile # 内容 # FROM busybox:latest # RUN touch /leefile1 # docker-compose.yml示例 vim compose.yml # 内容 # version: 3.8 # services: # test1: # image: test1 # build: # context: /root/test # dockerfile: Dockerfile # command: [/bin/sh,-c,sleep 3000] # restart: always # container_name: busybox1 # 构建镜像 docker compose build docker compose build test1 # 仅构建指定服务 # 启动自动拉取或构建 docker compose up -d # 若镜像不存在会尝试pull docker compose up -d --build # 强制先构建再启动 # 企业示例HAProxy Nginx负载均衡 # 目录结构 /docker/ ├── web/ │ ├── html1/ # web1站点内容 │ └── html2/ # web2站点内容 ├── conf/ │ └── haproxy/ │ └── haproxy.cfg └── docker-compose.yml # haproxy.cfg示例 vim /docker/conf/haproxy/haproxy.cfg # 内容 # global # log stdout format raw local0 # defaults # mode http # timeout connect 5000ms # timeout client 50000ms # timeout server 50000ms # frontend http_front # bind *:80 # default_backend http_back # backend http_back # balance roundrobin # server web1 web1:80 check # server web2 web2:80 check # docker-compose.yml示例 vim docker-compose.yml # 内容 # version: 3.8 # services: # web1: # image: nginx:latest # container_name: web1 # restart: always # networks: [mynet1] # expose: [80] # volumes: [/docker/web/html1:/usr/share/nginx/html] # web2: # image: nginx:latest # container_name: web2 # restart: always # networks: [mynet1] # expose: [80] # volumes: [/docker/web/html2:/usr/share/nginx/html] # haproxy: # image: haproxy:2.3 # container_name: haproxy # restart: always # networks: [mynet1, mynet2] # volumes: [/docker/conf/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg] # ports: [80:80] # networks: # mynet1: # driver: bridge # mynet2: # driver: bridge # 启动负载均衡架构 docker compose up -d # 验证 curl http://宿主机IP # 应轮询返回web1或web2内容 # 高级网络配置示例 vim compose.yml # 内容 # services: # test: # image: busybox # container_name: busybox1 # command: [/bin/sh,-c,sleep 3000] # restart: always # networks: # - mynet1 # - mynet2 # networks: # mynet1: # driver: bridge # mynet2: # ipam: # driver: default # config: # - subnet: 172.28.0.0/16 # gateway: 172.28.0.254 # default: # external: true # name: bridge # 使用外部已有网络 # 数据卷配置示例 vim compose.yml # 内容 # services: # test: # image: busybox # container_name: busybox1 # command: [/bin/sh,-c,sleep 3000] # restart: always # volumes: # - data:/test # - /etc/passwd:/tmp/passwd:ro # volumes: # data: # name: timinglee # 指定卷名称
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2474640.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!