Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Docker折腾记: (2)基于docker-compose构建yapi容器

Docker折腾记: (2)基于docker-compose构建yapi容器

作者头像
CRPER
发布于 2018-08-28 09:19:34
发布于 2018-08-28 09:19:34
1.4K00
代码可运行
举报
文章被收录于专栏:CRPER折腾记CRPER折腾记
运行总次数:0
代码可运行

前言

第一篇: Docker折腾记: (1)构建yapi容器,从构建发布到可用

这篇主要是用docker-compose来编排我们第一篇的内容,顺便谈谈docekr-compose的好处

docker-compose是什么? 简言之就是一个容器编排工具;


前置基础

在第一篇的基础上,你还要懂得yaml的写法,比如数组的写法,对象的写法等等

写法大体和json差不多,但是可表达的东西更多

一般用pip(python的一个包管理工具)就可以安装最新的docker-compose版本,

喜欢折腾的也可以自行编译维护


compose.yml

注意事项

  • yaml对缩进非常严格,一个空格都能造成错误
  • docker-compose
    • 冒号后面需要跟随空格,除了卷或者端口的映射
    • 独立的区域,比如volume,networks这种待映射的值不能以数组的形式,必须为mapping(映射,就是跟随冒号)
    • 直接拼接映射的portvolume需要用双引号包括
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 使用版本号为3.6
version: '3.6'
services:
  # 声明yapi服务
  yapi:
    # 选择的镜像
    image:  crper/yapi:latest
    # 容器的自定义名字,也就是命令行的--name
    container_name:  yapi
    # 不用: 则只是暴露内部端口,用了就是映射外部访问的接口 , -p
    ports:
      - "3000:3000"
    # 单个主机上用bridge(桥接)居多,Swarm(集群)上的overlay, 还有几个模式,比如host
    networks:
      - yapi
    # 启动的时候依赖哪个镜像
    depends_on:
      - yapi-mongo
    # 设置容器的DNS服务
    dns:
      - 114.114.114.114
      - 8.8.8.8
    # 容器重启策略,这里是开启了任何错误都会默认重启
    restart:  always
  # mongo服务
  yapi-mongo:
    restart:  always
    image:  mongo:latest
    networks:
      - yapi
    container_name:  yapi-mongo
    ports:
      - "27017:27017"
    # 映射卷
    volumes:
      - "yapi-mongo:/data/db"

# 自定义的网络名
networks:
  yapi:

# 待映射的volume
volumes:
  yapi-mongo:



# 配置还有很多,比如什么子网,传参,日志输出,dns,临时文件夹,网络模式,资源分配等等
# 还能直接在里面构建镜像,而不用去用现有的
# 参数很多,所以要熟悉的配置也是比较麻烦的,这种东西只能一点点的去总结经验
# 具体看官方网站对compose的介绍 :  https: //docs.docker.com/compose/compose-file/



命令行操作

docker-compose只是个编排工具!!!!要记住这个;核心还是依赖docker;

因为你启动后,docker的相关命令还是可以查看,停止乃至删除容器;

编排工具里面的封装的停止这些,可以理解为"队列",就是批量帮你处理你编排文件的容器

docker-compose的命令行用起来和docker差不多,compose针对的是编排,而docker是单一容器

  • 创建容器实例并启动

docker-compose up: 这个命令会执行docker-compose.yml,根据规则全部执行完毕(没有错误的情况下)

若是不想卡在终端一直展示输出,(用-d)守护进程的模式来启动即可

当然,你若是配置文件不是这个名字,需要用-f来指定compose的启动文件

  • 停止且删除容器

docker-compose down : 这个会把当前配置文件启动的服务依次干掉,并移除

  • 暂停某个服务: docker-compose stop [options] services
  • 删除已经停止的容器:docker-compose rm
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  build              Build or rebuild services
  bundle             Generate a Docker bundle from the Compose file
  config             Validate and view the Compose file
  create             Create services
  down               Stop and remove containers, networks, images, and volumes
  events             Receive real time events from containers
  exec               Execute a command in a running container
  help               Get help on a command
  images             List images
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pull service images
  push               Push service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  top                Display the running processes
  unpause            Unpause services
  up                 Create and start containers
  version            Show the Docker-Compose version information

