当前位置:   article > 正文

10.docker入门到精通—Docker compose 容器编排_任务10 docker compose容器编排

任务10 docker compose容器编排

一、介绍

Compose 是 Docker 公司推出的一个开源工具软件,可以管理多个Docker 容器组成一个应用。你需要定义一个YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器。

Compose 允许用户通过一个单独的 docker- compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

二、下载

官网

https://docs.docker.com/compose/compose-file/compose-file-v3/

官网下载

https://docs.docker.com/compose/install/

安装(新版docker已经安装了docker-compose,直接docker compose version查看版本)

curl-L"https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)"-o /usr/local/bin/docker-compose

若github下载太慢,可以换源

curl-L https://get.daocloud.io/docker/compose/releases/download/1.28./docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

修改权限、查看版本

  1. chmod+x /usr/local/bin/docker-compose
  2. docker-compose --version
  3. 新版docker使用: docker compose version

卸载

sudorm /usr/local/bin/docker-compose

三、核心概念(一文件、两要素)

1 一文件

docker-compose.yml

2 两要素

2.1 服务(service)

一个个应用容器实例,比如订单微服务、库存微服务、mysql 容器、nginx容器或者 redis 容器

2.2 工程(project)

由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml文件中定义。

3 Compose 使用的三个步骤

  1. 1.编写 Dockerfile 定义各个微服务应用并构建出对应的镜像文件
  2. 2.使用 docker-compose.yml 定义一个完整业务单元,安排好整体应用中的各个容器服务
  3. 3.最后执行 docker-compose up 命令 来启动并运行整个应用程序,完成一键部署上线

4 Compose 常用命令

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

5 Compose 编排微服务

5.1 编写 docker-compose.yml 文件

  1. version: "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
  12. depends_on:
  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
  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:

5.2 修改微服务工程

5.2.1 写yml(通过服务名访问,IP无关)
5.2.2 mvn package 命令将微服务形成新的 jar 包,并上传到Linux 服务器/mydocker目录下
5.2.3 编写 Dockerfile
  1. # 基础镜像使用 java
  2. FROM java:8
  3. # 作者
  4. MAINTAINER zzyy
  5. # VOLUME 指定临时文件目录为/tmp,在主
  6. 机/var/lib/docker 目录下创建了一个临时文件
  7. 并链接到容器的/tmp
  8. VOLUME /tmp
  9. # 将 jar 包添加到容器中并更名为
  10. zzyy_docker.jar
  11. ADD docker_boot-0.0.1-SNAPSHOT.jar
  12. zzyy_docker.jar
  13. # 运行 jar 包
  14. RUN bash-c'touch /zzyy_docker.jar' ENTRYPOINT ["java","-
  15. jar","/zzyy_docker.jar"]
  16. #暴露 6001 端口作为微服务
  17. EXPOSE 6001
5.2.4 构建镜像
docker build -t zzyy_docker:1.6 .

5.3 执行 docker-compose up 或者 执行 docker-compose up -d

5.4 进入mysql容器实例并新建库 db2021 + 新建表 t_user

  1. docker exec -it 容器实例id /bin/bash
  2. mysql -uroot-p
  3. create database db2021;
  4. use db2021;
  5. CREATE TABLE `t_user` (
  6. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  7. `username` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '用户名',
  8. `password` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '密码',
  9. `sex` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '性别 0=女 1=男 ',
  10. `deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除标志,默认0不删除,1删除',
  11. `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  12. `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  13. PRIMARY KEY (`id`)
  14. ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

5.5 测试

5.6 关停

docker compose stop      # 停止服务

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

闽ICP备14008679号