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用來等待注冊中心運行才能運行別的服務)

將項目下doc\deploy\wait.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(自動運行編排文件)

將項目下doc\deploy\docker-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文件用來配置環境變量

修改項目下doc\deploy\file.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文件也是配置環境變量

修改項目下doc\deploy\file.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保存。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM