Docker-compose简介

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose项目目前在Github上进行维护,其定位是“Defining and running complex applications with Docker”,前身是Fit,因而也兼容Fit的模板文件

Dockerfile可以让用户管理一个单独的应用容器,而Compose则允许用户在一个模板(YAML格式)中定义一组相关联的应用容器(这组容器被称为一个“project”,即项目),例如一个Web应用容器再加上一个数据库容器构成的一个项目。

Compose项目使用Python编写,实际上通过调用Docker的API实现其功能。

Docker-compose安装

Mac/Windows系统

Docker-Desktop for Mac/Windows自带docker-compose项目的二进制文件,安装Docker-Desktop后可直接使用:

​docker-compose --version​

[Docker学习笔记补充] docker-compose项目_github

Linux系统

方法一:二进制包安装

在 ​​https://github.com/docker/compose/releases​​ 可以找到对应的二进制包

下载完成后在对应目录执行该安装文件即可(执行前需要给二进制文件执行权限)

方法二:pip安装

Docker-compose也可以使用pip安装(注意要使用pip3安装):​​sudo pip3 install docker-compose​

Docker-compose卸载

二进制文件安装删除对应的二进制文件即可卸载

pip安装执行​​sudo pip3 uninstall docker-compose​​即可卸载

Docker-compose使用

使用docker-compose.yml搭建项目

案例:搭建Vulhub漏洞复现环境

下载漏洞复现环境:​​wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zip​

解压漏洞环境: ​​unzip ./vulhub-master.zip​

进入目录:​​cd vulhub-master/​

进入fastjson 1.2.47 RCE目录:​​cd fastjson/1.2.47-rce​

自动化编译环境:​​docker-compose build​​ 目录下一定要有​​docker-compose.yml​​文件

启动整个环境:​​docker-compose up​​ 也可以加上​​-d​​参数来使容器后台运行

[Docker学习笔记补充] docker-compose项目_二进制文件_02

可以看到我们的环境已经成功搭建:

[Docker学习笔记补充] docker-compose项目_desktop_03

docker-compose.yml 编写

//待更新

Docker-compose命令

查看某个命令的具体帮助:​​docker-compose [COMMAND] --help​

常用选项:

​--verbose​​ 输出更多调试信息

​--version​​ 查看版本信息

​-f/--file FILE​​ 使用特定的docker-compose模板文件,默认为docker-compose.yml

​-p/--project-name NAME​​ 指定项目名称,默认使用搭建目录名称

常用命令:

​docker-compose build​​ 构建或重构一个新的服务,服务一旦构建后带上一个标记名,可以随时在项目目录下运行该命令来构建服务

​docker-compose help​​ 获取帮助

​docker-compose kill​​ 通过发送SIGKILL信号来中止容器,也可以使用​​-s SIGN​​来发送指定命令

​docker-compose logs​​ 查看服务的输出

​docker-compose port​​ 打印绑定的公共端口

​docker-compose ps​​ 列出所有容器

​docker-compose pull [IMAGES]​​ 拉取一个镜像

​docker-compose rm [IMAGES]​​ 删除一个镜像

​docker-compose run [IMAGES] [COMMAND]​​ 启动一个服务并执行特定命令

​docker-compose scale SERVICE=NUMBER​​ 启动多个同一服务的容器

​docker-compose stop​​ 停止正在运行的项目(多个容器),但不删除项目

​docker-compose start​​ 启动停止运行的项目

​docker-compose up​​ 构建、创建、启动、链接一个项目相关的容器,可以使用​​-d​​参数使其在后台运行,并且退出时该项目所有的容器都会停止