@@ -370,104 +370,105 @@ echo "Please log out and log back in to apply group changes."
370370}
371371
372372if type docker > /dev/null 2>&1 && type dockerd > /dev/null 2>&1 ; then
373- echo " Docker / Moby CLI and Engine already installed."
373+ echo " Docker / Moby CLI and Engine already installed."
374374else
375- if [ " ${USE_MOBY} " = " true" ]; then
376- if { [ " $ID " = " ubuntu" ] || [ " $ID " = " debian" ]; }; then
377- # Install engine
378- set +e # Handle error gracefully
379- apt-get -y install --no-install-recommends \
380- moby-cli${cli_version_suffix} \
381- moby-buildx${buildx_version_suffix} \
382- moby-engine${engine_version_suffix}
383- exit_code=$?
384- set -e
385-
386- if [ ${exit_code} -ne 0 ]; then
387- err " Packages for moby not available in OS ${ID} ${VERSION_CODENAME} (${architecture} ). To resolve, either: (1) set feature option '\" moby\" : false' , or (2) choose a compatible OS version (e.g., 'ubuntu-20.04')."
388- exit 1
389- fi
375+ if [ " ${USE_MOBY} " = " true" ]; then
376+ if { [ " $ID " = " ubuntu" ] || [ " $ID " = " debian" ]; }; then
377+ # Install engine
378+ set +e # Handle error gracefully
379+ apt-get -y install --no-install-recommends \
380+ moby-cli${cli_version_suffix} \
381+ moby-buildx${buildx_version_suffix} \
382+ moby-engine${engine_version_suffix}
383+ exit_code=$?
384+ set -e
385+
386+ if [ ${exit_code} -ne 0 ]; then
387+ err " Packages for moby not available in OS ${ID} ${VERSION_CODENAME} (${architecture} ). To resolve, either: (1) set feature option '\" moby\" : false' , or (2) choose a compatible OS version (e.g., 'ubuntu-20.04')."
388+ exit 1
389+ fi
390390
391- # Install compose
392- apt-get -y install --no-install-recommends moby-compose || \
393- err " Package moby-compose (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture} ). Skipping."
391+ # Install compose
392+ apt-get -y install --no-install-recommends moby-compose || \
393+ err " Package moby-compose (Docker Compose v2) not available for OS ${ID} ${VERSION_CODENAME} (${architecture} ). Skipping."
394394
395- elif [ " $ID " = " fedora" ] || [ " $ID_LIKE " = " rhel" ]; then
396- install_docker_or_moby
397- fi
398- elif [ " ${USE_MOBY} " = " false" ] && { [ " $ID " = " fedora" ] || [ " $ID_LIKE " = " rhel" ]; }; then
399-
400- # kmod package is required for modprobe
401- dnf install -y kmod iptables procps-ng
402- # Load iptable_nat module for docker-in-docker.
403- # See:
404- # - https://github.com/ublue-os/bluefin/issues/2365
405- # - https://github.com/devcontainers/features/issues/1235
406- mkdir -p /etc/modules-load.d && cat >> /etc/modules-load.d/ip_tables.conf << EOF
407- iptable_nat
395+ elif [ " $ID " = " fedora" ] || [ " $ID_LIKE " = " rhel" ]; then
396+ install_docker_or_moby
397+ fi
398+ elif [ " ${USE_MOBY} " = " false" ] && { [ " $ID " = " fedora" ] || [ " $ID_LIKE " = " rhel" ]; }; then
399+
400+ # kmod package is required for modprobe
401+ dnf install -y kmod iptables procps-ng
402+ # Load iptable_nat module for docker-in-docker.
403+ # See:
404+ # - https://github.com/ublue-os/bluefin/issues/2365
405+ # - https://github.com/devcontainers/features/issues/1235
406+ mkdir -p /etc/modules-load.d && cat >> /etc/modules-load.d/ip_tables.conf << ' EOF '
407+ iptable_nat
408408EOF
409409
410- # https://github.com/devcontainers/features/issues/1235
411- if uname -r | grep -q ' \.fc' ; then
412- sudo update-alternatives --set iptables /usr/sbin/iptables-nft
413- fi
414-
415- # Get Fedora release version (e.g. 38, 39)
416- FEDORA_VERSION=$( rpm -E %fedora)
417-
418- echo " Detected Fedora version: $FEDORA_VERSION "
419-
420- echo " Installing dnf-plugins-core..."
421- if ! dnf install -y dnf-plugins-core; then
422- echo " ⚠️ Failed to install dnf-plugins-core. Falling back to Moby."
423- install_docker_or_moby
424- exit 0
425- fi
426- echo " Setting up Docker CE repo..."
427- if ! dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo; then
428- echo " ⚠️ Failed to add Docker CE repo. Falling back to Moby."
429- install_docker_or_moby
430- exit 0
431- fi
410+ # https://github.com/devcontainers/features/issues/1235
411+ if uname -r | grep -q ' \.fc' ; then
412+ sudo update-alternatives --set iptables /usr/sbin/iptables-nft
413+ fi
432414
433- # Try installing Docker CE with fallback to Moby
434- echo " Attempting to install Docker CE..."
415+ # Get Fedora release version (e.g. 38, 39)
416+ FEDORA_VERSION=$( rpm -E %fedora)
417+
418+ echo " Detected Fedora version: $FEDORA_VERSION "
419+
420+ echo " Installing dnf-plugins-core..."
421+ if ! dnf install -y dnf-plugins-core; then
422+ echo " ⚠️ Failed to install dnf-plugins-core. Falling back to Moby."
423+ install_docker_or_moby
424+ exit 0
425+ fi
426+ echo " Setting up Docker CE repo..."
427+ if ! dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo; then
428+ echo " ⚠️ Failed to add Docker CE repo. Falling back to Moby."
429+ install_docker_or_moby
430+ exit 0
431+ fi
435432
436- set +e
437- dnf install -y docker docker-ce docker-ce-cli containerd.io
438- DOCKER_INSTALL_EXIT_CODE=$?
439- set -e
433+ # Try installing Docker CE with fallback to Moby
434+ echo " Attempting to install Docker CE..."
440435
441- if [ $DOCKER_INSTALL_EXIT_CODE -ne 0 ] || ! command -v docker > /dev/null || ! command -v dockerd > /dev/null; then
442- echo " ⚠️ Docker CE installation appears incomplete or failed — falling back to Moby."
436+ set +e
437+ dnf install -y docker docker-ce docker-ce-cli containerd.io
438+ DOCKER_INSTALL_EXIT_CODE=$?
439+ set -e
443440
444- install_docker_or_moby
441+ if [ $DOCKER_INSTALL_EXIT_CODE -ne 0 ] || ! command -v docker > /dev/null || ! command -v dockerd > /dev/null; then
442+ echo " ⚠️ Docker CE installation appears incomplete or failed — falling back to Moby."
445443
446- # Optional: symlink to match docker-ce command names
447- ln -sf /usr/bin/moby-engine /usr/bin/dockerd || true
448- else
449- echo " ✅ Docker CE installed successfully!"
450- fi
444+ install_docker_or_moby
451445
452- # Create docker group if missing
453- if ! getent group docker > /dev/null ; then
454- echo " Creating 'docker' group... "
455- groupadd docker
456- fi
446+ # Optional: symlink to match docker-ce command names
447+ ln -sf /usr/bin/moby-engine /usr/bin/dockerd || true
448+ else
449+ echo " ✅ Docker CE installed successfully! "
450+ fi
457451
458- # Add user to docker group
459- USERNAME=${USERNAME:- vscode}
460- echo " Adding user '$USERNAME ' to docker group..."
461- usermod -aG docker " $USERNAME "
452+ # Create docker group if missing
453+ if ! getent group docker > /dev/null; then
454+ echo " Creating 'docker' group..."
455+ groupadd docker
456+ fi
462457
463- # Final message
464- echo " ✅ Docker or Moby installed and user configured."
465- else
466- echo " ❌ Unsupported OS or configuration. Exiting."
467- exit 1
468- fi
458+ # Add user to docker group
459+ USERNAME=${USERNAME:- vscode}
460+ echo " Adding user '$USERNAME ' to docker group..."
461+ usermod -aG docker " $USERNAME "
469462
470- echo " Finished installing Docker / Moby!"
463+ # Final message
464+ echo " ✅ Docker or Moby installed and user configured."
465+ else
466+ if { [ " $ID " = " fedora" ] || [ " $ID_LIKE " = " rhel" ]; }; then
467+ echo " ❌ Unsupported OS or configuration. Exiting."
468+ exit 1
469+ fi
470+ fi
471+ echo " Finished installing Docker / Moby!"
471472fi
472473
473474
0 commit comments