• Docker Compose容器编排


    一、Docker Compose概念

    Docker Compose (可简称Compose)是一个定义与运行复杂应用程序的 Docker 工具,是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。

    1、为什么要使用 Docker Compose部署容器

    仅使用docker命令部署和管理多容器:应用程序时往往需要编写若干脚本文件,使用的命令可能会变得冗长,包括大量的选项和参数,配置过程比较复杂,而且容易发生差错。

    Docker Compose实质:不是通过脚本和各种docker命令将多个容器组织起来,而是通过一个声明式的配置文件描述整个应用程序,从而让用户使用一条命令即可完成整个应用程序的部署。

    Docker Compose功能:将逻辑关联的多个容器编排为一个整体进行统一管理,提高了应用程序部署效率。

    2、Docker Compose项目概念

    Docker Compose 以项目为单位管理应用程序的部署。按从上到下依次分为以下三个层次。

    项目:一组关联的容器组成一个完整的业务单位,实现一个应用程序,涵盖应用程序所需的所有资源。

    服务:具体定义容器运行的镜像、

    容器:

    3、使用Docker Compose的基本步骤

    1. 使用Dockerfile定义应用程序的环境,以便可以在任何地方分发。Compose编排主要是用于多容器的复杂应用程序,但是镜像还是要基于Dockerfile构建。
    2. 使用Compose文件定义组成应用程序的服务。文件声明的配置,可以定义包含多个相关互联的容器的程序(服务)。
    3. 执行docker-compose up命令启动整个应用程序。

    二、Docker Compose操作

    1、安装 Compose

    Compose 有两种常用的安装方式:

    1. 使用pip安装Docker Compose(Compose是用python写的)
    2. 从GITHUB上的Docker Compose 仓库下载docker-compose二进制文件进行安装。
    # 1.curl命令从GitHub上的Docker Compose仓库下载二进制文件
    # 语法:curl -L "<GitHub上的Docker Compose仓库网址>" -o /usr/local/bin/docker-compose
    # 下载实例:
    [root@hecs-hqs-01 ~]# curl -L "https://github.com/docker/compose/releases/download/v2.6.0/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
      0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
    100 24.7M  100 24.7M    0     0  39116      0  0:11:03  0:11:03 --:--:-- 55673
    
    # 2.为该二进制文件添加可执行权限
    [root@hecs-hqs-01 ~]# chmod +x /usr/local/bin/docker-compose 
    [root@hecs-hqs-01 ~]# ll /usr/local/bin/docker-compose 
    -rwxr-xr-x 1 root root 25968640 Jun  7 14:39 /usr/local/bin/docker-compose
    
    # 3.进行命令测试
    [root@hecs-hqs-01 ~]# docker-compose --version
    Docker Compose version v2.6.0
    

    2、卸载Compose

    如果要卸载,删除docker-compose文件即可。

    [root@hecs-hqs-01 ~]# rm /usr/local/bin/docker-compose
    

    三、Compose案例

    1、使用Docker Compose 部署 WordPress

    WordPress是个人博客系统,逐步演化成一款内容管理系统软件。使用PHP和mysql开发。
    以部署 WordPress 为例示范使用 Compose进行容器编排的完整过程。

    每个服务容器就是服务的一个副本,其名称格式:“项目名_服务名_序号”,序号编排从1开始,不同的序号表示依次分配的副本。

    # 1.定义项目,切换到该项目目录
    # Compose项目目录:可根据需要命名,是应用程序镜像的上下文环境,仅包含用于构建镜像的资源。
    [root@hecs-hqs-01 ~]# mkdir my_wordpress && cd my_wordpress
    [root@hecs-hqs-01 my_wordpress]# 
    
    # 2.创建并编辑docker-compose.yml 的compose文件来定义项目
    # db定义的是mysql服务器,wordpress定义了wordpress博客项目,db_data卷用于保存提交到数据库的数据
    [root@hecs-hqs-01 my_wordpress]# vi docker-compose.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
           WORDPRESS_DB_NAME: wordpress
    volumes:
        db_data: {}
    
    # 3.项目目录中执行docker-compose命令构建项目
    [root@hecs-hqs-01 my_wordpress]# docker-compose up -d
    [+] Running 34/34
     ⠿ wordpress Pulled                                                                                  48.6s
       ⠿ 42c077c10790 Pull complete                                                                      24.3s
        ...略                                                                      45.0s
       ⠿ 39f9aa71aa04 Pull complete                                                                      45.1s
     ⠿ db Pulled                                                                                         94.3s
       ⠿ c1ad9731b2c7 Pull complete                                                                      46.0s
        ...略                                                                      90.7s
       ⠿ 1b606c4f93df Pull complete                                                                      90.7s
    [+] Running 4/4
     ⠿ Network my_wordpress_default        Created                                                        0.1s
     ⠿ Volume "my_wordpress_db_data"       Created                                                        0.0s
     ⠿ Container my_wordpress-db-1         Started                                                        1.2s
     ⠿ Container my_wordpress-wordpress-1  Started
    
    # 4.执行命令查看运行中的容器
    [root@hecs-hqs-01 my_wordpress]# docker ps 
    CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                  NAMES
    49b78626c20c        wordpress:latest    "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:8000->80/tcp   my_wordpress-wordpress-1
    fecf57f4dfd8        mysql:5.7           "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp, 33060/tcp    my_wordpress-db-1
    
    
    # 5.在浏览器访问Wordpress
    
    
    
    
    
    
    
  • 相关阅读:
    虚拟空间,域名解析,A记录,MX记录,CNAME记录,TTL 等 更多Web服务器相关名词解释
    C# WinForm中的Label换行方法
    SQL 2005 with(nolock)详解
    常用Web Service汇总(天气预报、时刻表等)
    csdn中一篇sock 经验贴..
    如何保护.net中的dll文件(防破解、反编译)
    C#内存流示例>用内存流来读取图片
    QQ网页登陆密码加密方式(农场、空间、WebQQ等通用)
    MySQL数据库对dvbbs.php全文搜索的完全分析
    提搞网站访问速度可做哪些优化
  • 原文地址:https://www.cnblogs.com/xiugeng/p/16351756.html
Copyright © 2020-2023  润新知