2022-05-20 18:31:46 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
2022-08-08 21:16:33 +00:00
|
|
|
export err="\033[1;31m[-]\033[m"
|
|
|
|
|
export msg="\033[1;32m[+]\033[m"
|
|
|
|
|
export info="\033[0;36m[:]\033[m"
|
|
|
|
|
|
2022-05-20 18:31:46 +00:00
|
|
|
# Make sure the script is run as root
|
|
|
|
|
if [[ $EUID -ne 0 ]]; then
|
2022-08-08 21:16:33 +00:00
|
|
|
echo -e "${err} This script must be run as root." 1>&2
|
2022-05-20 18:31:46 +00:00
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
2022-08-08 21:16:33 +00:00
|
|
|
# Check if Docker is already installed
|
|
|
|
|
if [[ "$(command -v docker)" -ne "" ]]; then
|
|
|
|
|
echo -e "${err} Docker is already installed."
|
|
|
|
|
exit 1;
|
|
|
|
|
fi
|
|
|
|
|
|
2022-05-20 18:31:46 +00:00
|
|
|
# Install dependencies
|
2022-08-08 21:16:33 +00:00
|
|
|
echo -e "${info} Updating repositories..."
|
2022-05-21 14:45:18 +00:00
|
|
|
apt-get update &> /dev/null
|
2022-08-08 21:16:33 +00:00
|
|
|
echo -e "${info} Installing dependencies..."
|
2022-05-21 14:40:14 +00:00
|
|
|
apt-get install -y \
|
2022-05-20 18:31:46 +00:00
|
|
|
ca-certificates \
|
|
|
|
|
curl \
|
|
|
|
|
gnupg \
|
2022-05-21 14:43:44 +00:00
|
|
|
lsb-release &> /dev/null
|
2022-05-20 18:31:46 +00:00
|
|
|
|
|
|
|
|
# Add GPG key
|
|
|
|
|
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
2022-08-08 21:16:33 +00:00
|
|
|
echo -e "${add} Added Docker's GPG key"
|
2022-05-20 18:31:46 +00:00
|
|
|
|
|
|
|
|
# Add repository
|
|
|
|
|
echo \
|
|
|
|
|
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
|
2022-05-21 14:45:18 +00:00
|
|
|
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list &> /dev/null
|
2022-08-08 21:16:33 +00:00
|
|
|
echo -e "${add} 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..."
|
2022-05-21 14:45:18 +00:00
|
|
|
apt-get update &> /dev/null
|
2022-08-08 21:16:33 +00:00
|
|
|
echo -e "${info} Installing Docker. Please wait..."
|
|
|
|
|
apt-get install -y docker-ce docker-ce-cli containerd.io &> /dev/null
|
|
|
|
|
echo -e "${add} Docker successfully installed:" $(docker --version)
|
|
|
|
|
|
2022-05-20 18:31:46 +00:00
|
|
|
|
|
|
|
|
# Install Docker Compose
|
|
|
|
|
while true; do
|
2022-05-21 10:30:21 +00:00
|
|
|
read -p "[?] Do you want to install Docker Compose? [y/n] " yn
|
2022-05-20 18:31:46 +00:00
|
|
|
case $yn in
|
2022-08-08 21:16:33 +00:00
|
|
|
[Yy]* ) echo -e "${info} Installing Docker Compose. Please wait...";
|
2022-05-21 14:43:44 +00:00
|
|
|
apt-get install -y docker-compose &> /dev/null ;
|
2022-08-08 21:16:33 +00:00
|
|
|
echo -e "${add} Docker Compose successfully installed:" $(docker-compose --version);
|
2022-05-21 11:25:57 +00:00
|
|
|
break;;
|
2022-05-21 10:50:16 +00:00
|
|
|
[Nn]* ) break;;
|
2022-05-21 15:21:14 +00:00
|
|
|
* ) ;;
|
2022-05-20 18:31:46 +00:00
|
|
|
esac
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
# Create Docker user
|
|
|
|
|
while true; do
|
2022-05-21 15:21:14 +00:00
|
|
|
read -p "[?] Do you want to create a Docker user? [y/n] " yn
|
2022-05-20 18:31:46 +00:00
|
|
|
case $yn in
|
2022-05-21 15:21:14 +00:00
|
|
|
[Yy]* ) read -p "Please choose an id for the new user/group: " id;
|
2022-08-08 21:16:33 +00:00
|
|
|
/usr/sbin/groupadd -g $id dockeruser && /usr/sbin/useradd dockeruser -u $id -g $id -m -s /bin/bash && echo "${add} Docker user created:" && id dockeruser;
|
2022-05-21 10:50:16 +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-05-21 14:45:18 +00:00
|
|
|
systemctl start docker.service docker.socket containerd && systemctl enable docker.service docker.socket containerd &> /dev/null
|
2022-08-08 21:16:33 +00:00
|
|
|
echo -e "${msg} Docker service started and enabled."
|
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."
|