Docker-Compose

简介

Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

使用场景

通过Dockerfile的学习,我们知道使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

Compose 中有两个重要的概念:

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

Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。

一、安装Docker Compose

# 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

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

三、使用docker compose

术语

首先介绍几个术语。

  • 服务 ( service ):一个应用容器,实际上可以运行多个相同镜像的实例。
  • 项目 ( project ):由一组关联的应用容器组成的一个完整业务单元。

可见,一个项目可以由多个服务(容器)关联而成, Compose 面向项目进行管理。

Docker-compose创建容器

通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

yml格式描述:

1、yml文件以缩进代表层级关系
2、缩进不允许使用tab只能使用空格
3、空格的个数不重要,只要相同层级的元素左对齐即可(建议2个)
4、大小写敏感
5、数据格式为,名称:(空格)

实例

version: '3.1'
services:
  mysql: # 服务的名称
    restart: always # 只要docker启动,容器会随着启动
    image: daocloud.io/library/mysql:5.7.6 # 指定镜像路径信息(默认官方镜像地址)
    container_name: mysql-3306 # 指定容器名称 --name
    ports:
      - 3306:3306 #指定端口号映射
    environment:
      MYSQL_ROOT_PASSWORD: root #指定MYSQL ROOT用户的密码
      TZ: Asiz/Shanghai #指定时区
    volumes:
      - /opt/docker_mysql_tomcat/mysql/data:/var/lib/mysql #映射mysql的数据目录到宿主机,保存数据
      - /opt/docker_mysql_tomcat/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
    #把mysql的配置文件映射到容器的相应目录
  tomcat: # 服务的名称
    restart: always # 只要docker启动,容器会随着启动
    image: daocloud.io/library/tomcat:8.5.15-jre8 # 指定镜像路径信息(默认官方镜像地址)
    container_name: tomcat-8080 # 指定容器名称 --name
    ports:
      - 8080:8080 #指定端口号映射
    environment:
      TZ: Asiz/Shanghai #指定时区
    volumes:
      - /opt/docker_mysql_tomcat/tomcat/webapps:/usr/local/tomcat/webapps #映射tomcat的工作目录到宿主机,保存数据
      - /opt/docker_mysql_tomcat/tomcat/logs:/usr/local/tomcat/logs #把tomcat的日志文件映射到容器的相应目录

启动(执行命令创建容器)(需要在docker-compose.yml同级目录)

docker-compose up -d

默认执行的文件名:docker-compose.yml(且需要在当前上下文路径中) 。如果说文件名不是默认的需要使用下面的指令:

docker-compose -f 文件名.后缀名 up –d

常用命令以及示例

#1 基于docker-compose.yml启动管理容器
docker-compose up -d
#2 关闭或删除容器
docker-compose down #关闭并删除容器
docker-compose stop #关闭容器
#3 开启容器
docker-compose start
#4 查看由docker-compose管理的容器
docker-compose ps
#5 查看日志
docker-compose logs -f

docker-compose up -d mysql 构建启动mysql容器
docker-compose exec mysql bash 登录到mysql容器中
docker-compose down 删除所有mysql容器,镜像
docker-compose ps 显示所有容器
docker-compose restart mysql 重新启动mysql容器
docker-compose run --no-deps --rm php-fpm php -v 在php-fpm中不启动关联容器,并容器执行php -v 执行完成
后删除容器
docker-compose build mysql 构建镜像 。
docker-compose build --no-cache mysql 不带缓存的构建。
docker-compose logs mysql 查看mysql的日志
docker-compose logs -f mysql 查看mysql的实时日志
docker-compose config -q 验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配
置错误,输出错误信息。
docker-compose events --json mysql 以json的形式输出mysql的docker日志
docker-compose pause mysql 暂停mysql容器
docker-compose unpause mysql 恢复mysql容器
docker-compose rm mysql 删除容器(删除前必须关闭容器)
docker-compose stop mysql 停止mysql容器
docker-compose start mysql 启动mysql容器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值