运维实战 容器部分 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的主要内容,如果未能解决你的问题,请参考以下文章

运维实战 容器部分 Docker网络

运维实战 容器部分 Docker入门简介

运维实战 容器部分 Docker数据卷

运维实战 容器部分 Docker仓库

运维实战 容器部分 Docker Swarm

运维实战 容器部分 Docker Machine