运维实战 容器部分 Docker Compose

Posted 洛冰音

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运维实战 容器部分 Docker Compose相关的知识,希望对你有一定的参考价值。

运维实战 容器部分 Docker Compose

简介

一套服务架构很多时候不可能只包括一个应用, 通常包括若干个微服务, 每个微服务又可能需要部署多个实例.

每次进行业务部署都手动操作每个实例显然是不人性化且低效的.

Docker Compose就是为了解决这个问题而出现的.

作为用Python语言编写的一种编排服务, 它可以用于在Docker上运行复杂应用的工具, 批量化的管理应用.

通过编写配置文件, 用户可以定义一个多容器应用并使用一条指令对其进行安装和构建.

Docker Compose 中有两个重要的概念

  • 服务 (service) 一个应用的容器, 实际上可以包括若干运行相同镜像的容器实例.
  • 项目 (project) 由一组关联的应用容器组成的一个完整业务单元, 在 docker-compose.yml文件中定义.

image-20210505231236183

实践

##官方方式
curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

##下载阿里云提供的方式
https://mirrors.aliyun.com/docker-toolbox/linux/compose/1.21.2/
##之后与上文相同

Docker-compose.yml

文件中可能出现以下内容,分别对应不同的需求属性

  • Image指定为镜像名称或镜像 ID,如果镜像在本地不存在, Compose 将会尝试拉取这个镜像.

  • Build指定 Dockerfile 所在文件夹的路径. Compose 将会利用它自动构建这个镜像, 然后使用这个镜像.

  • Command覆盖容器启动后默认执行的命令.

  • Links链接到其它服务中的容器.

  • Ports端口映射.

  • Expose:暴露端口信息.

  • Volumes卷挂载路径设置.

更多属性查阅

举例

WebServer1:
  image: nginx
  volumes:
    - ./WebServer1:/usr/share/nginx/html
    
WebServer2:
  image: nginx
  volumes:
    - ./WebServer2:/usr/share/nginx/html
    
haproxy:
  image: haproxy
  volumes:
    - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
  links:
    - WebServer1
    - WebServer2
  ports:
    - "80:80"
  expose:
    - 80
  • 之后运行即可, 需要注意的是docker-compose命令必须在项目下运行, 也就是当前目录必须要有docker-compose.yml

常用命令

build		构建或重新构建服务
kill		强制停止服务容器
logs		查看服务的输出
port		打印绑定的公共端口
ps			列出所有容器
pull		拉取服务所需镜像
rm			删除停止的服务容器
up			构建并启动容器

以上是关于运维实战 容器部分 Docker Compose的主要内容,如果未能解决你的问题,请参考以下文章