1-Docker - docker-compose

about

Docker Compose是 docker 提供的一个单机版的容器编排工具,用来定义和运行由多个容器组成的应用。
使用 compose,我们可以通过 YAML 文件声明式的定义应用程序的各个服务,并由单个命令完成应用的创建和启动。

安装

这里列出一种安装方式,两行命令搞定:

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

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

# 示例
[root@C data]# sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   638  100   638    0     0    395      0  0:00:01  0:00:01 --:--:--   395
100 11.1M  100 11.1M    0     0  21203      0  0:09:13  0:09:13 --:--:-- 15242
[root@C data]# sudo chmod +x /usr/local/bin/docker-compose

测试:

[root@C data]# docker-compose --version
docker-compose version 1.23.1, build b02f1306

实战

首先,如果没有下面这两个镜像需要先下载:

[root@r ~]# docker pull wordpress:latest
[root@r ~]# docker pull mysql:5.7
  1. 新建一个docker-compose目录,用来存储所有的docker-compose项目,并且在该目录下 创建wordpress项目目录,有关wordpress项目的所有文件都在这目录中;另外,在docker-compose目录,项目彼此是隔离的;然后在wordpress目录中新建docker-compose.yaml配置文件,或者docker-compose.yml,目前,docker-compose只识别yamlyml这两种扩展名的配置文件。
[root@r /]# mkdir -p /docker_data/docker-compse/wordpress
[root@r /]# cd /docker_data/docker-compse/wordpress/
[root@r wordpress]# vim docker-compose.yaml
  1. docker-compose.yaml中填写如下配置信息,注意,配置文件中不能使用TAB来搞缩进!
# version表示Compose文件格式的第3版,也是目前最新的版本,截止2020/04/17
version: "3"

# 服务,可以有多个服务,如下的配置中,将会起两个服务,也就是启动两个容器,db和wordpress两个服务,每个服务可以有自己的配置
services:
    # 第一个服务是mysql的服务, db也是容器名称
    db:
        # 镜像
        image: mysql:5.7
        # 持久化挂载
        volumes:
            - db_data:/var/lib/mysql
        # 当docker服务重启后,同时启动该容器
        restart: always
        # 环境参数配置
        environment:
            MYSQL_ROOT_PASSWORD: somewordpress
            MYSQL_DATABASE: wordpress
            MYSQL_USER: wordpress
            MYSQL_PASSWORD: wordpress
    # 第二个服务是wordpress
    wordpress:
        # 该服务启动之前,需要首先启动db服务
        depends_on:
            - db
        image: wordpress:latest
        volumes:
            - wordpress_data:/var/www/html
        # 端口映射
        ports:
            - "6006:80"
        restart: always
        environment:
            WORDPRESS_DB_HOST: db:3306
            WORDPRESS_DB_USER: wordpress
            WORDPRESS_PASSWORD: wordpress
# 由于上面两个服务都有挂载卷,这里要在全局中声明一下,docker-compose会自动的创建这两个目录
volumes:
    db_data:
    wordpress_data:
  1. wordpress目录启动docker-compose服务
[root@r wordpress]# docker-compose up 
  1. 浏览器就可以访问服务器的ip:6006端口,然后就成功了。
  2. 我们可以看到此时启动的两个容器
[root@r wordpress]# docker ps 
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                              NAMES
88a4a396f5b9        wordpress:latest      "docker-entrypoint.s…"   3 minutes ago       Up 3 minutes        0.0.0.0:6006->80/tcp                               wordpress_wordpress_1_21bbf4af831a
755c2738d850        mysql:5.7             "docker-entrypoint.s…"   3 minutes ago       Up 3 minutes        3306/tcp, 33060/tcp                                wordpress_db_1_bd6975a0dc7b

常用命令

注意,要在项目目录下执行命令,并且这些命令只作用于当前services下的服务(容器)。

  • 使用docker-compose启动服务
# 启动docker-compose.yaml配置文件中的所有服务,也就是所有的容器
[root@r wordpress]# docker-compose up

# 启动指定的容器
docker-compose up 容器ID

# 上述启动是前台启动服务,要想后台运行服务还需要加 -d
[root@r wordpress]# docker-compose up -d

# 对于使用stop命令停止的容器,使用 start 启动, start后不跟容器名表示启动所有
[root@r wordpress]# docker-compose start
[root@r wordpress]# docker-compose start db

# 重启
[root@r wordpress]# docker-compose restart
[root@r wordpress]# docker-compose restart db
  • 停止服务,即停止容器
# 停止并且删除容器
[root@r wordpress]# docker-compose down

# 仅仅停止使用stop
[root@r wordpress]# docker-compose stop

# 停止指定容器,比如说把db停了
[root@r wordpress]# docker-compose stop db
  • 查看日志
[root@r wordpress]# docker-compose logs wordpress
  • 使用-h命令来查看帮助
[root@r wordpress]# docker-compose -h

that's all,see also:

Docker及Docker-Compose的使用 | 安装docker和docker-compose | docker中文指南 | docker参数--restart=always的作用 | Docker Compose 配置文件 Docker-Compose.yml 文件详解

posted @ 2020-04-18 01:30  听雨危楼  阅读(511)  评论(0编辑  收藏  举报