Docker Compose

Docker Compose

用途

服务 (service):一个应用容器,实际上可以运行多个相同镜像的实例。
项目 (project):由一组关联的应用容器组成的一个完整业务单元。
Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
docker compose就是用来对docker容器集群进行快速编排,和k8s/swarm的区别就是docker-compose只能管理本地服务器的容器,而k8s/swarm能跨服务器进行管理且功能更加强大。

用法

下载发布包

下载docker-compose:到github,下载对应版本的发布包。在linux可以使用命令(注意将地址改成自己的版本):

curl -L https://github.com/docker/compose/releases/download/1.24.0-rc1/docker-compose-Linux-x86_64> /usr/local/bin/docker-compose
下载到/usr/local/bin/,docker-compose就是执行文件,加上执行权限后即可使用

编写docker-compose.yaml

docker-compose.yaml是默认的文件名,可以改但最好建议别改

docker-compose.yaml语法

示例:


version: '3'
services:
  admin:
    restart: always
    image: tomcat
    container_name: myshop-admin
    ports:
      - 8080:8080
    volumes:
      - /usr/local/docker/myshop-artifacts/admin:/usr/local/tomcat/webapps/ROOT

  mysql:
    restart: always
    image: mysql:5.7.22
    container_name: myshop-mysql
    ports:
      - 3307:3306
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123456
    command:
      --character-set-server=utf8m64
      --collation-server=utf8m64_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --max_allowed_packet=128M
      --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
    volumes:
      - mysql-data:/var/lib/mysql

volumes:
  mysql-data:
#不写就是默认数据卷,位置就在/var/lib/docker/volumes下

执行docker-compose.yaml

在docker-compose.yaml目录下执行命令:docker-compose up即自动开始构建拉取镜像生成容器,-d守护态运行(这里在docker-compose.yaml相同目录执行,其实就是和dockerfile 上下文一样的意思,或者使用docker-compose -f 路径来指定执行)
docker-compose down 停止,会自动删除容器
docker-compose logs 查看日志,-f实时监听日志输出
docker-compose logs 容器名

本博客为Swagger-Ranger的笔记分享,文中源码地址: https://github.com/Swagger-Ranger
欢迎交流指正,如有侵权请联系作者确认删除: liufei32@outlook.com

原文地址:https://www.cnblogs.com/Swagger-Ranger/p/10670029.html