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
相关推荐
yzx99101340 分钟前
服务器生成图片
运维·服务器
小阳睡不醒5 小时前
小白成长之路-部署Zabbix7(二)
android·运维
杰克逊的日记5 小时前
GPU运维常见问题处理
linux·运维·gpu
caolib5 小时前
无需云服务器的内网穿透方案 -- cloudflare tunnel
运维·服务器·内网穿透·tunnel·cloudflared
奇舞精选5 小时前
k8s基本概念初探
运维
誰能久伴不乏6 小时前
Linux系统调用概述与实现:深入浅出的解析
linux·运维·服务器
程序员学习随笔6 小时前
Linux进程深度解析(2):fork/exec写时拷贝性能优化与exit资源回收机制(进程创建和销毁)
linux·运维·服务器
-SGlow-6 小时前
MySQL相关概念和易错知识点(2)(表结构的操作、数据类型、约束)
linux·运维·服务器·数据库·mysql
代码改变世界ctw7 小时前
Linux内核设计与实现 - 第14章 块I/O层
linux·运维·服务器
Dreams_l7 小时前
网络编程2(应用层协议,传输层协议)
运维·服务器·网络