• Centos7安装docker-compose


    Background

    基于docker容器开发服务时,从代码到部署容器需要经过两个步骤:

    • 打包镜像docker build
    • 部署启动容器docker run

    在实际开发中,一个服务往往需要和很多个其它的服务进行关联,单个服务也有可能有多个容器实例,打包部署非常繁琐,容易出错。而使用docker-compose就可以轻松实现对容器集群的编排工作。简单来说,docker-compose是一个用于定义和运行多个容器的工具,类似k8s。
    对于 docker-compose 有两个基本的概念:

    • 工程,docker-compose运行的目录即为一个工程,在微服务场景下,我们往往都是使用git submodule的方式组建工程的,因此父项目就可以成为一个docker-compose的工程
    • 服务,对应子项目,一个工程可以包含多个子项目
    • 容器,对应服务的实例,一个服务可以有多个实例

    docker-compose当然也存在不足的地方,就是它只能用在单一host上进行容器编排,无法跨节点host对容器进行编排,那是Docker Swarm和K8s的范畴了,后续再讨论。

    1、安装

    • 通过命令下载:
    curl -L https://github.com/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    
    • 1
    • github太慢可以用daocloud下载
    curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    
    • 1
    • 如果在线下载速度较慢,或者下载失败,可以先自行在网上下载好docker-compose文件,然后上传到/usr/local/bin/目录也可以
      docker-compose下载网址:Releases · docker/compose
    • 修改docker-compose文件权限
    chmod +x /usr/local/bin/docker-compose
    
    • 1
    • 创建软链:
    ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
    
    • 1
    • 如果有pip环境,也可以使用pip安装
    pip3 install docker-compose
    
    • 1
    • 测试安装结果
    docker-compose --version
    
    • 1

    2、使用

    • docker-compose编写yaml文件注意事项
    • 不支持制表符tab键缩进。需要使用空格缩进
    • 通常开头缩进2个空格
    • 字符后缩进一个空格,如冒号,逗号
    • 用井号注释
    • 如果包含特殊字符用单引号引起来
    • 布尔值(ture、false、yes、no、on、off)必须用引号括起来,这样分析器会将它们解释为字符串
    • docker-compose命令格式
    docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
    
    • 1

    命令选项如下:
    -f,–file FILE指定Compose模板文件,默认为docker-compose.yml,可以多次指定。
    -p,–project-name NAME指定项目名称,默认将使用所在目录名称作为项目名。
    -x-network-driver 使用Docker的可拔插网络后端特性(需要Docker 1.9+版本)
    -x-network-driver DRIVER指定网络后端的驱动,默认为bridge(需要Docker 1.9+版本)
    -verbose输出更多调试信息
    -v,–version打印版本并退出

    • docker-compose up命令格式
    docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]
    
    • 1

    选项包括:
    -d 在后台运行服务容器
    –no-color 不使用颜色来区分不同的服务的控制输出
    –no-deps 不启动服务所链接的容器
    –force-recreate 强制重新创建容器,不能与–no-recreate同时使用
    –no-recreate 如果容器已经存在,则不重新创建,不能与–force-recreate同时使用
    –no-build 不自动构建缺失的服务镜像
    –build 在启动容器前构建服务镜像
    –abort-on-container-exit 停止所有容器,如果任何一个容器被停止,不能与-d同时使用
    -t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)
    –remove-orphans 删除服务中没有在compose文件中定义的容器
    –scale SERVICE=NUM 设置服务运行容器的个数,将覆盖在compose中通过scale指定的参数

    • -f 可以指定使用的compose模板文件,默认为docker-compose.yml,可以多次指定
    docker-compose -f docker-compose.yml up -d
    
    • 1
    • 使用示例:
    version: '3.5'
    services:
      headscale:
        image: headscale/headscale:latest-alpine
        container_name: headscale
        volumes:
          - ./config:/etc/headscale
          - ./data/data:/var/lib/headscale
        ports:
          - 7080:7080
        command: headscale serve
        restart: unless-stopped
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    Python正则表达式
    LuatOS-SOC接口文档(air780E)--nimble - 蓝牙BLE库(nimble版)
    consulmanage部署
    Day23-JDBC
    Python数据和Json数据的相互转换
    基于共享存储的Harbor高可用-Docker部署方案
    【ACWing】123. 士兵
    栈、队列应用
    CCF CSP认证 历年题目自练Day37
    基本概念 I 和 Q:I/Q 数据的基础知识
  • 原文地址:https://blog.csdn.net/qq_42761569/article/details/127979532