Docker深度解析:Docker Compose

为什么使用 Docker Compose:
  1. 现在部署一个 SpringBoot 项目,需要依赖 redis、nginx、mysql
  2. 如果使用 docker 原生部署的话,需要安装 redis、mysql 和 nginx 容器,才可以启动 SpringBoot 项目
  3. 这样的话部署项目流程非常复杂,所以需要引入 Docker Compose 实现容器编排技术
概念:
  1. 服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例
  2. 项目(project):由一个关联的应用容器组成一个完整业务单元,在 docker-compose.yml 文件中定义
  3. Compose 项目由 Python 编写,现实上调用了 Docker 服务提供的 API 来对内容进行管理
  4. 因此,只要操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理
  5. Dockerfile springboot.jar docker-compose
Docker-Compose 分成三层:
  1. 项目层:springboot 项目依赖于我们的 MySQL、Redis、Nginx 等,一个项目是由多个容器组成
  2. 服务层:运行一个镜像的实例

Compose 安装:

  1. 访问 docker compose github 官网

  2. 将 docker-compose-Linux-x86_64 上传到服务器中,然后将其移动并更改名称

    复制代码
    mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
  3. 添加可执行的权限:

    复制代码
    sudo chmod +x /usr/local/bin/docker-compose
  4. 验证 docker-compose:

    复制代码
    docker-compose -v

Compose 常用命令:

创建并运行:docker-compose
复制代码
   docker-compose -h    #查看帮助
   docker-compose up    #创建并运行所有容器
   docker-compose up -d    #创建并后台运行所有容器
   docker-compose -f docker-compose.yml up -d    #指定模板
   docker-compose down    #停止并删除容器、网络、卷、镜像
检查配置:
复制代码
   docker-compose -h    #查看帮助
   docker-compose up    #创建并运行所有容器
   docker-compose up -d    #创建并后台运行所有容器
   docker-compose -f docker-compose.yml up -d    #指定模板
   docker-compose down    #停止并删除容器、网络、卷、镜像
启动 docker-compose 服务:
复制代码
   docker-compose restart    #重启服务
   docker-compose start      #启动服务
   docker-compose stop       #停止服务

Compose 模板文件:

入门案例:
  1. 创建 docker-compose.yml 文件:

  2. 制定 docker-compose 内容:

    复制代码
    version:'3.0'
    service:
      tomcat: #服务名称
        image:tomcat:8  #镜像文件的名称
        ports:    #开放端口
          -8080:8080
  3. 运行 docker-compose:

    复制代码
    version: '3.0'
    services:
      tomcat80:     #服务名称
        #container_name: tomcat8080  #指定容器名称
        image: tomcat8
        ports:        #端口号的映射
          - 8080:8080
      tomcat81:      #服务名称
        #container_name: tomcat8080  #指定容器名称
        image: tomcat:8     #镜像文件的名称
        ports:
          - 8081:8080
        volumes:    #数据源  宿主机与容器数据共享
          - /usr/tomcat/webapps:/usr/local/tomcat/webapps
        networks:
          - boyatop
    networks:       #定义服务的桥
      boyatop
相关推荐
从零开始的ops生活6 分钟前
【Day 80】Linux-NAS 和 SAN 存储
linux·运维·php
Wang's Blog1 小时前
Linux小课堂: 输入重定向与管道操作详解
linux·运维·服务器
jianghx10242 小时前
Docker部署ES,开启安全认证并且设置账号密码(已运行中)
安全·elasticsearch·docker·es账号密码设置
python百炼成钢3 小时前
3.Linux 网络相关
linux·运维·网络·stm32·单片机
Jtti3 小时前
香港硬防服务器防御DDOS攻击的优点
运维·服务器·ddos
2503_930123933 小时前
Kubernetes (四)网络插件详解:Flannel 与 Calico 的原理、数据流向与实战对比
网络·容器·kubernetes
ZHE|张恒5 小时前
Docker 安装 RabbitMQ
docker·rabbitmq
lpfasd1235 小时前
第2部分:Netty核心架构与原理解析
运维·服务器·架构
小蜜蜂爱编程5 小时前
gerrit的部署与配置关联到不同服务器上的git仓库
运维·服务器·git·gerrit