set +eux
+function configure_containerd() {
+ echo "Configuring containerd to expose CRI and use systemd cgroup"
+ sudo mv /etc/containerd/config.toml /etc/containerd/config.toml.orig 2>/dev/null
+ sudo bash -c "containerd config default > /etc/containerd/config.toml"
+ sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
+ if [ -n "${DOCKER_PROXY_URL}" ]; then
+ echo "Configuring ${DOCKER_PROXY_URL} as registry mirror in /etc/containerd/config.toml"
+ 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
+ fi
+ if [ -n "${OSM_BEHIND_PROXY}" ] ; then
+ echo "Configuring http proxies in /etc/systemd/system/containerd.service.d/http-proxy.conf"
+ if ! [ -f /etc/systemd/system/containerd.service.d/http-proxy.conf ] ; then
+ sudo mkdir -p /etc/systemd/system/containerd.service.d
+ cat << EOF | sudo tee -a /etc/systemd/system/containerd.service.d/http-proxy.conf
+[Service]
+EOF
+ fi
+ [ -n "${HTTP_PROXY}" ] && sudo bash -c "cat <<EOF >> /etc/systemd/system/containerd.service.d/http-proxy.conf
+Environment=\"HTTP_PROXY=${HTTP_PROXY}\"
+EOF"
+ [ -n "${HTTPS_PROXY}" ] && sudo bash -c "cat <<EOF >> /etc/systemd/system/containerd.service.d/http-proxy.conf
+Environment=\"HTTPS_PROXY=${HTTPS_PROXY}\"
+EOF"
+ [ -n "${NO_PROXY}" ] && sudo bash -c "cat <<EOF >> /etc/systemd/system/containerd.service.d/http-proxy.conf
+Environment=\"NO_PROXY=${NO_PROXY}\"
+EOF"
+ fi
+ sudo systemctl restart containerd
+}
+
function install_docker_ce() {
# installs and configures Docker CE
[ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
+ echo "Removing previous installation of docker ..."
+ for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
echo "Installing Docker CE ..."
- sudo apt-get -qq update
- sudo apt-get install -y apt-transport-https ca-certificates software-properties-common
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add -
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- sudo apt-get -qq update
+ sudo apt-get -y update
+ sudo apt-get install -y apt-transport-https ca-certificates software-properties-common gnupg
+ sudo install -m 0755 -d /etc/apt/keyrings
+ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
+ sudo chmod a+r /etc/apt/keyrings/docker.gpg
+ echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
+ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
+ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
+ sudo apt-get -y update
sudo apt-get install -y docker-ce
-# echo "Reconfiguring Docker to use systemd as cgroup driver"
-# if [ ! -f /etc/docker/daemon.json ]; then
-# sudo bash -c "cat <<EOF > /etc/docker/daemon.json
-#{
-# \"exec-opts\": [\"native.cgroupdriver=systemd\"],
-# \"log-driver\": \"json-file\",
-# \"log-opts\": {
-# \"max-size\": \"100m\"
-# },
-# \"storage-driver\": \"overlay2\"
-#}
-#EOF"
-# else
-# sudo sed -i "s|native.cgroupdriver=cgroupfs|native.cgroupdriver=systemd|" /etc/docker/daemon.json
-# fi
+
echo "Adding user to group 'docker'"
sudo groupadd -f docker
sudo usermod -aG docker $USER
- sleep 2
- #sudo systemctl enable docker
- #sudo systemctl daemon-reload
- #sudo systemctl restart docker
- sudo service docker restart
- echo "... restarted Docker service"
+
if [ -n "${DOCKER_PROXY_URL}" ]; then
echo "Configuring docker proxy ..."
if [ -f /etc/docker/daemon.json ]; then
EOF"
fi
if [ -n "${DOCKER_PROXY_URL}" ] || [ -n "${OSM_BEHIND_PROXY}" ] ; then
- #sudo systemctl enable docker
sudo systemctl daemon-reload
- #sudo systemctl restart docker
- sudo service docker restart
- echo "... restarted Docker service again"
+ sudo systemctl restart docker
+ echo "... restarted Docker service"
fi
+
+ configure_containerd
+
[ -z "${DEBUG_INSTALL}" ] || ! echo "File: /etc/docker/daemon.json" || cat /etc/docker/daemon.json
- sg docker -c "docker version" || FATAL "Docker installation failed"
+ echo "Testing Docker CE installation ..."
+ sg docker -c "docker version" || FATAL_TRACK docker_ce "Docker installation failed. Cannot run docker version"
+ sg docker -c "docker run --rm hello-world" || FATAL_TRACK docker_ce "Docker installation failed. Cannot run hello-world"
echo "... Docker CE installation done"
[ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
return 0