• CentOS 安装 docker-compose


    部署环境搭建

    1安装docker

      一定要用root账号登录系统,打开终端/或远程工具(如xshell)登录系统
    检查是否已经安装  

        rpm –qa|grep docker

    出现如上说明已安装

    也可用命令docker -v  (如果成功显示版本号,不成功显示命令不可用)
    也可用命令docker version

        可卸载重新安装(也选择不重新安装)

        rpm –e docker-1.13.1-84.git07f3374.el7.centos.x86_64 --nodeps (卸载时不检测依赖,只卸载该包)

      开始安装

    安装新版本:https://blog.csdn.net/hanjun0612/article/details/117086463

        yum install docker(安装升级都可以)

        中途提示选项:选y  后面还会提示是否继续选y

        

    安装完成后查看版本

    docker –v

      查看docker状态

        systemctl status docker

    开启远程访问

    vim /usr/lib/systemd/system/docker.service

    (vim常用命令总结 https://www.cnblogs.com/yangjig/p/6014198.html)

    (直接用gedit /usr/lib/systemd/system/docker.service 编辑更快捷)

    在以下添加

    -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

    重新加载文件

    systemctl daemon-reload

    设置docker为随机启动

    systemctl  enable  docker.service

      启动docker  

    systemctl  start  docker.service

    如果以上启动出错Job for docker.service failed because………

    (解决参考https://blog.csdn.net/yangqinfeng1121/article/details/83374477

    根据提示运行:

    systemctl status docker.service

    该提示说明:

    此linux的内核中的SELinux不支持 overlay2 graph driver

    解决方案:在docker里禁用selinux

    vim /etc/sysconfig/docker  (vim常用命令总结 https://www.cnblogs.com/yangjig/p/6014198.html)

    在这一行后面添加=false

    再启动

    systemctl  start  docker.service

    查看状态

    systemctl  status  docker.service

    显示如下代表启动成功

    2安装docker-compose(用于编排服务启动)

     查看是否已经安装

    docker-compose –v

    卸载重新安装(可选择)

    pip uninstall docker-compose -y

    (全新安装从这里开始)

    先检查pip是否安装

    pip --version

    如果没有则先安装pip

    yum -y install epel-release

    yum -y install python-pip

    pip install --upgrade pip

    安装docker-compose

    pip install docker-compose --ignore-installed requests

    查看版本

    docker-compose –version

    配置docker-compose工件目录

    在root目录下新建docker目录

    mkdir docker

    进入docker目录

    cd docker

    拉取centos镜象

    docker pull docker.io/centos:7.5.1804

    查看拉取的镜象

        docker images

    运行镜象docker.io/centos:7.5.1804,产生名为centos的容器run命令运行并进入容器

    docker  run -it  --name centos  docker.io/centos:7.5.1804

    安装java

    升级所有包同时也升级软件和系统内核 (这个时间可能比较较不同网速时间不一样,可能需要5-10分钟左右)

    yum -y update

    yum install -y java

    查看是否安装成功

    java –version

    退出当前容器

    exit

    将容器centos保存为新的镜象

    docker commit -m="update" -a="cjh" centos  mycentos:7.5.1804

    将镜象存为docker目录下的文件mycentos.tar(备用,预计580MB)

    docker save -o mycentos.tar  mycentos:7.5.1804

    删除容器

    docker rm $(docker ps -qa)

    删除镜象

    docker rmi $(docker images -qa)

    导入之前的mycentos.tar为镜象

    docker load -i mycentos.tar

    查看镜象

    docker images

    文件配置

    1.Wait.sh(文件wait.sh用来等待注册中心运行才能运行别的服务)

    将项目下docdeploywait.sh拷贝至当前目录/root/docker/wait.sh

    给wait.sh赋可执行权限命令

     chmod 754 wait.sh

    wait.sh

    #!/bin/bash
    #******************************************************************************
    #@date  : 2018-12-10 10:18:43
    #检测注册中心,配置中心,webapisys有没有启动
    #******************************************************************************
     
    : ${SLEEP_SECOND:=10}
     
    #切换容器语言(zw2019-3-14)
    export LANG='zh_CN.UTF-8'
    export LC_LANG='zh_CN.UTF-8'
    localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
     
    #set docker datetime as this Liunx system datetime
    echo "Asia/shanghai" > /etc/timezone
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
     
    wait_for() {
      declare status=`curl -I -m 10 -o /dev/null -s -w %{http_code} $1:$2`
      while [[ $status != 200 ]]
      do  
          echo $status
          echo wating for $1 to listen on $2...
          status=`curl -I -m 10 -o /dev/null -s -w %{http_code} $1:$2`
         # echo $status
          sleep $SLEEP_SECOND 
      done
    }
     
    declare DEPENDS
    declare CMD
     
    while getopts "d:c:" arg
    do
      case $arg in
        d)
          DEPENDS=$OPTARG
          ;;
        c)
          CMD=$OPTARG
          ;;
        ?)
          echo "unkonw argument"
          exit 1
          ;;
      esac
    done
     
    for var in ${DEPENDS//,/ }
    do
      host=${var%:*}
      port=${var#*:}
      wait_for $host $port
    done
     
    exec $CMD

    2. docker-compose.yml(自动运行编排文件)

    将项目下docdeploydocker-compose.yml拷贝至当前目录/root/docker/docker-compose.yml

    docker-compose.yml

    version: '2.2'
    services: 
       registry: 
           image: registry:1.0 
           ports: 
               - '9088:9088'
           container_name: 'registry'
           entrypoint: java -jar   $SECURITY /springCloud.registry-1.0.jar
           restart: on-failure
           #cpu_shares: 10
           #cpuset: '0'
           mem_limit: 1g
           memswap_limit: 2g
           mem_reservation: 512m
     
       config: 
           image: config:1.0
           ports: 
               - "9089:9089"
           container_name: 'config'
           entrypoint:  java  -jar   $SECURITY  /springCloud.config-1.0.jar
           restart: on-failure
           #cpu_shares: 10
           #cpuset: '0'
           mem_limit: 1g
           memswap_limit: 2g
           mem_reservation: 512m
     
       apicommon: 
           image: apicommon:1.0
           volumes:
               - '/root/docker/logs:/logs'
               - '/root/docker/uploadFiles:/uploadFiles'
               - '/root/docker/wait.sh:/wait.sh'
           container_name: 'apicommon'
           depends_on:
               - registry
               - config
           entrypoint: /wait.sh -d registry:9088/health,config:9089/health -c 'java -jar -Dhost=$HOST -Dactive=$ACTIVE  $SECURITY /kps.webAPICommon-1.0.jar '
           restart: on-failure
           #cpu_shares: 9
           #cpuset: '1,2,3'
           mem_limit: 1g
           memswap_limit: 2g
           mem_reservation: 512m
             
       apisys: 
           image: apisys:1.0
           volumes:
               - '/root/docker/logs:/logs'
               - '/root/docker/uploadFiles:/uploadFiles'
               - '/root/docker/wait.sh:/wait.sh'
           container_name: 'apisys'
           depends_on:
               - registry
               - config
           entrypoint:  /wait.sh -d registry:9088/health,config:9089/health -c  'java -jar -Dhost=$HOST -Dactive=$ACTIVE  $SECURITY /kps.webAPISYS-1.0.jar '
           restart: on-failure
           #cpu_shares: 10
           #cpuset: '1,2,3'
           mem_limit: 1g
           memswap_limit: 2g
           mem_reservation: 512m      
     
       zuul: # 服务名
           image: zuul:1.0 #镜象名
           ports:  #主机与容器端口映射
               - '9090:9090' #前者为主机端口,后为容器端口
           volumes:
               - '/root/docker/logs:/logs' #前者为主机目录,后为容器目录
               - '/root/docker/uploadFiles:/uploadFiles'
               - '/root/docker/wait.sh:/wait.sh'
           container_name: 'zuul' #容器名
           depends_on: # 启动依赖
               - registry 
               - config
           entrypoint:  /wait.sh -d registry:9088/health,config:9089/health -c 'java -jar -Dhost=$HOST -Dactive=$ACTIVE  $SECURITY /springCloud.zuul-1.0.jar '
           restart: on-failure #非正常退出,立即重启
           #cpu_shares: 5 #cpu分配优先权重
           #cpuset: '1,2,3' #cpu核编号
           mem_limit: 1g  #限制容器使用内存
           memswap_limit: 2g #交换区内存
           mem_reservation: 512m #预留内存

    3.file.env文件用来配置环境变量

    修改项目下docdeployfile.env

    将host改为服务主机ip或虚拟机ip,active修改为(test为测试,prod为生产)

    修改后将它拷贝至/root/docker/file.env下

    file.env

    #该文件存放于:/root/docker/file.env
    #虚拟机快速启动参数
    SECURITY='-Djava.security.egd=file:/dev/./urandom'
    #虚拟机内存初始化参数
    JAVA_OPTS='-server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:CompressedClassSpaceSize=256m'
    #springboot激活配置与访问配置中心参数
    ACTIVE='test'
    #服务器内网ip或centos系统ip
    HOST='192.168.1.250'

    4.file.sh文件也是配置环境变量

    修改项目下docdeployfile.sh

     
    file.sh
    #该文件存放于:/etc/profile.d/file.sh
    #虚拟机快速启动参数
    export SECURITY='-Djava.security.egd=file:/dev/./urandom'
    #虚拟机内存初始化参数
    export JAVA_OPTS='-server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:CompressedClassSpaceSize=256m'
    #springboot激活配置与访问配置中心参数
    export ACTIVE='test'
    #服务器内网ip或centos系统ip
    export HOST='192.168.1.250'

    将host改为服务主机ip或虚拟机ip,active修改为(test为测试,prod为生产)

    修改后将它拷贝至/etc/profile.d/file.sh

    不重启linux情况下加载,运行命令:

    source /etc/profile

    设置docker-compose随机启动

    进入/usr/lib/systemd/system目录

    cd /usr/lib/systemd/system

    vim docker-compose.service

    内容见项目下docker-compose.service文件,

    (也可以直接将项目下docker-compose.service拷贝至/usr/lib/systemd/system /docker-compose.service)

    docker-compose.service

    [Unit]
    Description=docker-compose daemon
    After=docker.service
     
    [Service]
    Type=notify
    NotifyAccess=main
    EnvironmentFile=-/root/docker/file.env
    ExecStart=/usr/bin/docker-compose -f /root/docker/docker-compose.yml up -d
     
    [Install]
    WantedBy=multi-user.target
    ##[unit]配置了服务的描述,规定了在network启动之后执行,
    ##[service]配置服务的启动,停止,重启
    ##[install]配置用户模式

    然后运行

    systemctl enable docker-compose.service

    3 防火墙设置

      开放这些端口: 9088(注册中心),9089(配置中心),9090(网关),2375(docker)

       

    4 虚拟机端口映射

    映射这些端口(VM IP:192.168.75.143):

    9088(注册中心),9089(配置中心),9090(网关),2375(docker)

    5.开启centOS远程ssh方便以后部署;

    查看本机是否安装SSH软件包

    [root@localhost ~]# rpm -qa | grep ssh

    openssh-server-6.6.1p1-12.el7_1.x86_64

    openssh-clients-6.6.1p1-12.el7_1.x86_64

    libssh2-1.4.3-8.el7.x86_64

    openssh-6.6.1p1-12.el7_1.x86_64

    如果没有,则需要安装

    [root@localhost /]# yum install openssh-server

    第二步

    开启 SSH 服务

    [root@localhost ~]# service sshd start

    Redirecting to /bin/systemctl start sshd.service

    查看TCP 22端口是否打开

    [root@localhost ~]# netstat -ntpl | grep 22

    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 17816/sshd

    tcp6 0 0 :::22 :::* LISTEN 17816/sshd

    --------------------- 说明开启成功.

    6关闭防火墙

    因为是放在虚拟机里面部署,虚拟机外面有防火墙,所以要关闭CentOS的防火墙,不然上面开的端口(9090,9089,2375…)都不能访问,如果CentOS不是虚拟机请不要关闭防火墙。

    查看centOS防火墙是否开启(active说明开启)

    systemctl status firewalld

    如果开启了防火墙,用命令停止

    systemctl stop firewalld

    禁用开机防火墙启动

    systemctl disable firewalld

    (再查看状态变了)

    systemctl status firewalld

    设置系统自动连接网络

    /etc/sysconfig/network-scripts/ifcfg-ens33  将最后一行的onboot=no改为yes保存。

  • 相关阅读:
    翻译:《实用的Python编程》03_04_Modules
    翻译:《实用的Python编程》03_03_Error_checking
    翻译:《实用的Python编程》03_02_More_functions
    翻译:《实用的Python编程》03_01_Script
    翻译:《实用的Python编程》03_00_Overview
    翻译:《实用的 Python 编程》02_07_Objects
    翻译:《实用的Python编程》02_06_List_comprehension
    生成器
    python编码
    python迭代器
  • 原文地址:https://www.cnblogs.com/hanjun0612/p/14776977.html
Copyright © 2020-2023  润新知