docker compose

简介

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack中的 Heat 十分类似。

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

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

Compose 中有两个重要的概念:

  • 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。

  • 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

下载与安装

1、命令1(下载):

                

sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2、命令2(授权):

sudo chmod +x /usr/local/bin/docker-compose

3、查看是否安装成功

docker-compose --version

 4、卸载

sudo rm /usr/local/bin/docker-compose

docker compose 模板文件指令

version: "3.2"

services:
  tomcat01: #服务名称
    container_name: tomcat01 # 相当于run 的 --name
    image: tomcat:8.0-jre8 #使用哪个镜像  相当于run image
    ports:  #用来完成host与容器的端口映射关系  相当于run -p
      - "8080:8080"
    volumes: #完成宿主机与容器中目录数据卷共享  相当于run -v
      #- /root/apps:/usr/local/tomcat/webapps #使用自定义路径映射
      - tomcatwebapps01:/usr/local/tomcat/webapps
    networks: #代表当前服务使用哪个网络桥     相当于run --networ
      - hello

  tomcat02: #服务名称
    container_name: tomcat02
    image: tomcat:8.0-jre8 #使用哪个镜像
    ports:  #用来完成host与容器的端口映射关系
      - "8081:8080"
    volumes: #完成宿主机与容器中目录数据卷共享
      #- /root/apps:/usr/local/tomcat/webapps #使用自定义路径映射
      - tomcatwebapps02:/usr/local/tomcat/webapps
    networks: #代表当前服务使用哪个网络桥
      - hello

  mysql:
    image: mysql:5.7.32
    container_name: mysql
    ports:
      - "3307:3306"
    volumes:
      - mysqldata:/var/lib/mysql
      - mysqlconf:/etc/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
    networks:
      - hello

  redis:
    image: redis:5.0.10
    container_name: redis
    ports:
      - "6379:6379"
    volumes:
      - redisdata:/data
    networks:
      - hello
    command: "redis-server --appendonly yes" #run 镜像之后用来覆盖容器内容默认命令




volumes:  #声明上面服务所使用的自动创建的卷名
  tomcatwebapps01: #声明指令的卷名  compose自动创建该卷名但是会在之前加入项目名
    external:    #使用自定义卷名
      false       #true确定使用指定卷名  注意:一旦使用外部自定义卷名启动服务之前必须手动创建
  tomcatwebapps02:
  mysqldata:
  mysqlconf:
  redisdata:

networks: #定义服务用到桥
  hello: #定义上面的服务用到的网桥名称 默认创建就是 bridge
    external:
      true   #使用外部指定网桥  注意:网桥必须存在

docker compose 命令

模板指令和命令的区别:

模板指令:用来书写在docker-compose.yml文件中指令称之为模板指令,用来为服务进行服务的
命令:用来对整个docker-compose.yml对应的这个项目操作,书写docker-compose命令之后命令

简单就是一个在文件中操作,一个在文件外操作

1、up指令

启动docker compose服务

docker-compose up

启动docker compose服务,在后台启动

docker-compose up -d

2、down指令

关闭docker compose 服务

docker-compose down

3、exec指令

进入指定的容器,4:进入Redis容器

docker-compose exec redis(docker-compose.yml中的声明服务ID) base

4、ps指令

列出项目中目前的所有容器。

docker-compose ps

列出项目中目前的所有容器的ID,-q 只打印容器的 ID 信息

docker-compose ps -q

5、restart 指令

重启docker-compose服务,没有服务ID就重启项目中的所有服务。

docker-compose restart 服务ID

6、rm指令

删除服务

删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop 命令来停止容器。

docker-compose rm 服务ID

-f 强制直接删除,包括非停止状态的容器。一般尽量不要使用该选项。

docker-compose rm -f 服务ID

-v 删除容器所挂载的数据卷。

docker-compose rm -v 服务ID

7、start 指令

启动已经存在的服务容器。

docker-compose start 服务ID

8、stop 指令

停止已经处于运行状态的容器,但不删除它。

通过 docker-compose start 可以再次启动这些容器。

选项:-t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)。

docker-compose stop 服务ID

9、top 指令

查看各个服务容器内运行的进程。

docker-compose top

10、unpause 指令

恢复处于暂停状态中的服务

docker-compose unpause 服务ID

11、pause 指令

暂停服务容器

docker-compose pause

12、logs 指令

查看服务日志

docker-compose logs 服务ID

第一个docker-compose程序

1.创建目录hello

2.进入hello目录,创建文件docker-compose.yml

3.编辑文件,使用Tomcat服务

4.启动服务:docker-compose up

5.访问Tomcat

6.配置多个Tomcat服务

7.启动,命令:docker-compose up

8.访问Tomcat

 

结束!!


        要生活得漂亮,需要付出极大忍耐,一不抱怨,二不解释,而在你不知道该干嘛的时候,积极一点总是好的。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值