2022-05-20 18:31:46 +00:00
#!/bin/bash
2023-02-14 12:31:05 +00:00
err = "\033[1;31m[!]\033[m"
msg = "\033[1;32m[+]\033[m"
info = "\033[0;36m[:]\033[m"
ask = "\033[0;35m[?]\033[m"
2022-08-08 21:16:33 +00:00
2022-05-20 18:31:46 +00:00
# Make sure the script is run as root
if [ [ $EUID -ne 0 ] ] ; then
2023-02-14 12:31:05 +00:00
echo -e " ${ err } This script must be run as root. "
exit 1
2022-05-20 18:31:46 +00:00
fi
2022-08-08 21:16:33 +00:00
# Check if Docker is already installed
2023-02-14 12:31:05 +00:00
if command -v docker & >/dev/null; then
2023-07-19 19:20:31 +02:00
while true; do
echo -e " ${ err } Docker is already installed. "
read -p "Do you want still want to run the script? [y/n] " yn </dev/tty
case $yn in
[ Yy] ) break; ;
[ Nn] ) exit 1; ;
* ) ; ;
esac
done
2022-08-08 21:16:33 +00:00
fi
2023-07-19 17:53:21 +02:00
# Check if machine runs Debian (only checks if apt-get exists, maybe needs a better implementation?)
2023-02-14 12:31:05 +00:00
if ! command -v apt-get & >/dev/null; then
2023-07-19 17:53:21 +02:00
echo -e " ${ err } This script only works on Debian machines, sorry! "
2023-02-14 12:31:05 +00:00
exit 1
2022-10-17 13:15:07 +00:00
fi
2023-07-19 17:53:21 +02:00
# Remove old and incompatible packages
2023-07-19 18:18:05 +02:00
echo -e " ${ info } Removing old and incompatible packages... "
2023-07-19 19:31:20 +02:00
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do apt-get remove -y $pkg >/dev/null; done
2023-07-19 17:53:21 +02:00
2023-02-14 12:31:05 +00:00
# Install dependencies
2022-08-08 21:16:33 +00:00
echo -e " ${ info } Updating repositories... "
2023-02-14 12:31:05 +00:00
apt-get update >/dev/null
2023-07-19 17:53:21 +02:00
echo -e " ${ info } Installing dependencies... "
2023-07-19 17:29:05 +02:00
apt-get install -y ca-certificates curl gnupg >/dev/null
2022-05-20 18:31:46 +00:00
# Add GPG key
2023-07-19 18:37:21 +02:00
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg &&
2023-07-19 17:29:05 +02:00
chmod a+r /etc/apt/keyrings/docker.gpg &&
2022-08-22 18:41:58 +00:00
echo -e " ${ msg } Added Docker's GPG key "
2022-05-20 18:31:46 +00:00
# Add repository
2023-07-19 19:01:01 +02:00
echo "deb [arch=" $( dpkg --print-architecture) " signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian " $( . /etc/os-release && echo " $VERSION_CODENAME " ) " stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null &&
2022-08-22 18:41:58 +00:00
echo -e " ${ msg } Added Docker's stable repository "
2022-05-20 18:31:46 +00:00
# Install Docker
2022-08-08 21:16:33 +00:00
echo -e " ${ info } Updating repositories... "
2023-02-14 12:31:05 +00:00
apt-get update >/dev/null
2023-07-19 19:01:01 +02:00
echo -e " ${ info } Installing Docker and Docker compose (this might take a while)... "
2023-07-19 17:29:05 +02:00
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin >/dev/null &&
2023-02-14 12:31:05 +00:00
echo -e " ${ msg } Docker successfully installed: \033[0;32m $( docker --version) \033[m "
2022-05-20 18:31:46 +00:00
# Create Docker user
while true; do
2023-02-14 12:31:05 +00:00
echo -e -n " ${ ask } "
read -p "Do you want to create a Docker user? [y/n] " yn </dev/tty
2022-05-20 18:31:46 +00:00
case $yn in
2023-02-14 12:31:05 +00:00
[ Yy] ) while true; do
echo -e -n " ${ ask } "
read -p "Please choose an ID for the new user/group: " id </dev/tty;
if id $id & >/dev/null; then
2023-07-19 18:18:05 +02:00
echo -e " ${ err } An user with the same ID already exists: \033[0;36m $( id $id ) \033[m " ;
2023-02-14 12:31:05 +00:00
continue ;
else
/usr/sbin/groupadd -g $id dockeruser && /usr/sbin/useradd dockeruser -u $id -g $id -m -s /bin/bash &&
echo -e " ${ msg } Docker user created: \033[0;32m $( id dockeruser) \033[m "
break;
fi
2022-10-17 13:15:07 +00:00
done
2023-02-14 12:31:05 +00:00
break; ;
[ Nn] ) break; ;
2022-05-21 15:21:14 +00:00
* ) ; ;
2022-05-20 18:31:46 +00:00
esac
done
2022-05-21 11:43:46 +00:00
# Enable Docker service at startup
2022-10-17 13:15:07 +00:00
echo -e " ${ info } Starting Docker services... "
2023-07-19 17:53:21 +02:00
systemctl enable --now docker.service containerd.service >/dev/null &&
2023-07-19 18:18:05 +02:00
echo -e " ${ msg } Docker services started and enabled. " || echo -e " ${ err } Could not start docker services. Try running \033[0;36msystemctl enable --now docker.service containerd.service\033[m again in a few minutes. "
2022-05-21 14:03:33 +00:00
2022-08-08 21:16:33 +00:00
echo -e " ${ info } Process completed. Run '\033[0;36msystemctl status docker\033[m' to check Docker's status. "