序
我们知道,Docker可以把环境+应用打包成一个镜像,然后通过镜像注入参数去启动无数个容器。然而,我们之前都是一个一个去操作的,当我们需要操作多个镜像并且是多态机器上面部署的时候,这种方式会显得特别无力。所以docker-compose
的诞生就是为了解决这个问题。
一. 安装
1.1MacOS
OSX系统相对简单,只要安装了docker
软件,那么docker-compose
就已经自带在其中。可以通过docker-compose —version
查看。
1.2 Linux
# 下载最新版本的compose
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
# 让命令有执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 测试
docker-compose --version
docker-compose version 1.21.2, build 1719ceb
二. 使用
2.1 启动集群
简单的来说,docker-compose
就是通过编写一个docker-compose.yml
文件,命令读取文件里面指定要做的事情,然后帮你一起做了,类似于批量操作。
那么,这个yml
文件怎么写就是主要的了。
这里举个例子,还是之前说过的wordpress
+mysql
的例子。这时候我们不再一个一个的启动,而是通过编写这么一个脚本,一个命令实现全部的启动。
编写yml
文件:
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
运行docker-compose up -d
命令。-d
代表直接从中央仓库里面拉下来,然后级联启动。
注意:此时没有指定文件名称,名称应该是:docker-compose.yml
当看到如下的输出时,即表示成功启动。
Digest: sha256:15e2a017680bf1fadbaa0c9513b95ec2aba42e505ae93a394d766b4bdccc4ab2
Status: Downloaded newer image for wordpress:latest
Creating compose_db_1 ... done
Creating compose_wordpress_1 ... done
请求localhost:8000
:
2.2 停止
停止有两种方式:
docker-compose stop
和docker-compose down --volumes
- 前者是直接停止容器编排的集群
- 而后者还会顺带回收声明的
volumes
,如若加上--rmi
参数,还会把声明使用的镜像给清理掉。
三. 通过docker-file启动
如果需要通过dockerfile
来启动编排容器的话,只要把docker-compose.yml
中的images
改成build
命令即可:
...
services:
db:
build: .
...