docker-compose

1. Docker Compose

1.1 介绍

Docker Compose 是 Docker 容器进行编排的工具,用于定义和运行多容器Docker应用程序的工具,使用Compose,可以通过使用YAML模板文件来配置应用程序的服务。然后,使用一条命令,可以依据YMAL模板文件启动所有服务。

1.2 使用方法

使用Compose 基本上分为三步:

  • Dockerfile 定义应用的运行环境
  • docker-compose.yml 定义组成应用的各服务
  • docker-compose up 启动整个应用

1.3 compose

模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多。这里面大部分指令跟 docker run 相关参数的含义都是类似的。
默认的模板文件名称为 docker-compose.yml ,格式为 YAML 格式。

1.4 常用的命令

docker-compose -v    查看docker-compose版本信息
docker-compose  up        //创建,启动容器
                down      //停止并删除所有的容器的和网络、数据卷等
                ps        //查看所有容器
                start/stop/restart      //启动/停止/重启 容器
                rm         //移除停止的容器
                create      //创建容器
                pause
                unpause
                top
                logs        //查看服务的日志
                kill		//杀死容器
                images       //显示模板文件所有服务使用的镜像
                exec		//在一个运行的容器中执行一条命令

1.5 模板文件常用的标签:

version: "3"   //版本
services:      //服务
    db:         //其中一个服务的名字,服务其实既是容器
      image:                   //基础镜像
      build:                   //读取一个Dockerfile文件,构建镜像,并使用该镜像作为基础镜像,它不能和image同时存在在一个服务中
      container_name:  web1    //给容器定义一个名字
      ports:     			   //端口映射
        - "80:80"
      volumes:        //功能类似于docker run时的-v选项,挂载卷到容器中
        - "/opt/html:/usr/local/nginx/html"
        - "/usr/local/nginx/conf"
        - "logs:/usr/local/nginx/logs"
      command:       //容器运行的执行的命令,可以覆盖容器默认的命令
      entrypoint:    //入口点,和Dockerfile中的entrypoint功能相似,这里写的话,会直接覆盖原来的entrypoint
      depends_on:    //解决容器的依赖、启动先后的顺序
      environment:   //可用数组或者字典设置环境变量

1.6 实战1

1.6.1 编写启动nginx 容器的compose文件

[root@localhost ~]# vim docker-compose.yml 
[root@localhost ~]# cat docker-compose.yml 
version: "3"
services:
   web1:
     image: nginx
     ports:
       - "81:80"
   web2:
     image: nginx
     ports:
       - "82:80"

1.6.2 基于compose文件后台运行容器

[root@localhost ~]# docker-compose up -d
Creating root_web1_1 ... done
Creating root_web2_1 ... done

1.6.3 查看正在运行的容器

[root@localhost ~]# docker-compose ps
   Name                  Command               State         Ports       
-------------------------------------------------------------------------
root_web1_1   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:81->80/tcp
root_web2_1   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:82->80/tcp

1.6.4 重启所有容器

[root@localhost ~]# docker-compose restart
Restarting root_web1_1 ... done
Restarting root_web2_1 ... done

1.6.5 重启指定的容器

[root@localhost ~]# docker-compose restart web1
Restarting root_web1_1 ... done

1.6.7 -f 参数的使用

Options:
  -f, --file FILE             Specify an alternate compose file
                              (default: docker-compose.yml)

将默认的compose文件改名,使用 -f 参数指定compose文件

[root@localhost ~]# mv docker-compose.yml nginx.yml
[root@localhost ~]# docker-compose -f nginx.yml restart
Restarting root_web1_1 ... done
Restarting root_web2_1 ... done

1.7 实战2

编写启动nextcloud 容器和mysql容器的compose文件

1.7.1 创建工作目录

[root@localhost ~]# mkdir nextcloud
[root@localhost ~]# cd nextcloud/

1.7.2 编写compose文件

[root@localhost nextcloud]# vim docker-compose.yml
[root@localhost nextcloud]# cat docker-compose.yml //查看文件内容
version: "3"
services:
  nextcloud:
     image: nextcloud 
     ports:  //端口映射
        - "80:80"
     depends_on:   //依赖mysql服务
        - "mysql"
  mysql:
     image: mysql:5.7
     ports:  //端口映射
        - "3306:3306"
     environment:   //设置环境变量
       MYSQL_ROOT_PASSWORD: 123  // 设置root用户密码
       MYSQL_USER: nextcloud     //创建用户nextcloud
       MYSQL_PASSWORD: 123       //设置nextcloud用户密码为123
       MYSQL_DATABASE: nextcloud  //创建数据库nextcloud
[root@localhost nextcloud]# 

1.7.3 基于compose文件后台运行容器

[root@localhost nextcloud]# docker-compose up -d
Creating network “nextcloud_default” with the default driver
Creating nextcloud_mysql_1 … done
Creating nextcloud_nextcloud_1 … done

1.7.4 查看所有容器状态

[root@localhost nextcloud]# docker-compose ps
        Name                       Command               State                 Ports              
--------------------------------------------------------------------------------------------------
nextcloud_mysql_1       docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp, 33060/tcp
nextcloud_nextcloud_1   /entrypoint.sh apache2-for ...   Up      0.0.0.0:80->80/tcp               

1.7.5 打开浏览器验证配置(初始化时间较长,请耐心等待)

在这里插入图片描述

1.7.6 成功访问nextcloud

在这里插入图片描述

1.8 实战3

编写compose文件,实现mysql结合wordpress的效果

1.8.1 创建工作目录

[root@localhost ~]# mkdir wordpress
[root@localhost ~]# cd wordpress/

1.8.2 编写compose文件

[root@localhost wordpress]# vim docker-compose.yml
[root@localhost wordpress]# cat docker-compose.yml 
version: "3"
services:
  wordpress:
    image: wordpress
    ports:
      - "80:80"
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: tom
      WORDPRESS_DB_PASSWORD: 123
    depends_on: 
      - "mysql"
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: 123
      MYSQL_DATABASE: wordpress
      MYSQL_USER: tom
      MYSQL_PASSWORD: 123
[root@localhost wordpress]# 

1.8.3 基于compose文件运行容器

[root@localhost wordpress]# docker-compose up -d
Creating network "wordpress_default" with the default driver
Creating wordpress_mysql_1 ... done
Creating wordpress_wordpress_1 ... done

1.8.4 查看所有容器状态

[root@localhost wordpress]# docker-compose ps
        Name                       Command               State          Ports       
------------------------------------------------------------------------------------
wordpress_mysql_1       docker-entrypoint.sh mysqld      Up      3306/tcp, 33060/tcp
wordpress_wordpress_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:80->80/tcp 

1.8.5 打开浏览器验证配置

选择安装语言

在这里插入图片描述

初始化设置

在这里插入图片描述

访问成功

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值