Last active
December 18, 2020 17:01
-
-
Save Tob1as/f6fba3fc041d3c8aacfa68441cc54124 to your computer and use it in GitHub Desktop.
Docker and Docker-Compose on Raspbian 10 Buster! (07.2019)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e | |
# Docker on Raspbian 10 Buster!!!! | |
# Source-URL: https://gist.github.com/Tob1as/f6fba3fc041d3c8aacfa68441cc54124 | |
# Created: 2019-07-24 ; last Updated: 2020-07-04 | |
# if error "/bin/bash^M: bad interpreter" then execute: "sed -i -e 's/\r$//' *.sh" | |
# Read more: | |
# https://github.com/docker/for-linux/issues/709 | |
# https://withblue.ink/2019/07/13/yes-you-can-run-docker-on-raspbian.html | |
# https://www.heise.de/ct/artikel/Fehler-Korrekturen-und-Neues-rund-um-den-Raspi-4-4471888.html#nav_container_mit__2 | |
# https://docs.docker.com/compose/install/#alternative-install-options | |
# Install some required packages | |
install_requirements () { | |
sudo apt update | |
sudo apt install -y \ | |
apt-transport-https \ | |
ca-certificates \ | |
curl \ | |
gnupg2 \ | |
software-properties-common | |
} | |
# Install Docker | |
install_docker () { | |
# Get the Docker signing key for packages | |
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo apt-key add - | |
# Add the Docker official repos | |
echo "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \ | |
$(lsb_release -cs) stable" | \ | |
sudo tee /etc/apt/sources.list.d/docker.list | |
# replace raspbian with debian in docker.list | |
#sudo sed -i -e 's/raspbian/debian/g' /etc/apt/sources.list.d/docker.list | |
# Install Docker | |
sudo apt update | |
sudo apt install -y --no-install-recommends docker-ce | |
sudo usermod -aG docker pi | |
} | |
# ARMv6 (RaspberryPi 1) fix | |
install_docker_containerdio_armv6_fix () { | |
if [[ "$(uname -m)" = "armv6"* ]]; then | |
curl -fsSL https://packagecloud.io/Hypriot/rpi/gpgkey | sudo apt-key add - | |
echo "deb https://packagecloud.io/Hypriot/rpi/$(. /etc/os-release; echo "$ID") \ | |
$(lsb_release -cs) main" | \ | |
sudo tee /etc/apt/sources.list.d/Hypriot_rpi.list | |
sudo sh -c 'cat << EOF > /etc/apt/preferences.d/Hypriot_rpi | |
Package: containerd.io | |
Pin: origin packagecloud.io | |
Pin-Priority: 1001 | |
EOF' | |
sudo apt update | |
sudo apt install -y --no-install-recommends --allow-downgrades containerd.io | |
sudo systemctl restart docker | |
fi | |
} | |
# Install docker-compose | |
install_docker_compose () { | |
#sudo apt install -y docker-compose # old Version (1.21.0-3), use pip! | |
## Python2 | |
#sudo apt install -y python-pip libffi-dev python-backports.ssl-match-hostname | |
#sudo apt install -y python-pretty-yaml python-dockerpty python-texttable python-functools32 python-bcrypt python-nacl \ | |
# python-chardet python-certifi python-urllib3 python-idna python-requests python-websocket python-dockerpycreds \ | |
# python-pycparser python-cffi python-docker python-paramiko python-jsonschema python-docopt python-cached-property \ | |
# python-backports-shutil-get-terminal-size | |
#sudo pip install docker-compose --upgrade | |
## Python3 | |
#sudo apt install -y python3-pip | |
#sudo apt install -y python3-dockerpty python3-docopt python3-dotenv python3-texttable python3-docker python3-cached-property \ | |
# python3-distro python3-link-grammar python3-websocket python3-jsonschema python3-paramiko python3-attr python3-cffi python3-pycparser | |
#sudo apt install -y python3-pyrsistent python3-importlib-metadata python3-zipp # only in sid | |
sudo apt install -y python3-bcrypt python3-nacl | |
sudo pip3 install docker-compose --upgrade | |
} | |
# Install Bash Completion for docker | |
install_bash_completion_docker () { | |
sudo mkdir -p /etc/bash_completion.d/ | |
#DOCKER_VERSION="$(docker -v | cut -d ' ' -f3 | cut -d ',' -f1 | awk '{printf "%.2f\n", $NF}')" | |
DOCKER_VERSION=$(curl -s https://api.github.com/repos/docker/docker-ce/releases/latest | grep 'tag_name' | cut -d\" -f4 | tr -d v | awk '{printf "%.2f\n", $NF}') | |
sudo curl -L https://github.com/docker/docker-ce/raw/$DOCKER_VERSION/components/cli/contrib/completion/bash/docker -o /etc/bash_completion.d/docker | |
} | |
# Install Bash Completion for docker-compose | |
install_bash_completion_docker_compose () { | |
sudo mkdir -p /etc/bash_completion.d/ | |
#DOCKER_COMPOSE_VERSION=$(docker-compose -v | cut -d ' ' -f3 | cut -d ',' -f1) | |
DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4) | |
sudo curl -L https://raw.githubusercontent.com/docker/compose/$DOCKER_COMPOSE_VERSION/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose | |
} | |
# Show installed versions | |
show_installed_versions () { | |
docker -v | |
docker-compose -v | |
} | |
# Main | |
main () { | |
install_requirements | |
install_docker | |
#install_docker_containerdio_armv6_fix | |
install_docker_compose | |
install_bash_completion_docker | |
install_bash_completion_docker_compose | |
show_installed_versions | |
} | |
main |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This code to install is a solution for: docker/for-linux#709 and was tested on a Raspberry Pi 3, Raspberry Pi 2 (armv7) and Raspberry Pi 1 (armv6).
Example-Image for Test:
docker run --name nginx --rm -p 80:80 -d tobi312/rpi-nginx:alpine-1.16
ToDo (to me): Update my docker-compose install script