-
Notifications
You must be signed in to change notification settings - Fork 3
/
docker.sh
145 lines (144 loc) · 4.94 KB
/
docker.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/bin/bash
red() {
echo -e "\033[31m\033[01m$1\033[0m"
}
green() {
echo -e "\033[32m\033[01m$1\033[0m"
}
greem='\033[32m\033[01m'
plain='\033[0m'
[[ -z $(docker -v 2>/dev/null) ]] && docker="未安装"
[[ -n $(docker -v 2>/dev/null) ]] && docker="已安装"
[[ -z $(docker-compose -v 2>/dev/null) ]] && docker-compose="未安装"
[[ -n $(docker-compose -v 2>/dev/null) ]] && docker-compose="已安装"
clear
echo -e "—————————————————————————————————————————————————————————————$greem
docker=$docker
docker-compose=${docker-compose}$plain
—————————————————————————————————————————————————————————————"
CPU=$(uname -m)
if [[ "$CPU" == "aarch64" ]]; then
cpu=aarch64
elif [[ "$CPU" == "arm" ]]; then
cpu=armv7
elif [[ "$CPU" == "x86_64" ]]; then
cpu=x86_64
elif [[ "$CPU" == "s390x" ]]; then
cpu=s390x
else
red "脚本不支持此服务器架构"
exit 1
fi
if [[ $(curl -m 10 -s https://ipapi.co/json | grep 'China') != "" ]]; then
url="https://get.daocloud.io/docker"
url2="dn-dao-github-mirror.daocloud.io"
proxy="--repository http://mirrors.ustc.edu.cn/alpine/latest-stable/community"
echo "当前机器环境为大陆,将使用国内源完成安装"
else
url="https://get.docker.com/"
url2="github.com"
proxy="--repository https://dl-cdn.alpinelinux.org/alpine/latest-stable/community"
fi
if [[ $(cat /etc/issue 2>/dev/null | grep -i -E 'Alpine') != "" ]]; then
Alpine="True"
fi
depends=("curl" "wget" "jq")
depend=""
for i in "${!depends[@]}"; do
now_depend="${depends[$i]}"
if [ ! -x "$(command -v $now_depend 2>/dev/null)" ]; then
echo "$now_depend 未安装"
depend="$now_depend $depend"
fi
done
if [ "$depend" ]; then
if [ -x "$(command -v apk 2>/dev/null)" ]; then
echo "apk包管理器,正在尝试安装依赖:$depend"
apk --no-cache add $depend $proxy >>/dev/null 2>&1
elif [ -x "$(command -v apt-get 2>/dev/null)" ]; then
echo "apt-get包管理器,正在尝试安装依赖:$depend"
apt -y install $depend >>/dev/null 2>&1
elif [ -x "$(command -v yum 2>/dev/null)" ]; then
echo "yum包管理器,正在尝试安装依赖:$depend"
yum -y install $depend >>/dev/null 2>&1
else
red "未找到合适的包管理工具,请手动安装:$depend"
exit 1
fi
for i in "${!depends[@]}"; do
now_depend="${depends[$i]}"
if [ ! -x "$(command -v $now_depend)" ]; then
red "$now_depend 未成功安装,请尝试手动安装!"
exit 1
fi
done
fi
version=`curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r '.tag_name'`
if [[ $Alpine != "True" ]]; then
if [[ "$(command -v docker)" ]]; then
green "docker已安装!"
if [[ "$(command -v docker-compose)" ]]; then
green "docker-compose已安装!"
exit 1
else
echo "正在安装docker-compose..."
wget https://$url2/docker/compose/releases/download/$version/docker-compose-linux-$cpu -O /usr/local/bin/docker-compose >/dev/null 2>&1
chmod +x /usr/local/bin/docker-compose
fi
else
echo "正在安装docker..."
curl -sSL $url | sh >/dev/null 2>&1
fi
if [[ "$(command -v docker)" ]]; then
green "docker安装成功!"
else
red "docker安装失败,请尝试手动安装"
fi
if ! [[ "$(command -v docker-compose)" ]]; then
echo "正在安装docker-compose..."
wget https://$url2/docker/compose/releases/download/$version/docker-compose-linux-$cpu -O /usr/local/bin/docker-compose >/dev/null 2>&1
chmod +x /usr/local/bin/docker-compose
if [[ "$(command -v docker-compose)" ]]; then
green "docker-compose安装成功!"
else
red "docker-compose安装失败,请尝试手动安装"
fi
else
green "docker-compose安装成功!"
fi
fi
if [[ $Alpine == True ]]; then
if [[ "$(command -v docker)" ]]; then
green "docker已安装!"
if [[ "$(command -v docker-compose)" ]]; then
green "docker-compose已安装!"
exit 1
else
echo "正在安装docker-compose..."
wget https://$url2/docker/compose/releases/download/$version/docker-compose-linux-$cpu -O /usr/local/bin/docker-compose >/dev/null 2>&1
chmod +x /usr/local/bin/docker-compose
fi
else
echo "正在安装docker..."
apk add docker $proxy >>/dev/null 2>&1
rc-update add docker boot >>/dev/null 2>&1
service docker start >>/dev/null 2>&1
fi
if [[ "$(command -v docker)" ]]; then
green "docker安装成功!"
else
red "docker安装失败,请尝试手动安装"
fi
if ! [[ "$(command -v docker-compose)" ]]; then
echo "正在安装docker-compose..."
wget https://$url2/docker/compose/releases/download/$version/docker-compose-linux-$cpu -O /usr/local/bin/docker-compose >/dev/null 2>&1
chmod +x /usr/local/bin/docker-compose
if [[ "$(command -v docker-compose)" ]]; then
green "docker-compose安装成功!"
else
red "docker-compose安装失败,请尝试手动安装"
fi
else
green "docker-compose安装成功!"
fi
fi