首页 > 其他分享 >12、容器单机编排工具Docker Compose安装

12、容器单机编排工具Docker Compose安装

时间:2023-06-12 13:32:02浏览次数:56  
标签:docker Compose echo nginx compose Docker 12 DOCKER

容器单机编排工具Docker Compose

安装Docker Compose
离线安装,直接从github或国内镜像站下载安装对应版本
https://github.com/docker/compose/releases
找到docker-compose-linux-x86_64,下载拖入linux系统
[root@ubuntu2004 ~]#mv docker-compose-linux-x86_64-v2.12.0 /usr/bin/docker-compose
[root@ubuntu2004 ~]#chmod +x /usr/bin/docker-compose
查看版本
[root@ubuntu2004 ~]#docker-compose --version
Docker Compose version v2.12.0
docker compose安装脚本
#!/bin/bash

DOCKER_VERSION="20.10.10"
DOCKER_URL="http://mirrors.ustc.edu.cn"


DOCKER_COMPOSE_VERSION=2.6.1
DOCKER_COMPOSE_FILE=docker-compose-Linux-x86_64


COLOR_SUCCESS="echo -e \\033[1;32m"
COLOR_FAILURE="echo -e \\033[1;31m"
END="\033[m"

. /etc/os-release
UBUNTU_DOCKER_VERSION="5:${DOCKER_VERSION}~3-0~${ID}-${UBUNTU_CODENAME}"

color () {
    RES_COL=60
    MOVE_TO_COL="echo -en \\033[${RES_COL}G"
    SETCOLOR_SUCCESS="echo -en \\033[1;32m"
    SETCOLOR_FAILURE="echo -en \\033[1;31m"
    SETCOLOR_WARNING="echo -en \\033[1;33m"
    SETCOLOR_NORMAL="echo -en \E[0m"
    echo -n "$1" && $MOVE_TO_COL
    echo -n "["
    if [ $2 = "success" -o $2 = "0" ] ;then
        ${SETCOLOR_SUCCESS}
        echo -n $"  OK  "    
    elif [ $2 = "failure" -o $2 = "1"  ] ;then 
        ${SETCOLOR_FAILURE}
        echo -n $"FAILED"
    else
        ${SETCOLOR_WARNING}
        echo -n $"WARNING"
    fi
    ${SETCOLOR_NORMAL}
    echo -n "]"
    echo 
}


install_docker(){
    if [ $ID = "centos" -o $ID = "rocky" ];then
        if [ $VERSION_ID = "7" ];then
            cat >  /etc/yum.repos.d/docker.repo  <<EOF
[docker]
name=docker
gpgcheck=0
#baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/
baseurl=${DOCKER_URL}/docker-ce/linux/centos/7/x86_64/stable/
EOF
        else     
            cat >  /etc/yum.repos.d/docker.repo  <<EOF
[docker]
name=docker
gpgcheck=0
#baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/
baseurl=${DOCKER_URL}/docker-ce/linux/centos/8/x86_64/stable/
EOF
        fi
        yum clean all 
        ${COLOR_FAILURE} "Docker有以下版本"${END}
        yum list docker-ce --showduplicates
        ${COLOR_FAILURE}"5秒后即将安装: docker-"${DOCKER_VERSION}" 版本....."${END}
        ${COLOR_FAILURE}"如果想安装其它Docker版本,请按ctrl+c键退出,修改版本再执行"${END}
        sleep 5
        yum -y install docker-ce-$DOCKER_VERSION docker-ce-cli-$DOCKER_VERSION  \
            || { color "Base,Extras的yum源失败,请检查yum源配置" 1;exit; }
    else
        dpkg -s docker-ce &> /dev/null && $COLOR"Docker已安装,退出" 1 && exit
        apt update || { color "更新包索引失败" 1 ; exit 1; }  
        apt  -y install apt-transport-https ca-certificates curl software-properties-common || \
            { color "安装相关包失败" 1 ; exit 2;  }  
        curl -fsSL ${DOCKER_URL}/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
        add-apt-repository "deb [arch=amd64] ${DOCKER_URL}/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
        apt update
        ${COLOR_FAILURE} "Docker有以下版本"${END}
        apt-cache madison docker-ce
        ${COLOR_FAILURE}"5秒后即将安装: docker-"${UBUNTU_DOCKER_VERSION}" 版本....."${END}
        ${COLOR_FAILURE}"如果想安装其它Docker版本,请按ctrl+c键退出,修改版本再执行"${END}
        sleep 5
        apt -y  install docker-ce=${UBUNTU_DOCKER_VERSION} docker-ce-cli=${UBUNTU_DOCKER_VERSION}
    fi
    if [ $? -eq 0 ];then
        color "安装软件包成功"  0
    else
        color "安装软件包失败,请检查网络配置" 1
        exit
    fi
        
    mkdir -p /etc/docker
    tee /etc/docker/daemon.json <<-'EOF'
{
      "registry-mirrors": ["https://pgavrk5n.mirror.aliyuncs.com"],
      "insecure-registries": ["harbor.wang.org"]
}
EOF
    systemctl daemon-reload
    systemctl enable docker
    systemctl restart docker
    docker version && color "Docker 安装成功" 0 ||  color "Docker 安装失败" 1
    echo 'alias rmi="docker images -qa|xargs docker rmi -f"' >> ~/.bashrc
    echo 'alias rmc="docker ps -qa|xargs docker rm -f"' >> ~/.bashrc
}



