1、Docker Compose 简介
Docker-Compose项目是Docker官方开源的项目,实现对Docker容器集群的快速编排。Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。
Docker Compose 可以通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Docker Compose V1项目是由Python编写,Docker Compose V2已经用Golang语言从头开始完全重写,调用Docker服务提供的API来对容器进行管理。则只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。
2、Docker Compose安装
Mac 的 Docker 桌面版和 Docker Toolbox 已经包括 Compose 和其他 Docker 应用程序,则 Mac 用户不需要单独安装 Compose。Windows 的 Docker 桌面版和 Docker Toolbox 已经包括 Compose 和其他 Docker 应用程序,则 Windows 用户不需要单独安装 Compose。Linux安装Docker Compose可以直接下载二进制包来使用,也可以用过命令下载安装Docker Compose。
1)下载二进制包
下载地址:https://github.com/docker/compose/releases
2)使用命令下载安装
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.8.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
注意:要安装其他版本的Docker Compose,替换 1.8.0成需要安装的版本。
3)验证是否安装成功
$ docker-compose --version
docker-compose version 1.8.0, build f3628c7
3、Docker Compose使用
1)创建docker-compose.yml 配置文件
vim docker-compose.yml
内容如下:
version: '2' services: web: image: dockercloud/hello-world ports: - 8080 networks: - front-tier - back-tier redis: image: redis links: - web networks: - back-tier lb: image: dockercloud/haproxy ports: - 80:80 links: - web networks: - front-tier - back-tier volumes: - /var/run/docker.sock:/var/run/docker.sock networks: front-tier: driver: bridge back-tier: driver: bridge
2)通过docker-compose命令运行docker-compose.yml文件
sudo ./docker-compose up
4、docker-compose常用命令
1)启动所有服务
docker-compose up
注意:需要后台启动使用docker-compose up -d
-f
指定使用的Compose模板文件,默认为docker-compose.yml:
$ docker-compose -f docker-compose.yml up -d
2)列出项目中目前所有的容器:
docker-compose ps
3)启动已经存在的服务容器
docker-compose start
4)停止正在运行的容器
docker-compose stop
5)重启项目中的服务
docker-compose restart
注意:-t, –timeout TIMEOUT,指定重启前停止容器的超时(默认为10秒)
6)停止和删除容器、网络、卷、镜像
docker-compose down
7)查看服务容器的日志输出
docker-compose logs
8)构建(重新构建)项目中的服务容器
docker-compose build
选项:
–compress 通过gzip压缩构建上下环境
–force-rm 删除构建过程中的临时容器
–no-cache 构建镜像过程中不使用缓存
–pull 始终尝试通过拉取操作来获取更新版本的镜像
-m, –memory MEM为构建的容器设置内存大小
–build-arg key=val为服务设置build-time变量
9)拉取服务依赖的镜像
docker-compose pull
10)删除所有(停止状态的)服务容器
docker-compose rm
选项:
–f, –force,强制直接删除,包括非停止状态的容器
-v,删除容器所挂载的数据卷
11)指定服务上执行一个命令
docker-compose run
5、dockerfile、docker compose和k8s区别
1)dockerfile
从无到有的构建镜像,包括依赖环境、代码、中间件、数据库等。
2)docker-compose(docker-compose.yml )
是单机管理,编排容器,可以同时管理多个 container ,将多个相关的容器一次性启动,
3)k8s
多节点管理Docker