6.Docker Compose

简介: 6.Docker Compose

服务编排

微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。

  • 要从Dockerfile build image或者去dockerhub拉取image
  • 要创建多个container
  • 要管理这些container (启动停止删除)服务编排:按照一定的业务规则批量管理容器

Docker Compose

Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止。使用步骤:

  1. 利用Dockerfile定义运行环境镜像
  2. 使用docker-compose.yml定义组成应用的各服务
  3. 运行docker-compose up启动应用

安装Docker Compose

bash

复制代码

# Compose目前已经完全支持Linux、Mac os和windows,在我们安装Compose之前,需要先安装Docker。下面我们以编译好的二进制包方式安装在Linux系统中。
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname-s`-`uname -m` -o /usr/local/bin/docker-compose
# 设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
# 查看版本信息
docker-compose -version

卸载Docker Compose

bash

复制代码

# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-composel

push docker Compose

要先验证登录docker

bash

复制代码

docker login
# 接下来要输入用户名和密码

还是一个一个上传,因为如果有一个命令可以让所有的镜像一起上传的话,是有很多重复镜像(例如mysql,nginx)等

bash

复制代码

docker tag docker-compose-server cfddfc/whpu:server
docker tag docker-compose-web cfddfc/whpu:web
docker push cfddfc/whpu:server
docker push cfddfc/whpu:web

坑点!

在本地利用docker push命令向Docker Hub上传镜像,即使已经docker login登录成功,依然push出错:

vbnet

复制代码

denied: requested access to the resource is denied

原因发布镜像时,需要将image重新命名,命名格式应为: dockerhub用户名/镜像名

使用docker compose编排nginx+springboot项目

  1. 创建docker-compose目录

bash

复制代码

mkdir ~/docker-compose
cd ~/docker-compose
  1. 编写docker-compose.yml文件

yaml

复制代码

version: '3'
services:
  nginx:
    image: nginx  # 镜像名称
    ports:
      - 80:80  # yaml里面数组的表现形式
    links:
      - app # 对应下面的app
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d  # 挂载的目录
  app:
    image: app
    expose:
      - "8080"
  1. 创建./nginx/conf.d目录mkdir -p ./nginx/conf.d
  2. 在./nginx/conf.d目录下编写itheima.conf文件

ini

复制代码

server {
  listen 80;
  access_log off;
  location / {
    proxy_pass http://app: 8080; # 配置反向代理,访问80端口自动到8080上
  }
}
  1. 在~/docker-compose目录下使用docker-compose启动容器docker-compose up
  2. 测试访问http://192.168.149.135/hello

将卷与 Docker Compose 一起使用

以下示例显示了具有卷的单个 Docker 撰写服务:

yaml

复制代码

services:
  frontend:
    image: node:lts
    volumes:
      - myapp:/home/node/app
volumes:
  myapp:

首次运行docker compose up会创建一个卷。Docker 在随后运行命令时重复使用相同的卷。

您可以使用docker volume createdocker-compose.yml直接在“撰写”外部创建卷 然后在里面引用它,如下所示:

yaml

复制代码

services:
  frontend:
    image: node:lts
    volumes:
      - myapp:/home/node/app
volumes:
  myapp:
    external: true


相关文章
|
7天前
|
Docker Python 容器
python检测docker compose文件是否正确
python检测docker compose文件是否正确
|
22天前
|
运维 Docker 微服务
掌握 Docker Compose:简化你的多容器应用部署
在微服务架构和容器化技术普及的今天,管理多容器部署变得颇具挑战。Docker Compose 通过一个 YAML 文件定义和运行多容器应用,简化了部署和运维。本文介绍其基本概念、使用方法及优势,包括服务、项目、卷和网络等核心概念,并提供从安装到管理服务的详细步骤,助你轻松掌握 Docker Compose,提高开发效率和应用运维质量。
|
2月前
|
JSON JavaScript 开发者
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
【8月更文挑战第7天】Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
|
8天前
|
Docker 容器
7-7|salt检测docker compose文件是否正常
7-7|salt检测docker compose文件是否正常
|
8天前
|
运维 监控 Docker
掌握 Docker Compose:简化你的多容器应用部署
在微服务架构和容器化技术日益普及的今天,管理多个容器的部署和运维变得颇具挑战。Docker Compose 通过一个 YAML 文件定义和运行多容器 Docker 应用,极大地简化了这一过程。本文介绍了 Docker Compose 的基本概念、使用方法及其优势,包括简化配置、一键部署、易于版本控制和环境一致性。通过具体示例展示了如何安装 Docker Compose、创建 `docker-compose.yml` 文件并管理服务。掌握 Docker Compose 可显著提高开发效率和应用运维质量。
|
2月前
|
Ubuntu Shell 应用服务中间件
在Ubuntu 14.04上安装和使用Docker Compose的方法
在Ubuntu 14.04上安装和使用Docker Compose的方法
41 1
|
2月前
|
Kubernetes Linux Docker
【Azure 应用服务】使用Docker Compose创建App Service遇见"Linux Version is too long. It cannot be more than 4000 characters"错误
【Azure 应用服务】使用Docker Compose创建App Service遇见"Linux Version is too long. It cannot be more than 4000 characters"错误
|
2月前
|
开发工具 git Docker
深入挖掘Docker Compose
【8月更文挑战第24天】
28 0
|
3月前
|
关系型数据库 Linux 数据库
如何在Linux云服务器上通过Docker Compose部署安装Halo,搭建个人博客网站?
本文指导用户如何在Linux服务器上使用Docker Compose部署Halo博客系统。首先确保拥有Linux服务器并安装Docker及Docker Compose。接着创建文件夹(例如`~/halo`),用于存放所有Halo相关数据。可以选择不同的Halo Docker镜像源,推荐使用具体版本而非`latest`标签以避免误操作。示例中提供了三种`docker-compose.yaml`配置方法:Halo+PostgreSQL、Halo+MySQL以及使用默认的H2数据库。每种配置都包括网络设置、健康检查和环境变量。
115 1
|
3月前
|
Java Nacos Docker
使用docker compose 编排微服务发布
使用docker compose 编排微服务发布
45 3
下一篇
无影云桌面