1
+ #! /bin/bash
2
+ # Copyright © 2021 Alibaba Group Holding Ltd.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ set -x
17
+ set -e
18
+
19
+ scripts_path=$( cd ` dirname $0 ` ; pwd)
20
+ image_dir=" $scripts_path /../images"
21
+ DOCKER_VERSION=" 19.03.14-sealer"
22
+
23
+ get_distribution () {
24
+ lsb_dist=" "
25
+ # Every system that we officially support has /etc/os-release
26
+ if [ -r /etc/os-release ]; then
27
+ lsb_dist=" $( . /etc/os-release && echo " $ID " ) "
28
+ fi
29
+ # Returning an empty string here should be alright since the
30
+ # case statements don't act unless you provide an actual value
31
+ echo " $lsb_dist "
32
+ }
33
+
34
+ disable_selinux () {
35
+ if [ -s /etc/selinux/config ] && grep ' SELINUX=enforcing' /etc/selinux/config; then
36
+ sed -i ' s/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
37
+ setenforce 0
38
+ fi
39
+ }
40
+
41
+ load_images () {
42
+ for image in " $image_dir " /* ; do
43
+ if [ -f " ${image} " ]; then
44
+ docker load -q -i " ${image} "
45
+ fi
46
+ done
47
+ }
48
+
49
+ check_docker_valid () {
50
+ if ! docker info 2>&1 ; then
51
+ panic " docker is not healthy: $( docker info 2>&1 ) , please check"
52
+ fi
53
+
54
+ dockerVersion=` docker info --format ' {{json .ServerVersion}}' | tr -d ' "' `
55
+ if [ " ${dockerVersion} " != " ${DOCKER_VERSION} " ]; then
56
+ panic " docker version is ${dockerVersion} , should be 19.03.15, please check"
57
+ fi
58
+ }
59
+
60
+ storage=${1:-/ var/ lib/ docker}
61
+ mkdir -p $storage
62
+ if ! utils_command_exists docker; then
63
+ lsb_dist=$( get_distribution)
64
+ lsb_dist=" $( echo " $lsb_dist " | tr ' [:upper:]' ' [:lower:]' ) "
65
+ echo " current system is $lsb_dist "
66
+ case " $lsb_dist " in
67
+ ubuntu | deepin | debian | raspbian)
68
+ cp " ${scripts_path} " /../etc/docker.service /lib/systemd/system/docker.service
69
+ if [ ! -f /usr/sbin/iptables ]; then
70
+ if [ -f /sbin/iptables ]; then
71
+ ln -s /sbin/iptables /usr/sbin/iptables
72
+ else
73
+ panic " iptables not found, please check"
74
+ fi
75
+ fi
76
+ ;;
77
+ centos | rhel | anolis | ol | sles | kylin | neokylin)
78
+ cp " ${scripts_path} " /../etc/docker.service /usr/lib/systemd/system/docker.service
79
+ ;;
80
+ alios)
81
+ docker0=$( ip addr show docker0 | head -1| tr " " " \n" | grep " <" | grep -iwo " UP" | wc -l)
82
+ if [ " $docker0 " != " 1" ]; then
83
+ ip link add name docker0 type bridge
84
+ ip addr add dev docker0 172.17.0.1/16
85
+ fi
86
+ cp " ${scripts_path} " /../etc/docker.service /usr/lib/systemd/system/docker.service
87
+ ;;
88
+ * )
89
+ utils_info " unknown system to use /lib/systemd/system/docker.service"
90
+ cp " ${scripts_path} " /../etc/docker.service /lib/systemd/system/docker.service
91
+ ;;
92
+ esac
93
+
94
+ [ -d /etc/docker/ ] || mkdir /etc/docker/ -p
95
+
96
+ chmod -R 755 " ${scripts_path} " /../cri
97
+ tar -zxvf " ${scripts_path} " /../cri/docker.tar.gz -C /usr/bin
98
+ chmod a+x /usr/bin
99
+ chmod a+x /usr/bin/docker
100
+ chmod a+x /usr/bin/dockerd
101
+ systemctl enable docker.service
102
+ systemctl restart docker.service
103
+ cp " ${scripts_path} " /../etc/daemon.json /etc/docker
104
+ mkdir -p /root/.docker/
105
+ cp " ${scripts_path} " /../etc/docker-cli-config.json /root/.docker/config.json
106
+ if [[ -n $1 && -n $2 ]]; then
107
+ sed -i " s/sea.hub:5000/$2 :$3 /g" /etc/docker/daemon.json
108
+ fi
109
+ fi
110
+
111
+ disable_selinux
112
+ systemctl daemon-reload
113
+ systemctl restart docker.service
114
+ check_docker_valid
115
+
116
+ load_images
0 commit comments