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
    
相关推荐
Swift社区11 分钟前
【GitLab CI/CD 实践】从 0 到 1 搭建高效自动化部署流程
运维·ci/cd·自动化·gitlab
狂爱代码的码农23 分钟前
docker被“遗忘”的那些参数该如何拯救
容器
梁萌1 小时前
02DevOps基础环境准备
docker·devops·ci·cd
梁萌1 小时前
01什么是DevOps
运维·自动化·devops·ci·cd
吴声子夜歌1 小时前
Linux运维——文件内容查看编辑
java·linux·运维
小锋学长生活大爆炸2 小时前
【教程】docker升级镜像
java·docker·容器·镜像
狂爱代码的码农2 小时前
docker常用命令及案例
容器
大饼酥2 小时前
保姆级教程Docker部署KRaft模式的Kafka官方镜像
docker·容器·kafka
ssrswk93 小时前
通过制作docker镜像的方式在阿里云部署前端后台服务
前端·阿里云·docker
编织幻境的妖3 小时前
关于阿里云 dataworks 运维中心下的任务运维的问题
java·运维·阿里云