[docker]4. docker-compose简单实用

[docker]4. docker-compose简单实用

我们知道,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

install-succ

2.2 停止

停止有两种方式:

docker-compose stopdocker-compose down --volumes

  • 前者是直接停止容器编排的集群
  • 而后者还会顺带回收声明的volumes ,如若加上--rmi参数,还会把声明使用的镜像给清理掉。

三. 通过docker-file启动

如果需要通过dockerfile来启动编排容器的话,只要把docker-compose.yml中的images改成build命令即可:

...
services:
   db:
     build: .
...
Weidan

评论已关闭。