linuxi系统docker容器编排工具compose

compose容器编排

docker-compose是docker官方的开源项目,负责实现对docker容器集群的快速编排

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

docker建议一个容器中运行一个服务,因为docker容器本身占用资源极少,所以最好是将每个服务单独的分割开来

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

可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-compose解决了容器与容器之间如何管理编排的问题。

下载

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

官网下载:https://docs.docker.com/compose/install/

安装步骤

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

chmod +x /usr/local/bin/docker-compose   //加权

docker-compose --version     //查看版本

卸载步骤

如果使用curl安装,使用以下语句卸载compose
rm /usr/local/lib/docker/cli-plugins/docker-compose

概念

一文件

docker-compose.yml文件

两要素

服务service
一个个应用容器实例
工程project
由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件中定义

工程=多个服务(容器应用实例)

使用步骤

编写Dockerfile定义各个微服务应用并构建出对应的镜像文件

使用 docker-compose.yml 定义一个完整业务单元,安排好整体应用中的各个容器服务。

最后,执行docker-compose up命令来启动并运行整个应用程序,完成一键部署上线

docker-compose up等价于一次性运行了多个docker run…

常用命令

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

编排微服务

改造升级微服务docker_boot

以前的基础版

sql语句建库建表

一键生成说明

改pom

写yml

主启动

业务类

mvn package命令将微服务形成新的jar包并上传到linux服务器/mydocker目录下


/mydocker目录下编写Dockerfile
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER zzyy
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为docker.jar
ADD docker_boot-0.0.1-SNAPSHOT.jar docker.jar
# 运行jar包
RUN bash -c 'touch /docker.jar'
ENTRYPOINT ["java","-jar","/docker.jar"]
# 暴露端口作为微服务
EXPOSE 6001


构建镜像
docker build -t ximu_docker:1.0 .

不用compose

单独的mysql实例
新建mysql容器
进入mysql容器,创建数据库,以及数据表

单独的redis实例
新建redis容器

微服务工程
将刚刚创建的微服务镜像启动
docker run -d -p 6001:6001  镜像名称/镜像id

容器实例依次一个一个启动成功

测试

http://ip:微服务端口/xxx.html/ 

问题

先后顺序固定,先启动mysql+redis才能访问微服务成功

多条run命令

容器间启动、停止或者宕机,有可能导致ip地址对应容器实例发生变化,导致映射出错,

使用compose

编写docker-compose.yml文件
version: "3"     #compose版本
 
services:        #服务容器实例
  ximu:          #自定义名字,不冲突即可
    image: docker:1.0     #编排镜像的名称:版本
    container_name: ms01  #容器启动的名称
    ports:
      - "6001:6001"       #映射的端口
    volumes:
      - /app/ximu:/data   #容器数据卷
    networks:
      - net01             #网络模式
    depends_on:
      - redis             
      - mysql			  
      
  redis:
    image: redis:6.0.8    #redis镜像版本
    ports:
      - "6379:6379"       #redis映射版本
    volumes:
      - /app/reids/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
    networks:
      - net01
    command: redis-server /etc/redis/redis.conf
    
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: '0'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'db1'
      MYSQL_USER: 'ximu'
      MYSQL_PASSWORD: '0'
    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
   	network:
   	  - net01
   	command: --default-authentication-plugin=mysql_native_password   #解决外部无法访问
   	
networks:
  net01:
修改微服务工程
写yml:通过服务名访问,与ip无关

mvn package命令将微服务形成新的jar包并上传到linux服务器/mydocker目录下

/mydocker目录下编写Dockerfile

构建镜像
docker build -t ximu_docker:1.0 .
启动
docker-compose up 启动

docker-compose up -d 启动并后台运行
关停
docker-compose stop

相关推荐

  1. linuxi系统docker容器编排工具compose

    2024-03-15 02:56:01       43 阅读
  2. Docker Compose 容器编排

    2024-03-15 02:56:01       51 阅读
  3. Docker compose容器编排

    2024-03-15 02:56:01       39 阅读
  4. Docker-Compose容器编排

    2024-03-15 02:56:01       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 02:56:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 02:56:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 02:56:01       82 阅读
  4. Python语言-面向对象

    2024-03-15 02:56:01       91 阅读

热门阅读

  1. 记一次实战项目所学(通用接口篇)

    2024-03-15 02:56:01       39 阅读
  2. Coinbase: AI+区块链的投资与创业机会

    2024-03-15 02:56:01       41 阅读
  3. C语言自学笔记5-----C 语言 if...else 语句

    2024-03-15 02:56:01       44 阅读
  4. Spring Cloud + Nacos 集成Netty Socket.IO

    2024-03-15 02:56:01       35 阅读
  5. 关于Django使用Jquery异步刷新

    2024-03-15 02:56:01       36 阅读
  6. Dropping Balls(UVA 679)

    2024-03-15 02:56:01       38 阅读
  7. QEMU的内存虚拟化[1]——基本数据结构理解

    2024-03-15 02:56:01       38 阅读
  8. python--类与面向对象-3

    2024-03-15 02:56:01       35 阅读