10.Docker entry to proficiency—Docker compose container orchestration

1. Introduction

Compose is an open source tool software launched by Docker Company , which can manage multiple Docker containers to form an application. You need to define a configuration file docker-compose.yml in YAML format and write the calling relationships between multiple containers. Then, with just one command, you can start/stop these containers simultaneously.

Compose allows users to define a set of associated application containers as a project through a separate docker-compose.yml template file (YAML format).

Two, download

Official website

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

Official website download

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

Installation (the new version of docker has already installed docker-compose, directly docker compose version to view the 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

If github download is too slow, you can change the source

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

Modify permissions and view versions

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

Uninstall

sudorm /usr/local/bin/docker-compose

3. Core concepts (one document, two elements)

1 file

docker-compose.yml

2 two elements

2.1 Service

Each application container instance, such as order microservice, inventory microservice, mysql container, nginx container or redis container

2.2 Project

A complete business unit consisting of a set of associated application containers is defined in the docker-compose.yml file.

3 Three steps to use Compose

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

4 Compose common commands

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 logs yml 里面的服务 id # 查看容器输出日志
docker compose config # 检查配置
docker compose config -q# 检查配置,有问题才有输出
docker compose restart# 重启服务
docker compose start# 启动服务
docker compose stop# 停止服务

5 Compose orchestrate microservices

5.1 Write the docker-compose.yml file

version: "3"

services:
  microService:
    image: zzyy_docker:1.6
    container_name: ms01
    ports:
      -"6001:6001"
    volumes:
      - /app/microService:/data
    networks: 
      - atguigu_net 
    depends_on: 
      - redis
      - mysql

  redis:
    image: redis:6.0.8
    ports:
      -"6379:6379"
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
    networks: 
      - atguigu_net
    command: redis-server /etc/redis/redis.conf

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'db2021'
      MYSQL_USER: 'zzyy'
      MYSQL_PASSWORD: 'zzyy123'
    ports:
       -"3306:3306"
    volumes:
       - /app/mysql/db:/var/lib/mysql
       - /app/mysql/conf/my.cnf:/etc/my.cnf
       - /app/mysql/init:/docker-entrypoint-initdb.d
    networks:
      - atguigu_net
    command: --default-authentication-plugin=mysql_native_password #解决外部无法访问

networks: 
   atguigu_net: 

5.2 Modify the microservice project

5.2.1 Write yml (accessed through service name, IP has nothing to do with it)
5.2.2 The mvn package command forms the microservice into a new jar package and uploads it to the Linux server/mydocker directory.
5.2.3 Write Dockerfile
# 基础镜像使用 java
FROM java:8
# 作者

MAINTAINER zzyy
# VOLUME 指定临时文件目录为/tmp,在主
机/var/lib/docker 目录下创建了一个临时文件
并链接到容器的/tmp
VOLUME /tmp

# 将 jar 包添加到容器中并更名为

zzyy_docker.jar
ADD docker_boot-0.0.1-SNAPSHOT.jar
zzyy_docker.jar

# 运行 jar 包

RUN bash-c'touch /zzyy_docker.jar' ENTRYPOINT ["java","-
jar","/zzyy_docker.jar"]
#暴露 6001 端口作为微服务

EXPOSE 6001
5.2.4 Building an image
docker build -t zzyy_docker:1.6 .

5.3 Execute docker-compose up or execute docker-compose up -d

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

docker exec -it 容器实例id /bin/bash
mysql -uroot-p
create database db2021;
use db2021;

CREATE TABLE `t_user` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '用户名',
  `password` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '密码',
  `sex` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '性别 0=女 1=男 ',
  `deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除标志,默认0不删除,1删除',
  `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

5.5 测试

5.6 关停

docker compose stop      # 停止服务

Guess you like

Origin blog.csdn.net/weixin_54514751/article/details/129683436