看这些描述就能大体知道做什么的了..可以看到实例的状态,日志,进入容器等等

比如docker-compose ps(查看服务的状态,运行,停止!)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   Name                Command              State     Ports
-----------------------------------------------------------
yapi         entrypoint.sh                 Exit 137
yapi-mongo   docker-entrypoint.sh mongod   Exit 0

比如docker-compose.yml用到了哪些镜像, docker-compose images

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Container    Repository    Tag       Image Id      Size
--------------------------------------------------------
yapi         crper/yapi   latest   ae69ea846d69   472 MB
yapi-mongo   mongo        latest   91a642e82a2a   361 MB

比如删除停止的服务,docKer-compose rm,不带参数会有交互式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
By default, anonymous volumes attached to containers will not be removed. You
can override this with `-v`. To list all volumes, use `docker volume ls`.

Any data which is not in a volume will be lost.

Usage: rm [options] [SERVICE...]

Options:
    -f, --force   Don't ask to confirm removal(强制删除,不交互)
    -s, --stop    Stop the containers, if required, before removing(停止容器,如果需要可以在此之前删除)
    -v            Remove any anonymous volumes attached to containers(删除任何链接到容器的匿名卷)
    -a, --all     Deprecated - no effect.(已经废除,无效)


总结

docker-compose可以把多服务器的编排集中式的声明到一个配置文件,而免去了我们传入大量的参数到启动命令行;

管理也是非常方便,可以理解为队列管理,可以统一性的处理.大大提高了维护的效率

所以,熟练的使用compose和能自己封装docker容器,会让我们的开发更好的维护,

不管是线上还是线下,容器对于多环境的处理是很赞的;

比如内部服务器的各种服务,测试环境,开发环境之间的信息隔离;

有不对之处请留言,会及时修正..谢谢阅读

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年07月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Docker折腾记: (1)构建yapi容器,从构建发布到可用
Docker/Linux/Node基础, 比如Linux和docker的常用命令,shell的编写等等
CRPER
2018/08/28
2.4K0
Docker折腾记: (1)构建yapi容器,从构建发布到可用
Docker重学系列之Docker Compose
这样挨个启动容器,是不是很烦人,能不能写个脚本,按照依赖顺序依次启动相应容器呢?
大忽悠爱学习
2022/05/10
1.7K0
Docker重学系列之Docker Compose
Docker 容器编排利器 Docker Compose
Docker Compose 项目是 Docker 官方的开源项目,Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)」,来源于之前的 Fig 项目,使用 Python 语言编写。负责实现对 Docker 容器集群的快速编排。项目地址为:https://github.com/docker/compose/releases
贾维斯Echo
2024/03/26
6240
Docker 容器编排利器 Docker Compose
【重识云原生】第六章容器6.1.11节——docker-compose容器编排
        随着开发者对Docker了解的深入,使用其进行分布式部署变得复杂。开发者需要在开发,测试以及生产环境中的可移植应用,这些应用需要在不同的平台提供商之间迁移,比如在不同的云平台或者私有数据中心部署,同时,应用应该是可组合的,一个应用可以分解为多个服务。 Docker公司在2014年12月发布了三款用于解决多容器分布式软件可移植部署的问题。
