zoukankan      html  css  js  c++  java
  • 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保存。

  • 相关阅读:
    字符串 CSV解析 表格 逗号分隔值 通讯录 电话簿 MD
    Context Application 使用总结 MD
    RxJava RxPermissions 动态权限 简介 原理 案例 MD
    Luban 鲁班 图片压缩 MD
    FileProvider N 7.0 升级 安装APK 选择文件 拍照 临时权限 MD
    组件化 得到 DDComponent JIMU 模块 插件 MD
    gradlew 命令行 build 调试 构建错误 Manifest merger failed MD
    protobuf Protocol Buffers 简介 案例 MD
    ORM数据库框架 SQLite 常用数据库框架比较 MD
    [工具配置]requirejs 多页面,多入口js文件打包总结
  • 原文地址:https://www.cnblogs.com/hanjun0612/p/14776977.html
Copyright © 2011-2022 走看看