mirror of
https://github.com/bigbeartechworld/big-bear-scripts.git
synced 2026-08-04 19:15:12 -04:00
Fix docker permission with docker group (#57)
* Add user to docker group and improve Docker service handling Introduces a function to add the current user to the docker group if not running as root, with instructions for group change to take effect. Also enables docker.socket and docker service before starting them, and updates step numbering for CasaOS service restart. * Remove manual Docker directory permission fixes Eliminated explicit chown and chmod operations on Docker directories and subdirectories. The script now relies on Docker to set its own directory permissions on startup, simplifying the cleanup process and reducing potential permission issues. * Update script version to 1.2.0 in run.sh Bumped the displayed version number in the CasaOS Docker Version Fix Script from 1.1.0 to 1.2.0.
This commit is contained in:
@@ -20,7 +20,7 @@ else
|
||||
fi
|
||||
|
||||
echo "=========================================="
|
||||
echo "BigBear CasaOS Docker Version Fix Script 1.1.0"
|
||||
echo "BigBear CasaOS Docker Version Fix Script 1.2.0"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "Here are some links:"
|
||||
@@ -124,6 +124,53 @@ check_containerd_version() {
|
||||
return 0
|
||||
}
|
||||
|
||||
# Function to add user to docker group
|
||||
add_user_to_docker_group() {
|
||||
# Only add user to docker group if not running as root
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
local current_user=$(whoami)
|
||||
|
||||
# Check if docker group exists
|
||||
if getent group docker >/dev/null 2>&1; then
|
||||
# Check if user is already in docker group
|
||||
if ! groups "$current_user" | grep -q '\bdocker\b'; then
|
||||
echo "Adding user '$current_user' to docker group..."
|
||||
$SUDO usermod -aG docker "$current_user"
|
||||
echo ""
|
||||
echo "✓ User added to docker group"
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "IMPORTANT: Group Change Requires New Login"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "For the docker group permission to take effect, you need to:"
|
||||
echo " 1. Log out of your current session"
|
||||
echo " 2. Log back in"
|
||||
echo ""
|
||||
echo "OR run this command to start a new shell with updated groups:"
|
||||
echo " newgrp docker"
|
||||
echo ""
|
||||
echo "After that, you'll be able to run docker commands without sudo."
|
||||
echo ""
|
||||
return 0
|
||||
else
|
||||
echo "User '$current_user' is already in docker group"
|
||||
echo ""
|
||||
return 0
|
||||
fi
|
||||
else
|
||||
echo "Warning: docker group does not exist"
|
||||
echo "This is unusual - Docker installation may have issues"
|
||||
echo ""
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
echo "Running as root - skipping docker group addition"
|
||||
echo ""
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to stop CasaOS services
|
||||
stop_casaos_services() {
|
||||
echo "Stopping CasaOS services..."
|
||||
@@ -346,9 +393,9 @@ remove_standalone_docker_compose() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to clean Docker state and fix permissions
|
||||
# Function to clean Docker runtime state
|
||||
clean_docker_state() {
|
||||
echo "Cleaning Docker state and fixing permissions..."
|
||||
echo "Cleaning Docker runtime state..."
|
||||
|
||||
# Stop Docker first
|
||||
if $SUDO systemctl is-active --quiet docker; then
|
||||
@@ -358,48 +405,30 @@ clean_docker_state() {
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# Clean up Docker runtime state
|
||||
# Clean up Docker runtime state (sockets, pids)
|
||||
if [ -d /var/run/docker ]; then
|
||||
echo "Cleaning Docker runtime state..."
|
||||
echo "Cleaning Docker sockets and pids..."
|
||||
$SUDO rm -rf /var/run/docker/*
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# Fix containerd state
|
||||
if [ -d /run/containerd ]; then
|
||||
echo "Cleaning containerd state..."
|
||||
echo "Cleaning containerd runtime state..."
|
||||
$SUDO rm -rf /run/containerd/runc
|
||||
$SUDO rm -rf /run/containerd/io.containerd*
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# Clean up any stale container state
|
||||
# Clean up any stale container pids
|
||||
if [ -d /var/lib/docker/containers ]; then
|
||||
echo "Cleaning container state..."
|
||||
echo "Cleaning stale container pids..."
|
||||
$SUDO find /var/lib/docker/containers -name "*.pid" -delete 2>/dev/null || true
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# Fix core Docker directory permissions
|
||||
if [ -d /var/lib/docker ]; then
|
||||
echo "Fixing Docker directory permissions..."
|
||||
$SUDO chown -R root:root /var/lib/docker
|
||||
$SUDO chmod 711 /var/lib/docker
|
||||
|
||||
# Fix specific subdirectories
|
||||
[ -d /var/lib/docker/overlay2 ] && $SUDO chmod 755 /var/lib/docker/overlay2
|
||||
[ -d /var/lib/docker/containers ] && $SUDO chmod 755 /var/lib/docker/containers
|
||||
[ -d /var/lib/docker/image ] && $SUDO chmod 755 /var/lib/docker/image
|
||||
[ -d /var/lib/docker/volumes ] && $SUDO chmod 755 /var/lib/docker/volumes
|
||||
|
||||
# Fix overlay2/l directory which is critical for overlay2 storage
|
||||
if [ -d /var/lib/docker/overlay2/l ]; then
|
||||
$SUDO chmod 700 /var/lib/docker/overlay2/l
|
||||
fi
|
||||
echo ""
|
||||
fi
|
||||
|
||||
echo "Docker state cleanup complete"
|
||||
echo "Docker runtime cleanup complete"
|
||||
echo "Docker will set its own directory permissions on startup"
|
||||
echo ""
|
||||
}
|
||||
|
||||
@@ -546,17 +575,6 @@ downgrade_docker() {
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Fix overlay2 permissions if directory exists
|
||||
if [ -d /var/lib/docker/overlay2 ]; then
|
||||
echo "Fixing overlay2 directory permissions..."
|
||||
$SUDO chown -R root:root /var/lib/docker/overlay2
|
||||
$SUDO chmod -R 755 /var/lib/docker/overlay2
|
||||
if [ -d /var/lib/docker/overlay2/l ]; then
|
||||
$SUDO chmod 700 /var/lib/docker/overlay2/l
|
||||
fi
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# Reload systemd and restart Docker service
|
||||
echo "Reloading systemd daemon..."
|
||||
$SUDO systemctl daemon-reload
|
||||
@@ -569,13 +587,15 @@ downgrade_docker() {
|
||||
sleep 2
|
||||
echo ""
|
||||
|
||||
# Start docker socket first, then service
|
||||
echo "Starting Docker socket..."
|
||||
# Enable and start docker socket first, then service
|
||||
echo "Enabling and starting Docker socket..."
|
||||
$SUDO systemctl enable docker.socket 2>/dev/null || true
|
||||
$SUDO systemctl start docker.socket
|
||||
sleep 1
|
||||
echo ""
|
||||
|
||||
echo "Starting Docker service..."
|
||||
echo "Enabling and starting Docker service..."
|
||||
$SUDO systemctl enable docker
|
||||
$SUDO systemctl start docker
|
||||
sleep 3
|
||||
echo ""
|
||||
@@ -722,16 +742,11 @@ downgrade_docker() {
|
||||
$SUDO mv /var/lib/docker /var/lib/docker.backup.$timestamp
|
||||
fi
|
||||
|
||||
# Recreate Docker directory structure
|
||||
echo "Creating fresh Docker directory structure..."
|
||||
$SUDO mkdir -p /var/lib/docker
|
||||
$SUDO chmod 711 /var/lib/docker
|
||||
|
||||
# Clean all runtime state
|
||||
$SUDO rm -rf /run/containerd/* 2>/dev/null || true
|
||||
$SUDO rm -rf /var/run/docker/* 2>/dev/null || true
|
||||
|
||||
# Restart services
|
||||
# Restart services - Docker will recreate /var/lib/docker with correct permissions
|
||||
echo "Starting Docker services..."
|
||||
$SUDO systemctl start containerd 2>/dev/null || true
|
||||
sleep 2
|
||||
@@ -859,8 +874,11 @@ main() {
|
||||
fi
|
||||
echo ""
|
||||
|
||||
echo "Step 8: Configuring Docker permissions..."
|
||||
add_user_to_docker_group
|
||||
|
||||
if [ "$CASAOS_INSTALLED" = true ]; then
|
||||
echo "Step 8: Restarting CasaOS services..."
|
||||
echo "Step 9: Restarting CasaOS services..."
|
||||
start_casaos_services
|
||||
|
||||
echo "=========================================="
|
||||
|
||||
Reference in New Issue
Block a user