江中散人_Jun
2022/09/28
2.1K0
【重识云原生】第六章容器6.1.11节——docker-compose容器编排
docker-compose 使用介绍
Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。
大江小浪
2020/04/16
1.2K0
Docker入门-docker compose的使用
Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。其代码目前在https://github.com/docker/compose 上开源。
小码农薛尧
2019/08/21
1.3K0
Docker-Compose的一些常用命令
Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡。 Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。 使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。 Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。 Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。
javascript.shop
2019/09/04
19.2K0
利用Docker Compose快速搭建本地测试环境
Compose是一个定义和运行多个Docker应用的工具,用一个YAML(dockder-compose.yml)文件就能配置我们的应用。然后用一个简单命令就能启动所有的服务。Compose编排Docker服务的优势是在单机测试场景,因为Compose的安装简单,开箱即用,yaml的定义也复用了Dockerfile的语法。但是集群中容器编排服务还是推荐K8S或者Mesos+Marathon这样的编排调度系统。
用户2937493
2019/09/11
1.3K0
利用Docker Compose快速搭建本地测试环境
Docker Compose
Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。前面我们使用Docker的时候,定义 Dockerfile文件,然后使用 docker build、docker run等命令操作容器。
清风穆云
2021/08/09
9970
docker学习(7) docker-compose使用示例
上一回学习了如何利用docker搭建一个mysql + java service + nginx,总共4个docker容器,如果采用docker run的方式一个一个容器去创建十分麻烦。为了能更高效的批量创建容器,docker推出了docker-compose工具,只需要定义一个docker-compose.yml文件即可快速搞定一组容器的创建,仍然以上一回的例子演示: mysql: image: daocloud.io/yjmyzz/mysql-osx:latest volumes:
菩提树下的杨过
2018/01/18
8060
容器技术|Docker三剑客之Compose
docker技术是基于Linux内核的cgroup技术实现的,那么问题来了,在非Linux平台上是否就不能使用docker技术了呢?答案是可以的,不过显然需要借助虚拟机去模拟出Linux环境来。 docker-machine就是docker公司官方提出的,用于在各种平台上快速创建具有docker服务的虚拟机的技术,甚至可以通过指定driver来定制虚拟机的实现原理(一般是virtualbox)。
民工哥
2020/09/16
7790
容器技术|Docker三剑客之Compose
使用 python 替代 docker compose 编排容器
docker compose 是 docker 的容器编排工具,它是基于 YAML 配置,YAML 是一种配置文件格式,支持传递环境变量,但是对于复杂的容器编排显得力不从心。
netkiller old
2021/10/20
1K0
Docker三剑客之docker-compose
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。
分母为零
2019/07/05
1.2K0
附003.Docker Compose命令详解
-f参数为可选,也可使用-f提供多个配置文件,当使用多个文件时,Compose会将它们合并为一个配置。Compose按照提供文件的顺序构建配置。后续文件覆盖并添加到其前任文件中。
木二
2019/07/26
2.3K0
066. Docker Compose 集成式应用组合
1. Compose 简介 ---- Compose 项目是 Docker 官方的一个开源项目,负责实现对 Docker 容器集群的快速编排。代码位置:https://github.com/docker/compose。 Compose 定位是”定义和运行多个 Docker 容器的应用“,其前身是开源项目 Fig。 Compose 允许用户通过一个单独的 docker-compose.yml 模板文件来定义一组相关联的应用容器为一个项目(project)。 Compose 下两个重要的概念: 服务(
山海散人
2021/03/03
9530
使用docker-compose搭建lnmpr环境
docker-compose搭建PHP8.1(含扩展)+ Nginx1.22 + MySQL8.0 + Mongo6.0 + Redis6.0 + Swoole2.0
OwenZhang
2022/11/17
1.4K0
使用docker-compose搭建lnmpr环境
Docker进阶之01-Docker Compose编排工具
可以按项目为单位编排多个Docker容器,Python语言开发,底层调用Docker的API接口。 Docker Compose解决的是快速启停多个容器,以及容器之间依赖关系的问题。 Docker Compose可以很方便地实行容器互联。
编程随笔
2022/09/16
7460
docker compose
docker compose是官方编排项目,负责快速在集群中部署分布式应用,负责实现对docker容器集群的快速编排
dogfei
2020/07/31
7550
docker compose
docker-compose常用命令
docker-compose [-f …] [options] [COMMAND] [ARGS…]
问天丶天问
2019/08/29
1.6K0
使用 Docker 在 Linux 上托管 ASP.NET Core 应用程序
在阅读本文之前,您必须对 Docker 的中涉及的基本概念以及常见命令有一定了解,本文侧重实战,不会对相关概念详述。
Esofar
2019/05/14
2K0
使用 Docker 在 Linux 上托管 ASP.NET Core 应用程序
相关推荐
Docker折腾记: (1)构建yapi容器,从构建发布到可用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验