install_docker_compose(){
    if [ $ID = "centos" -o $ID = "rocky" ];then
        ${COLOR_SUCCESS}"开始安装 Docker compose....."${END}
        sleep 1
        if [ ! -e  ${DOCKER_COMPOSE_FILE} ];then
            #curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/${DOCKER_COMPOSE_FILE} -o /usr/bin/docker-compose
            curl -L https://get.daocloud.io/docker/compose/releases/download/v${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m) -o /usr/bin/docker-compose
        else
            mv ${DOCKER_COMPOSE_FILE} /usr/bin/docker-compose
        fi
        chmod +x /usr/bin/docker-compose
    else 
        apt -y install docker-compose
    fi
    if docker-compose --version ;then
        ${COLOR_SUCCESS}"Docker Compose 安装完成"${END} 
    else
        ${COLOR_FAILURE}"Docker compose 安装失败"${END}
        exit
    fi
}



docker info  &> /dev/null  && ${COLOR_FAILURE}"Docker已安装"${END} || install_docker

docker-compose --version &> /dev/null && ${COLOR_FAILURE}"Docker Compose已安装"${END} || install_docker_compose
查看命令格式

https://docs.docker.com/compose/reference/

利用网站将Docker命令自动生成docker-compose
一键生成docker-compose.yml
https://www.composerize.com/

例如:[root@ubuntu2004 ~]#docker run -d -p 80:80 --name nginx01 -v /data/nginx/html/:/apps/nginx/html/ --restart always nginx:v1.22.0-1
进行转换
[root@ubuntu2004 ~]#mkdir /data/docker-compose/nginx -p
[root@ubuntu2004 ~]#cd /data/docker-compose/nginx
[root@ubuntu2004 nginx]#vim docker-compose.yml
version: '3.3'
services:
    nginx:
        ports:
            - '80:80'
        container_name: nginx01
        volumes:
            - '/data/nginx/html/:/apps/nginx/html/'
        restart: always
        image: 'nginx:v1.22.0-1'
[root@ubuntu2004 nginx]#docker-compose up 前台执行,可查看错误
[root@ubuntu2004 nginx]#docker-compose up -d 后台执行

只删除停止的容器:docker-compose rm
停止并删除容器及镜像:docker-compose down
docker compose编写示例
version: '3.3'
services:
    wordpress:
        ports:
            - '80:80'
        container_name: wordpress
        volumes:
            - '/data/wordpess:/var/www/html'
        restart: always
        image: 'wordpress:php7.4-apache'
    mysql:
        network_mode: 'container:wordpress'
        environment:
            - MYSQL_ROOT_PASSWORD=123456
            - MYSQL_DATABASE=wordpress
            - MYSQL_USER=wordpress
            - MYSQL_PASSWORD=123456
        container_name: mysql
        volumes:
            - '/data/mysql:/var/lib/mysql'
        restart: always
        image: 'mysql:8.0.29-oracle'


