3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
18 function install_docker_ce
() {
19 # installs and configures Docker CE
20 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of
function
21 echo "Installing Docker CE ..."
22 sudo apt-get
-qq update
23 sudo apt-get
install -y apt-transport-https ca-certificates software-properties-common
24 curl
-fsSL https
://download.docker.com
/linux
/ubuntu
/gpg | sudo APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE
=1 apt-key add
-
25 sudo add-apt-repository
-y "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
26 sudo apt-get
-qq update
27 sudo apt-get
install -y docker-ce
28 # echo "Reconfiguring Docker to use systemd as cgroup driver"
29 # if [ ! -f /etc/docker/daemon.json ]; then
30 # sudo bash -c "cat <<EOF > /etc/docker/daemon.json
32 # \"exec-opts\": [\"native.cgroupdriver=systemd\"],
33 # \"log-driver\": \"json-file\",
35 # \"max-size\": \"100m\"
37 # \"storage-driver\": \"overlay2\"
41 # sudo sed -i "s|native.cgroupdriver=cgroupfs|native.cgroupdriver=systemd|" /etc/docker/daemon.json
43 echo "Adding user to group 'docker'"
44 sudo groupadd
-f docker
45 sudo usermod
-aG docker
$USER
47 #sudo systemctl enable docker
48 #sudo systemctl daemon-reload
49 #sudo systemctl restart docker
50 sudo service docker restart
51 echo "... restarted Docker service"
52 if [ -n "${DOCKER_PROXY_URL}" ]; then
53 echo "Configuring docker proxy ..."
54 if [ -f /etc
/docker
/daemon.json
]; then
55 if grep -q registry-mirrors
/etc
/docker
/daemon.json
; then
56 sudo
sed -i "s|registry-mirrors.*|registry-mirrors\": [\"${DOCKER_PROXY_URL}\"] |" /etc
/docker
/daemon.json
58 sudo
sed -i "s|^{|{\n \"registry-mirrors\": [\"${DOCKER_PROXY_URL}\"],|" /etc
/docker
/daemon.json
61 sudo bash
-c "cat << EOF > /etc/docker/daemon.json
63 \"registry-mirrors\": [\"${DOCKER_PROXY_URL}\"]
68 if [ -n "${OSM_BEHIND_PROXY}" ] ; then
69 if ! [ -f /etc
/systemd
/system
/docker.service.d
/http-proxy.conf
] ; then
70 sudo mkdir
-p /etc
/systemd
/system
/docker.service.d
71 cat << EOF | sudo tee -a /etc/systemd/system/docker.service.d/http-proxy.conf
75 [ -n "${HTTP_PROXY}" ] && sudo bash
-c "cat <<EOF >> /etc/systemd/system/docker.service.d/http-proxy.conf
76 Environment=\"HTTP_PROXY=${HTTP_PROXY}\"
78 [ -n "${HTTPS_PROXY}" ] && sudo bash
-c "cat <<EOF >> /etc/systemd/system/docker.service.d/http-proxy.conf
79 Environment=\"HTTPS_PROXY=${HTTPS_PROXY}\"
81 [ -n "${NO_PROXY}" ] && sudo bash
-c "cat <<EOF >> /etc/systemd/system/docker.service.d/http-proxy.conf
82 Environment=\"NO_PROXY=${NO_PROXY}\"
85 if [ -n "${DOCKER_PROXY_URL}" ] ||
[ -n "${OSM_BEHIND_PROXY}" ] ; then
86 #sudo systemctl enable docker
87 sudo systemctl daemon-reload
88 #sudo systemctl restart docker
89 sudo service docker restart
90 echo "... restarted Docker service again"
93 if [ -n "${DOCKER_PROXY_URL}" ]; then
94 echo "Configuring containerd"
95 sudo
mv /etc
/containerd
/config.toml
/etc
/containerd
/config.toml.orig
2>/dev
/null
96 sudo bash
-c "containerd config default > /etc/containerd/config.toml"
97 sudo
sed -i "s#\[plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors\]#\[plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors\]\n \[plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors.\"docker.io\"\]\n endpoint = \[\"${DOCKER_PROXY_URL}\"\]\n \[plugins.\"io.containerd.grpc.v1.cri\".registry.mirrors.\"registry.hub.docker.com\"]\n endpoint = \[\"${DOCKER_PROXY_URL}\"]#" /etc
/containerd
/config.toml
98 sudo
diff /etc
/containerd
/config.toml.orig
/etc
/containerd
/config.toml
99 sudo service containerd restart
102 [ -z "${DEBUG_INSTALL}" ] ||
! echo "File: /etc/docker/daemon.json" ||
cat /etc
/docker
/daemon.json
103 sg docker
-c "docker version" || FATAL
"Docker installation failed"
104 echo "... Docker CE installation done"
105 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of
function
112 while getopts ":D:p:-: P" o
; do
115 OSM_DEVOPS
="${OPTARG}"
118 DOCKER_PROXY_URL
="${OPTARG}"
124 [ "${OPTARG}" == "debug" ] && DEBUG_INSTALL
="y" && continue
125 echo -e "Invalid option: '--$OPTARG'\n" >&2
129 echo "Option -$OPTARG requires an argument" >&2
133 echo -e "Invalid option: '-$OPTARG'\n" >&2
142 source $OSM_DEVOPS/common
/logging
144 echo "DEBUG_INSTALL=$DEBUG_INSTALL"
145 echo "DOCKER_PROXY_URL=$DOCKER_PROXY_URL"
146 echo "OSM_BEHIND_PROXY=$OSM_BEHIND_PROXY"