Linux - Docker harbor install

#!/bin/bash
#
#**************************************************************************************
#Author:                                   Noise Lys
#QQ:                                       578110218
#Date:                                     2021-05-30
#Filename:                                 install_harbor.sh
#URL:                                      https://www.cnblogs.com/noise/
#Description:                              The test script
#Copyright (C):                            2021 All rights reserved
#**************************************************************************************

OS_VERSION=`cat /etc/os-release  | sed 's/"/=/g' | awk -F[=]+ 'NR==3{print $2}'`
COLOR="echo -e \\033[1;31m"
END="\033[m"
HARBOR_VERSION=1.7.6
IPADDR=`hostname -I|awk '{print $1}'`
HARBOR_ADMIN_PASSWORD=123456
IP_CLIENT1=10.0.0.101
IP_CLIENT2=10.0.0.102
IP_CLIENT3=10.0.0.103

# install docker 

install_docker(){

${COLOR}"START to install docker"${END}
sleep 1

if [[ ${OS_VERSION} = "centos" ]];then

COLOR="echo -e \\033[1;31m"
END="\033[m"
VERSION="19.03.5-3.EL7"

rm -rf /etc/yum.repos.d/*

wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/repo/Centos-7.repo || { ${COLOR}"BaseOS:Can't access the internet,please check your connection!"${END};exit;}

wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/repo/epel-7.repo || { ${COLOR}"Epel:Can't access the internet,please check your connection!"${END};exit;}

wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo || { ${COLOR}"Docker-ce:Can't access the internet,please check your connection!"${END};exit;}



yum clean all

yum -y install docker-ce || { ${COLOR}"Base,Extras yum sources is unavailable, please check yum sources"${END};exit;}

mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://u5qp98hs.mirror.aliyuncs.com"]
}
EOF

systemctl enable --now docker
docker version && ${COLOR}"Docker install succesfully"${END} || ${COLOR}"Docker install failed"${END}

else

# ubuntu

apt update
apt -y install apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -

add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
apt -y update
apt -y install docker-ce

systemctl enable --now docker
docker version && ${COLOR}"Docker install succesfully"${END} || ${COLOR}"Docker install failed"${END}
fi
reboot
}

#install docker-compose
install_docker_compose(){

${COLOR}"START to install docker compose"${END}
sleep 1

curl -L https://github.com/docker/compose/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose && ${COLOR}"wget docker compose successfully!"${END} || ${COLOR}"wget docker compose failed!"${END}

chmod +x /usr/bin/docker-compose

docker-compose --version && ${COLOR}"Docker Compose installed successfully!" ${END} || ${COLOR}"Docker Compose installed failed!" ${END} 

}

#install Harbor
install_harbor(){

${COLOR}"START to install harbor"${END}
sleep 1

read -p "please select offline(y) or online(n):" HARBOR_PACKAGES

${COLOR}"deafult download packages from online!"${END}

if [[ ${HARBOR_PACKAGES} = "Y"||${HARBOR_PACKAGES} = "y" ]]; then
   ${COLOR}"when you selected offline, please use rz to save the packages to /data/!"${END}
   sleep 5
else
   wget https://github.com/goharbor/harbor/releases/download/v${HARBOR_VERSION}/harbor-offline-installer-v${HARBOR_VERSION}.tgz && ${COLOR}"wget harbor successfully!"${END} || ${COLOR}"wget harbor failed!"${END}
fi

mkdir /apps
tar xvf harbor-offline-installer-v${HARBOR_VERSION}.tgz -C /apps/

sed -i.bak -e 's/^hostname =.*/hostname = '''${IPADDR}'''/' -e 's/^harbor_admin_password =.*/harbor_admin_password = '''${HARBOR_ADMIN_PASSWORD}'''/' /apps/harbor/harbor.cfg

if [[ ${OS_VERSION} = "centos" ]];then

yum -y install python2 &>/dev/null && ${COLOR}"python installed successfully!"${END} || ${COLOR}"python installed failed!"${END}

else

apt -y install python &>/dev/null && ${COLOR}"python installed successfully!"${END} || ${COLOR}"python installed failed!"${END}

fi

ln -s /usr/bin/python2.7 /usr/bin/python &>/dev/null

/apps/harbor/install.sh && ${COLOR}"Harbor installed successfully!"${END} || ${COLOR}"Harbor installed failed!"${END} 

}

#install service
install_harbor_service(){

cat > /lib/systemd/system/harbor.service<<EOF

[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor

[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/bin/docker-compose -f /apps/harbor/docker-compose.yml up
ExecStop=/usr/bin/docker-compose -f /apps/harbor/docker-compose.yml down

[Install]
WantedBy=multi-user.target
EOF

sed -i.bk -e 's@^ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock.*@ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry '''${IP_CLIENT1}''' --insecure-registry '''${IP_CLIENT2}''' --insecure-registry '''${IP_CLIENT3}'''@' /lib/systemd/system/docker.service

systemctl daemon-reload
systemctl enable harbor && ${COLOR}"Harbor service successfully!"${END} || ${COLOR}"Harbor service failed!"${END}    

reboot

}

${COLOR}"========================"${END}
${COLOR}"step 1 : install docker!"${END}
${COLOR}"========================"${END}

if [[ ${OS_VERSION} = "centos" ]];then
rpm -ql docker-ce &>/dev/null && ${COLOR}"docker already installed!"${END} || install_docker

else

dpkg -s docker-ce &>/dev/null && ${COLOR}"docker already installed!"${END} || install_docker

fi

${COLOR}"========================"${END}
${COLOR}"step 2 : install docker compose!"${END}
${COLOR}"========================"${END}

docker-compose --version &>/dev/null  && ${COLOR}"docker compose already installed!"${END} || install_docker_compose

${COLOR}"========================"${END}
${COLOR}"step 3 : install harbor!"${END}
${COLOR}"========================"${END}

install_harbor

${COLOR}"========================"${END}
${COLOR}"step 4 : install harbor service!"${END}
${COLOR}"========================"${END}

install_harbor_service

 

上一篇:harbor安装教程


下一篇:harbor 报错,注意harbor.yml文件格式。