探索Docker Compose

寸有所长,尺有所短

单机单容器,docker够用
单机多容器,要docker compose
多机多容器,上K8S

为什么要有Docker Compose多容器部署?为了多快好省,总结起来就是为了偷懒

在使用 docker Compose之前,我们是怎么部署多个容器的APP应用的呢???
要从Dockerfile build image 或者 Dockerhub 拉取image
要创建多个container
要管理这些container(启动停止删除)
多容器部署的APP太恶心了(每次都这么多步骤)

docker Compose到底是什么
docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具
可使用 YAML 配置应用程序的服务
使用一个命令,可从配置中创建并启动所有服务

docker Compose 适用于所有环境:生产、暂存、开发、测试及 CI 工作流。还具有用于管理应用程序整个生命周期的命令:
启动、停止和重建服务
查看运行服务的状态
流式传输正在运行的服务的日志输出
在服务上运行一次性命令

docker yml 文件有一个默认在名字叫docker-compose.yml,其中有三个重要的概念:
Services
Networks
Volumes

Services
一个Services代表一个container,这个container可以从dockerhub registory的image来创建,或者从本地的Dockerfile build 出来的image来创建
Service的启动类似docker run,我们可以给其指定network和volume,所以可以给service指定network和Volume的引用

安装Docker Compose

// 安装dockers compose
apt install docker-compose
// 查看版本检查是否安装成功
docker-compose -v

在当前目录下创建YML文件

nano ng.yml

输入以下内容:

version: '3'
services:
  web:
    # 对象键值对冒号后要跟一个空格
    image: nginx
    ports:
      - 9998:80

使用docker compose 启动容器

root@debian:~# docker-compose -f ng.yml up -d
Creating network "root_default" with the default driver
Creating root_web_1 ... done

使用浏览器加上端口就可以访问。

关闭容器

root@debian:~# docker-compose -f ng.yml stop
Stopping root_web_1 ... done

其他命令

docker-compose up -d    #以后台方式启动运行
docker-compose ps   # 查看启动的服务App
docker-compose up --help
docker-compose down  #关闭删除
docker-compose build    #

其他:
如果把刚刚的ng.yml名称改为docker-compose.yml
可以直接用命令docker-compose up -d 启动容器。上面的-f参数是指定yml文件名称。

root@debian:~# ls
docker  docker-compose.yml
root@debian:~# docker-compose up -d
Creating network "root_default" with the default driver
Creating root_web_1 ... done
root@debian:~# docker-compose down
Stopping root_web_1 ... done
Removing root_web_1 ... done
Removing network root_default

命令使用说明

build 构建(重新构建)项目中的服务容器
config 检测 compose 文件的错误
up 启动服务
down 停止容器
images 列出项目中所包含的镜像
logs 查看服务容器的日志
kill 发送 SIGKILL 信号来强制停止服务容器
port 查看某个容器端口所映射的公共端口
ps 列出项目中目前的所有容器
restart 重启项目中的服务
rm 删除所有停止状态的服务容器
run 在指定服务上运行一个命令
scale 设置指定服务运行的容器个数
stop 停止处于运行状态的容器
start 启动被 stop 的服务容器
top 查看各个服务容器内运行的进程
pause 暂停一个服务容器
unpause 恢复处于暂停状态中的服务
docker-compose 术语:

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

Leave a Reply

Your email address will not be published. Required fields are marked *