X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=installers%2Finstall_docker_ce.sh;h=9d6387fde54bc09e3c4db32bc12e9e0d3ac7531e;hb=HEAD;hp=90035dfe795781020447a13699867ed99c384a70;hpb=fa3eb33a4fcb134bd60b4006c54f3e31f8bce929;p=osm%2Fdevops.git diff --git a/installers/install_docker_ce.sh b/installers/install_docker_ce.sh index 90035dfe..5010f7e3 100755 --- a/installers/install_docker_ce.sh +++ b/installers/install_docker_ce.sh @@ -15,40 +15,57 @@ 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 <> /etc/systemd/system/containerd.service.d/http-proxy.conf +Environment=\"HTTP_PROXY=${HTTP_PROXY}\" +EOF" + [ -n "${HTTPS_PROXY}" ] && sudo bash -c "cat <> /etc/systemd/system/containerd.service.d/http-proxy.conf +Environment=\"HTTPS_PROXY=${HTTPS_PROXY}\" +EOF" + [ -n "${NO_PROXY}" ] && sudo bash -c "cat <> /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 < /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 @@ -83,14 +100,17 @@ Environment=\"NO_PROXY=${NO_PROXY}\" 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