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