mirror of
https://github.com/Websoft9/websoft9.git
synced 2024-11-22 07:30:24 +00:00
166 lines
No EOL
4.5 KiB
Bash
166 lines
No EOL
4.5 KiB
Bash
#!/bin/bash
|
|
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
|
|
export PATH
|
|
|
|
# Install and Upgade Docker for mosts of Linux
|
|
# This script is intended from https://get.docker.com and add below:
|
|
#
|
|
# - remove Podman
|
|
# - support Redhat, CentOS-Stream, OracleLinux, AmazonLinux
|
|
#
|
|
# 1. download the script
|
|
#
|
|
# $ curl -fsSL https://websoft9.github.io/websoft9/install/install-docker.sh -o install-docker.sh
|
|
#
|
|
# 2. verify the script's content
|
|
#
|
|
# $ cat install-docker.sh
|
|
#
|
|
# 3. run the script with --dry-run to verify the steps it executes
|
|
#
|
|
# $ sh install-docker.sh --dry-run
|
|
#
|
|
# 4. run the script either as root, or using sudo to perform the installation.
|
|
#
|
|
# $ sudo sh install-docker.sh
|
|
|
|
############################################################
|
|
# Below vars export from install.sh
|
|
# $force_install
|
|
############################################################
|
|
|
|
|
|
docker_packages="docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin"
|
|
echo_prefix_docker=$'\n[Docker] - '
|
|
|
|
# Function to check if apt is locked
|
|
is_apt_locked(){
|
|
if [[ -f /var/lib/dpkg/lock-frontend || -f /var/lib/apt/lists/lock ]]; then
|
|
return 0 # Apt is locked
|
|
else
|
|
return 1 # Apt is not locked
|
|
fi
|
|
}
|
|
|
|
docker_exist() {
|
|
# 检查 `docker` 命令是否存在
|
|
if ! command -v docker &> /dev/null; then
|
|
echo "false"
|
|
return 1
|
|
fi
|
|
|
|
# 检查 Docker 服务是否存在
|
|
systemctl status docker &> /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
echo "false"
|
|
return 1
|
|
fi
|
|
|
|
echo "true"
|
|
return 0
|
|
}
|
|
|
|
|
|
Install_Docker(){
|
|
echo "$echo_prefix_docker Installing Docker for your system"
|
|
|
|
# For redhat family
|
|
if [[ -f /etc/redhat-release ]]; then
|
|
# For CentOS, Fedora, or RHEL(only s390x)
|
|
if [[ $(cat /etc/redhat-release) =~ "RHEL" ]] && [[ $(uname -m) == "s390x" ]] || [[ $(cat /etc/redhat-release) =~ "CentOS" ]] || [[ $(cat /etc/redhat-release) =~ "Fedora" ]]; then
|
|
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
|
|
else
|
|
# For other distributions
|
|
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
|
|
sudo yum install $docker_packages -y
|
|
fi
|
|
fi
|
|
|
|
# For Ubuntu, Debian, or Raspbian
|
|
if type apt >/dev/null 2>&1; then
|
|
apt update
|
|
# Wait for apt to be unlocked
|
|
while is_apt_locked; do
|
|
echo "Waiting for apt to be unlocked..."
|
|
sleep 5
|
|
done
|
|
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
|
|
fi
|
|
}
|
|
|
|
|
|
Upgrade_Docker(){
|
|
if eval "$docker_exist"; then
|
|
echo "$echo_prefix_docker Upgrading Docker for your system..."
|
|
dnf --version >/dev/null 2>&1
|
|
dnf_status=$?
|
|
yum --version >/dev/null 2>&1
|
|
yum_status=$?
|
|
apt --version >/dev/null 2>&1
|
|
apt_status=$?
|
|
|
|
if [ $dnf_status -eq 0 ]; then
|
|
sudo dnf update -y $docker_packages
|
|
elif [ $yum_status -eq 0 ]; then
|
|
sudo yum update -y $docker_packages
|
|
elif [ $apt_status -eq 0 ]; then
|
|
sudo apt -y install --only-upgrade $docker_packages
|
|
else
|
|
echo "Docker installed, but cannot upgrade"
|
|
fi
|
|
else
|
|
Install_Docker
|
|
fi
|
|
}
|
|
|
|
Remove_Podman(){
|
|
echo "$echo_prefix_docker Try to remove Podman"
|
|
podman pod stop --all
|
|
# Remove Podman and its dependencies
|
|
if [ -x "$(command -v dnf)" ]; then
|
|
sudo dnf remove podman -y
|
|
elif [ -x "$(command -v apt)" ]; then
|
|
sudo apt remove podman -y
|
|
elif [ -x "$(command -v zypper)" ]; then
|
|
sudo zypper remove podman -y
|
|
elif [ -x "$(command -v pacman)" ]; then
|
|
sudo pacman -Rs podman --noconfirm
|
|
else
|
|
echo "Unable to find a suitable package manager to remove Podman."
|
|
exit 1
|
|
fi
|
|
echo "Podman has been stopped and removed."
|
|
|
|
}
|
|
|
|
|
|
Set_Docker(){
|
|
# should have Docker server and Docker cli
|
|
if eval $docker_exist; then
|
|
echo "$echo_prefix_docker Starting to Set docker..."
|
|
sudo systemctl enable docker
|
|
sudo systemctl restart docker
|
|
if ! docker network inspect websoft9 > /dev/null 2>&1; then
|
|
sudo docker network create websoft9
|
|
fi
|
|
else
|
|
echo "Docker no installed, exit..."
|
|
exit
|
|
fi
|
|
}
|
|
|
|
## This Script starting here ....................................
|
|
|
|
if command -v podman &> /dev/null; then
|
|
if [ "$force_install" = "y" ]; then
|
|
Remove_Podman
|
|
else
|
|
read -p "Install Websoft9 will remove Podman and Install Docker for continue(y/n): " answer
|
|
if [ "$answer" = "y" ]; then
|
|
Remove_Podman
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
Upgrade_Docker
|
|
Set_Docker |