标签:docker,Compose,echo,nginx,compose,Docker,12,DOCKER
From: https://blog.51cto.com/mfc001/6461801

相关文章

  • [leetcode每日一题]6.12
    1483. 树节点的第K个祖先提示困难150相关企业给你一棵树,树上有 n 个节点,按从 0 到 n-1 编号。树以父节点数组的形式给出,其中 parent[i] 是节点 i 的父节点。树的根节点是编号为 0 的节点。树节点的第 k 个祖先节点是从该节点到根节点路径上的第 k 个节点。实现......
  • 【区块链】HyperLedger Besu Docker异地组网(续)
    最近有些朋友私信我,说之前《【区块链】HyperLedgerBesuDocker异地组网》中提到使用dockerswarm可以进行异地组网,但实际上在公网层面无法实现。嗯...的确之前我没有说清楚,其实在我实施的过程中还是遇到了比较多的问题的,譬如:国内三大网络运营商对于公网接入会有不同的网络策略;......
  • 2023.6.12 树节点的第k个祖先
    可以借鉴一下求LCA问题中的倍增思想。用fa[i][j]表示i号节点的第\(2^j\)个祖先。我们只需要用动态规划预处理出这个fa数组即可。求第k个祖先,可以将k用二进制拼凑的方法划分成若干个2的整数次幂,然后利用fa数组对应地进行若干次跳跃即可,单个询问的时间复杂度\(O(logn)\)。这里由......
  • C#.NET Framework RSA 私钥签名 公钥验签(验证签名) ver:20230612
    C#.NETFrameworkRSA私钥签名公钥验签(验证签名)ver:20230612 环境说明:.NETFramework4.6的控制台程序 。 .NETFramework 对于RSA的支持:NETFramework内置只支持XML格式的私钥/公钥。如果要用PKCS1,PKCS8格式的,要用到三方库BouncyCastle。 核心重点是拿到.NET......
  • How to Clear Logs of Running Docker Containers
    HowtoClearLogsofRunningDockerContainers https://www.howtogeek.com/devops/how-to-clear-logs-of-running-docker-containers/UnderstandingtheProblemDockercollectslogsfromthestandardoutputanderrorstreamsofcontainerforegroundprocesses.......
  • 6-12|如何获取entry组建的值
    想要获取`Entry`组件中输入的值,可以使用以下两种方法:1.`get()`方法`get()`方法可以返回`Entry`组件中的文本,例如:```pythonimporttkinterastkroot=tk.Tk()entry=tk.Entry(root)entry.pack()defget_entry_value():  value=entry.get()  print(value)bu......
  • Jenkins + Docker 一键自动化部署 Spring Boot 项目,步骤齐全,少走坑路!
    本文章实现最简单全面的Jenkins+docker+springboot一键自动部署项目,步骤齐全,少走坑路。环境:centos7+git(gitee)简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。推荐一个开源免费的SpringBoot实战项目:https://......
  • 123321
    <template><a-layoutid="root"style="height:100%;padding:10px;"><a-layout-siderdata-drop="move"id="menu"style="width:20%;padding:10px"><a-rowjustify="space-around&q......
  • Docker runc容器逃逸漏洞(CVE-2021-30465)
    --原文件的名称并授权cd/tmpmvrunc.amd64runc&&chmod+xrunc--查看runc的位置whichrunc--将备份runc文件cd/usr/bincpruncrunc.bak--复制新的runc到usr/bincp/tmp/runc/usr/bin/systemctlstopdockersystemctlstartdocker......
  • 202306112142-《最近开发心得...》
     没有心得就是在瞎搞,写心得就是“埋头耕耕,抬头看看”,看看自己做了什么......    心得就是心的感受,并非得到了什么,我以前是搞前端开发,仅仅4-5年时间,见证Angular市场份额的减少,backbone还嫌有耳闻,鲜有招聘;React框架从耳闻到霸屏;个人沐浴jquery的春风,枯于市场类似Vue......