albert revised this gist . Go to revision
1 file changed, 1 insertion, 1 deletion
docker.sh
@@ -5,7 +5,7 @@ | |||
5 | 5 | # | |
6 | 6 | # Usage: | |
7 | 7 | # ./docker.sh | |
8 | - | # curl -fsSL https://cdn.albert.lol/docker.sh | bash | |
8 | + | # bash <(curl -s https://cdn.albert.lol/docker.sh) | |
9 | 9 | # | |
10 | 10 | # Requires: | |
11 | 11 | # - Running on a Debian-based system (Debian, Ubuntu, etc.) |
albert revised this gist . Go to revision
No changes
albert revised this gist . Go to revision
1 file changed, 2 insertions, 5 deletions
docker.sh
@@ -202,8 +202,5 @@ main() { | |||
202 | 202 | log_success "-----------------------------------------------------" | |
203 | 203 | } | |
204 | 204 | ||
205 | - | # Run the main function if the script is executed directly | |
206 | - | # This check prevents execution if the script is sourced, though unlikely for this use case. | |
207 | - | if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then | |
208 | - | main | |
209 | - | fi | |
205 | + | # Run the main function | |
206 | + | main |
albert revised this gist . Go to revision
1 file changed, 101 insertions, 54 deletions
docker.sh
@@ -1,6 +1,7 @@ | |||
1 | 1 | #!/bin/bash | |
2 | 2 | # | |
3 | - | # Installs Docker Engine on Debian-based Linux distributions. | |
3 | + | # Installs Docker Engine on Debian-based Linux distributions with colored output. | |
4 | + | # Runs apt operations quietly, showing high-level status messages. | |
4 | 5 | # | |
5 | 6 | # Usage: | |
6 | 7 | # ./docker.sh | |
@@ -10,6 +11,7 @@ | |||
10 | 11 | # - Running on a Debian-based system (Debian, Ubuntu, etc.) | |
11 | 12 | # - User executing the script must have sudo privileges. | |
12 | 13 | # - Internet connection. | |
14 | + | # - A terminal that supports ANSI color codes. | |
13 | 15 | ||
14 | 16 | # Strict mode | |
15 | 17 | set -euo pipefail | |
@@ -18,26 +20,45 @@ set -euo pipefail | |||
18 | 20 | readonly DOCKER_GPG_KEY_PATH="/etc/apt/keyrings/docker.asc" | |
19 | 21 | readonly DOCKER_APT_SOURCE_PATH="/etc/apt/sources.list.d/docker.list" | |
20 | 22 | ||
23 | + | # --- Colors --- | |
24 | + | # Reference: https://misc.flogisoft.com/bash/tip_colors_and_formatting | |
25 | + | readonly COLOR_RESET='\033[0m' | |
26 | + | readonly COLOR_RED='\033[0;31m' | |
27 | + | readonly COLOR_GREEN='\033[0;32m' | |
28 | + | readonly COLOR_YELLOW='\033[0;33m' | |
29 | + | readonly COLOR_BLUE='\033[0;34m' | |
30 | + | readonly COLOR_BOLD='\033[1m' | |
31 | + | ||
21 | 32 | # --- Helper Functions --- | |
22 | 33 | ||
23 | - | # Logs an informational message. | |
24 | - | # Arguments: | |
25 | - | # $*: Message to log. | |
34 | + | # Logs an informational message (Blue). | |
35 | + | # Arguments: $*: Message to log. | |
26 | 36 | log_info() { | |
27 | - | echo "[INFO] $*" | |
37 | + | echo -e "${COLOR_BLUE}[INFO]${COLOR_RESET} $*" | |
38 | + | } | |
39 | + | ||
40 | + | # Logs a success message (Green). | |
41 | + | # Arguments: $*: Message to log. | |
42 | + | log_success() { | |
43 | + | echo -e "${COLOR_GREEN}[SUCCESS]${COLOR_RESET} $*" | |
28 | 44 | } | |
29 | 45 | ||
30 | - | # Logs an error message and exits. | |
31 | - | # Arguments: | |
32 | - | # $*: Message to log. | |
46 | + | # Logs a warning message (Yellow). | |
47 | + | # Arguments: $*: Message to log. | |
48 | + | log_warning() { | |
49 | + | echo -e "${COLOR_YELLOW}[WARNING]${COLOR_RESET} $*" | |
50 | + | } | |
51 | + | ||
52 | + | # Logs an error message (Red) and exits. | |
53 | + | # Arguments: $*: Message to log. | |
33 | 54 | log_error() { | |
34 | - | echo >&2 "[ERROR] $*" | |
55 | + | # Ensure error message goes to stderr | |
56 | + | echo -e >&2 "${COLOR_RED}${COLOR_BOLD}[ERROR]${COLOR_RESET}${COLOR_RED} $*${COLOR_RESET}" | |
35 | 57 | exit 1 | |
36 | 58 | } | |
37 | 59 | ||
38 | 60 | # Checks if a command exists. | |
39 | - | # Arguments: | |
40 | - | # $1: Command name. | |
61 | + | # Arguments: $1: Command name. | |
41 | 62 | command_exists() { | |
42 | 63 | command -v "$1" >/dev/null 2>&1 | |
43 | 64 | } | |
@@ -46,13 +67,19 @@ command_exists() { | |||
46 | 67 | ||
47 | 68 | # Step 1: Update package lists and install prerequisite packages. | |
48 | 69 | install_prerequisites() { | |
49 | - | log_info "Updating package list and installing prerequisites..." | |
50 | - | sudo apt-get update | |
51 | - | sudo apt-get install -y \ | |
52 | - | ca-certificates \ | |
53 | - | curl \ | |
54 | - | gnupg | |
55 | - | log_info "Prerequisites installed." | |
70 | + | local pkgs=("ca-certificates" "curl" "gnupg") | |
71 | + | log_info "Updating package list (apt-get update)..." | |
72 | + | # Run update quietly (-qq) | |
73 | + | if ! sudo apt-get update -qq; then | |
74 | + | log_error "Failed to update package lists." | |
75 | + | fi | |
76 | + | ||
77 | + | log_info "Installing prerequisite packages: ${pkgs[*]}..." | |
78 | + | # Run install quietly (-qq) and assume yes (-y) | |
79 | + | if ! sudo apt-get install -y -qq "${pkgs[@]}"; then | |
80 | + | log_error "Failed to install prerequisite packages: ${pkgs[*]}." | |
81 | + | fi | |
82 | + | log_success "Prerequisites installed." | |
56 | 83 | } | |
57 | 84 | ||
58 | 85 | # Step 2: Set up Docker's official APT repository. | |
@@ -60,15 +87,20 @@ setup_apt_repository() { | |||
60 | 87 | log_info "Setting up Docker's APT repository..." | |
61 | 88 | ||
62 | 89 | # Create the directory for the GPG key if it doesn't exist | |
63 | - | log_info "Creating keyring directory: /etc/apt/keyrings" | |
90 | + | log_info "Ensuring keyring directory exists: /etc/apt/keyrings" | |
64 | 91 | sudo install -m 0755 -d "$(dirname "${DOCKER_GPG_KEY_PATH}")" | |
65 | 92 | ||
66 | 93 | # Download Docker's official GPG key | |
67 | 94 | log_info "Downloading Docker GPG key to ${DOCKER_GPG_KEY_PATH}" | |
68 | 95 | # Use curl with fail-fast, silent, show-error, location-follow flags | |
69 | - | sudo curl -fsSL "https://download.docker.com/linux/debian/gpg" -o "${DOCKER_GPG_KEY_PATH}" | |
96 | + | # Capture curl stderr to check for errors even with -s | |
97 | + | local curl_stderr | |
98 | + | if ! curl_stderr=$(sudo curl -fsSL "https://download.docker.com/linux/debian/gpg" -o "${DOCKER_GPG_KEY_PATH}" 2>&1); then | |
99 | + | log_error "Failed to download Docker GPG key. Curl output: ${curl_stderr}" | |
100 | + | fi | |
70 | 101 | # Ensure the key is readable by apt | |
71 | 102 | sudo chmod a+r "${DOCKER_GPG_KEY_PATH}" | |
103 | + | log_success "Docker GPG key downloaded and permissions set." | |
72 | 104 | ||
73 | 105 | # Detect architecture and OS codename | |
74 | 106 | local arch | |
@@ -91,58 +123,69 @@ setup_apt_repository() { | |||
91 | 123 | echo \ | |
92 | 124 | "deb [arch=${arch} signed-by=${DOCKER_GPG_KEY_PATH}] https://download.docker.com/linux/debian \ | |
93 | 125 | ${codename} stable" | sudo tee "${DOCKER_APT_SOURCE_PATH}" > /dev/null | |
94 | - | ||
95 | - | log_info "Docker APT repository setup complete." | |
126 | + | log_success "Docker APT repository added." | |
96 | 127 | } | |
97 | 128 | ||
98 | 129 | # Step 3: Install Docker Engine packages. | |
99 | 130 | install_docker() { | |
131 | + | local docker_pkgs=("docker-ce" "docker-ce-cli" "containerd.io" "docker-buildx-plugin" "docker-compose-plugin") | |
100 | 132 | log_info "Updating package list after adding Docker repository..." | |
101 | - | sudo apt-get update | |
102 | - | ||
103 | - | log_info "Installing Docker packages..." | |
104 | - | sudo apt-get install -y \ | |
105 | - | docker-ce \ | |
106 | - | docker-ce-cli \ | |
107 | - | containerd.io \ | |
108 | - | docker-buildx-plugin \ | |
109 | - | docker-compose-plugin | |
110 | - | log_info "Docker packages installed." | |
133 | + | # Run update quietly (-qq) | |
134 | + | if ! sudo apt-get update -qq; then | |
135 | + | log_warning "Second 'apt-get update' failed. This might be okay if sources are correct, continuing installation..." | |
136 | + | # Don't exit here, as sometimes transient network issues cause this but install might still work if cache is okay. | |
137 | + | fi | |
138 | + | ||
139 | + | log_info "Installing Docker packages: ${docker_pkgs[*]}..." | |
140 | + | # Run install quietly (-qq) and assume yes (-y) | |
141 | + | if ! sudo apt-get install -y -qq "${docker_pkgs[@]}"; then | |
142 | + | log_error "Failed to install Docker packages: ${docker_pkgs[*]}." | |
143 | + | fi | |
144 | + | log_success "Docker packages installed." | |
111 | 145 | } | |
112 | 146 | ||
113 | 147 | # Step 4: Perform post-installation steps (add user to docker group). | |
114 | 148 | post_install() { | |
115 | 149 | log_info "Adding current user (${USER}) to the 'docker' group..." | |
116 | 150 | if getent group docker > /dev/null; then | |
117 | - | sudo usermod -aG docker "$USER" | |
118 | - | log_info "User '${USER}' added to the 'docker' group." | |
119 | - | log_info "IMPORTANT: You need to log out and log back in for the group change to take effect." | |
120 | - | log_info "Alternatively, you can run 'newgrp docker' in your current shell, but logging out is recommended." | |
151 | + | # Use GID instead of name for group check in usermod, slightly more robust | |
152 | + | local docker_gid | |
153 | + | docker_gid=$(getent group docker | cut -d: -f3) | |
154 | + | if ! groups "$USER" | grep -qw "$docker_gid" && ! groups "$USER" | grep -qw "docker"; then | |
155 | + | if sudo usermod -aG docker "$USER"; then | |
156 | + | log_success "User '${USER}' added to the 'docker' group." | |
157 | + | log_warning "${COLOR_BOLD}IMPORTANT:${COLOR_RESET}${COLOR_YELLOW} You must log out and log back in for this change to take effect!${COLOR_RESET}" | |
158 | + | log_info "Alternatively, run 'newgrp docker' in your current shell (may require password)." | |
159 | + | else | |
160 | + | log_error "Failed to add user '${USER}' to the 'docker' group." | |
161 | + | fi | |
162 | + | else | |
163 | + | log_info "User '${USER}' is already in the 'docker' group." | |
164 | + | fi | |
121 | 165 | else | |
122 | - | log_info "The 'docker' group does not exist. Skipping user addition." | |
123 | - | log_info "This might happen if Docker installation failed earlier." | |
166 | + | log_warning "The 'docker' group does not seem to exist. Skipping adding user." | |
167 | + | log_warning "This might indicate an issue during Docker package installation." | |
124 | 168 | fi | |
125 | 169 | } | |
126 | 170 | ||
127 | 171 | # --- Main Execution --- | |
128 | 172 | ||
129 | 173 | main() { | |
130 | - | log_info "Starting Docker installation script..." | |
174 | + | log_info "${COLOR_BOLD}Starting Docker installation script...${COLOR_RESET}" | |
131 | 175 | ||
132 | 176 | # Basic checks | |
133 | 177 | if ! command_exists sudo; then | |
134 | 178 | log_error "'sudo' command not found. This script requires sudo privileges." | |
135 | 179 | fi | |
136 | - | if [[ $EUID -eq 0 ]]; then | |
137 | - | log_info "Script is running as root. Using sudo is recommended for specific commands only." | |
138 | - | # Consider adapting script if root execution should behave differently, | |
139 | - | # but for now, relying on internal sudo calls is fine. | |
140 | - | fi | |
141 | - | if ! command_exists dpkg; then | |
142 | - | log_error "'dpkg' command not found. This script is intended for Debian-based systems." | |
180 | + | # Allow running as root, but it's less common for interactive use. | |
181 | + | # if [[ $EUID -eq 0 ]]; then | |
182 | + | # log_warning "Running as root. It's generally recommended to run as a user with sudo privileges." | |
183 | + | # fi | |
184 | + | if ! command_exists dpkg || ! command_exists apt-get; then | |
185 | + | log_error "'dpkg' or 'apt-get' not found. This script requires a Debian-based system." | |
143 | 186 | fi | |
144 | 187 | if ! [[ -f /etc/os-release ]]; then | |
145 | - | log_error "File /etc/os-release not found. This script is intended for Debian-based systems." | |
188 | + | log_error "File /etc/os-release not found. Cannot determine OS version. Aborting." | |
146 | 189 | fi | |
147 | 190 | ||
148 | 191 | # Execute steps | |
@@ -151,12 +194,16 @@ main() { | |||
151 | 194 | install_docker | |
152 | 195 | post_install | |
153 | 196 | ||
154 | - | log_info "-----------------------------------------------------" | |
155 | - | log_info "Docker installation completed successfully! 🎉" | |
156 | - | log_info "REMEMBER TO LOG OUT AND LOG BACK IN to use Docker without sudo." | |
157 | - | log_info "Verify installation by running: docker run hello-world" | |
158 | - | log_info "-----------------------------------------------------" | |
197 | + | echo # Add a newline for spacing | |
198 | + | log_success "-----------------------------------------------------" | |
199 | + | log_success "${COLOR_BOLD}Docker installation completed successfully! 🎉${COLOR_RESET}" | |
200 | + | log_warning "${COLOR_BOLD}REMEMBER TO LOG OUT AND LOG BACK IN${COLOR_RESET}${COLOR_YELLOW} to use Docker without 'sudo'.${COLOR_RESET}" | |
201 | + | log_info "After logging back in, verify installation by running: ${COLOR_BOLD}docker run hello-world${COLOR_RESET}" | |
202 | + | log_success "-----------------------------------------------------" | |
159 | 203 | } | |
160 | 204 | ||
161 | - | # Run the main function | |
162 | - | main | |
205 | + | # Run the main function if the script is executed directly | |
206 | + | # This check prevents execution if the script is sourced, though unlikely for this use case. | |
207 | + | if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then | |
208 | + | main | |
209 | + | fi |
albert revised this gist . Go to revision
1 file changed, 2 insertions, 2 deletions
docker.sh
@@ -3,8 +3,8 @@ | |||
3 | 3 | # Installs Docker Engine on Debian-based Linux distributions. | |
4 | 4 | # | |
5 | 5 | # Usage: | |
6 | - | # ./install_docker.sh | |
7 | - | # curl -fsSL <URL_TO_THIS_SCRIPT> | bash | |
6 | + | # ./docker.sh | |
7 | + | # curl -fsSL https://cdn.albert.lol/docker.sh | bash | |
8 | 8 | # | |
9 | 9 | # Requires: | |
10 | 10 | # - Running on a Debian-based system (Debian, Ubuntu, etc.) |
albert revised this gist . Go to revision
1 file changed, 149 insertions, 27 deletions
docker.sh
@@ -1,40 +1,162 @@ | |||
1 | 1 | #!/bin/bash | |
2 | + | # | |
3 | + | # Installs Docker Engine on Debian-based Linux distributions. | |
4 | + | # | |
5 | + | # Usage: | |
6 | + | # ./install_docker.sh | |
7 | + | # curl -fsSL <URL_TO_THIS_SCRIPT> | bash | |
8 | + | # | |
9 | + | # Requires: | |
10 | + | # - Running on a Debian-based system (Debian, Ubuntu, etc.) | |
11 | + | # - User executing the script must have sudo privileges. | |
12 | + | # - Internet connection. | |
2 | 13 | ||
3 | - | # Exit immediately if a command exits with a non-zero status | |
4 | - | set -e | |
14 | + | # Strict mode | |
15 | + | set -euo pipefail | |
5 | 16 | ||
6 | - | # Update package index | |
7 | - | sudo apt-get update | |
17 | + | # --- Configuration --- | |
18 | + | readonly DOCKER_GPG_KEY_PATH="/etc/apt/keyrings/docker.asc" | |
19 | + | readonly DOCKER_APT_SOURCE_PATH="/etc/apt/sources.list.d/docker.list" | |
8 | 20 | ||
9 | - | # Install required packages for Docker installation | |
10 | - | sudo apt-get install -y ca-certificates curl | |
21 | + | # --- Helper Functions --- | |
11 | 22 | ||
12 | - | # Create the directory for Docker's apt keyrings | |
13 | - | sudo install -m 0755 -d /etc/apt/keyrings | |
23 | + | # Logs an informational message. | |
24 | + | # Arguments: | |
25 | + | # $*: Message to log. | |
26 | + | log_info() { | |
27 | + | echo "[INFO] $*" | |
28 | + | } | |
14 | 29 | ||
15 | - | # Download and add Docker's GPG key | |
16 | - | sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc | |
30 | + | # Logs an error message and exits. | |
31 | + | # Arguments: | |
32 | + | # $*: Message to log. | |
33 | + | log_error() { | |
34 | + | echo >&2 "[ERROR] $*" | |
35 | + | exit 1 | |
36 | + | } | |
17 | 37 | ||
18 | - | # Set appropriate permissions for the GPG key | |
19 | - | sudo chmod a+r /etc/apt/keyrings/docker.asc | |
38 | + | # Checks if a command exists. | |
39 | + | # Arguments: | |
40 | + | # $1: Command name. | |
41 | + | command_exists() { | |
42 | + | command -v "$1" >/dev/null 2>&1 | |
43 | + | } | |
20 | 44 | ||
21 | - | # Add Docker's official apt repository | |
22 | - | echo \ | |
23 | - | "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ | |
24 | - | $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable" | \ | |
25 | - | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null | |
45 | + | # --- Main Functions --- | |
26 | 46 | ||
27 | - | # Update package index again to include Docker's repository | |
28 | - | sudo apt-get update | |
47 | + | # Step 1: Update package lists and install prerequisite packages. | |
48 | + | install_prerequisites() { | |
49 | + | log_info "Updating package list and installing prerequisites..." | |
50 | + | sudo apt-get update | |
51 | + | sudo apt-get install -y \ | |
52 | + | ca-certificates \ | |
53 | + | curl \ | |
54 | + | gnupg | |
55 | + | log_info "Prerequisites installed." | |
56 | + | } | |
29 | 57 | ||
30 | - | # Install Docker packages | |
31 | - | sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin | |
58 | + | # Step 2: Set up Docker's official APT repository. | |
59 | + | setup_apt_repository() { | |
60 | + | log_info "Setting up Docker's APT repository..." | |
32 | 61 | ||
33 | - | # Add the current user to the Docker group | |
34 | - | sudo usermod -aG docker $USER | |
62 | + | # Create the directory for the GPG key if it doesn't exist | |
63 | + | log_info "Creating keyring directory: /etc/apt/keyrings" | |
64 | + | sudo install -m 0755 -d "$(dirname "${DOCKER_GPG_KEY_PATH}")" | |
35 | 65 | ||
36 | - | # Refresh group membership without needing to log out and back in | |
37 | - | newgrp docker | |
66 | + | # Download Docker's official GPG key | |
67 | + | log_info "Downloading Docker GPG key to ${DOCKER_GPG_KEY_PATH}" | |
68 | + | # Use curl with fail-fast, silent, show-error, location-follow flags | |
69 | + | sudo curl -fsSL "https://download.docker.com/linux/debian/gpg" -o "${DOCKER_GPG_KEY_PATH}" | |
70 | + | # Ensure the key is readable by apt | |
71 | + | sudo chmod a+r "${DOCKER_GPG_KEY_PATH}" | |
38 | 72 | ||
39 | - | # Print success message | |
40 | - | echo "Docker has been installed successfully." | |
73 | + | # Detect architecture and OS codename | |
74 | + | local arch | |
75 | + | arch="$(dpkg --print-architecture)" | |
76 | + | local codename | |
77 | + | # Source os-release safely | |
78 | + | if [[ -f /etc/os-release ]]; then | |
79 | + | # shellcheck source=/dev/null | |
80 | + | codename="$(. /etc/os-release && echo "$VERSION_CODENAME")" | |
81 | + | else | |
82 | + | log_error "Cannot determine OS codename. /etc/os-release not found." | |
83 | + | fi | |
84 | + | ||
85 | + | if [[ -z "$codename" ]]; then | |
86 | + | log_error "Could not determine VERSION_CODENAME from /etc/os-release." | |
87 | + | fi | |
88 | + | ||
89 | + | # Add the Docker repository to Apt sources | |
90 | + | log_info "Adding Docker repository source to ${DOCKER_APT_SOURCE_PATH}" | |
91 | + | echo \ | |
92 | + | "deb [arch=${arch} signed-by=${DOCKER_GPG_KEY_PATH}] https://download.docker.com/linux/debian \ | |
93 | + | ${codename} stable" | sudo tee "${DOCKER_APT_SOURCE_PATH}" > /dev/null | |
94 | + | ||
95 | + | log_info "Docker APT repository setup complete." | |
96 | + | } | |
97 | + | ||
98 | + | # Step 3: Install Docker Engine packages. | |
99 | + | install_docker() { | |
100 | + | log_info "Updating package list after adding Docker repository..." | |
101 | + | sudo apt-get update | |
102 | + | ||
103 | + | log_info "Installing Docker packages..." | |
104 | + | sudo apt-get install -y \ | |
105 | + | docker-ce \ | |
106 | + | docker-ce-cli \ | |
107 | + | containerd.io \ | |
108 | + | docker-buildx-plugin \ | |
109 | + | docker-compose-plugin | |
110 | + | log_info "Docker packages installed." | |
111 | + | } | |
112 | + | ||
113 | + | # Step 4: Perform post-installation steps (add user to docker group). | |
114 | + | post_install() { | |
115 | + | log_info "Adding current user (${USER}) to the 'docker' group..." | |
116 | + | if getent group docker > /dev/null; then | |
117 | + | sudo usermod -aG docker "$USER" | |
118 | + | log_info "User '${USER}' added to the 'docker' group." | |
119 | + | log_info "IMPORTANT: You need to log out and log back in for the group change to take effect." | |
120 | + | log_info "Alternatively, you can run 'newgrp docker' in your current shell, but logging out is recommended." | |
121 | + | else | |
122 | + | log_info "The 'docker' group does not exist. Skipping user addition." | |
123 | + | log_info "This might happen if Docker installation failed earlier." | |
124 | + | fi | |
125 | + | } | |
126 | + | ||
127 | + | # --- Main Execution --- | |
128 | + | ||
129 | + | main() { | |
130 | + | log_info "Starting Docker installation script..." | |
131 | + | ||
132 | + | # Basic checks | |
133 | + | if ! command_exists sudo; then | |
134 | + | log_error "'sudo' command not found. This script requires sudo privileges." | |
135 | + | fi | |
136 | + | if [[ $EUID -eq 0 ]]; then | |
137 | + | log_info "Script is running as root. Using sudo is recommended for specific commands only." | |
138 | + | # Consider adapting script if root execution should behave differently, | |
139 | + | # but for now, relying on internal sudo calls is fine. | |
140 | + | fi | |
141 | + | if ! command_exists dpkg; then | |
142 | + | log_error "'dpkg' command not found. This script is intended for Debian-based systems." | |
143 | + | fi | |
144 | + | if ! [[ -f /etc/os-release ]]; then | |
145 | + | log_error "File /etc/os-release not found. This script is intended for Debian-based systems." | |
146 | + | fi | |
147 | + | ||
148 | + | # Execute steps | |
149 | + | install_prerequisites | |
150 | + | setup_apt_repository | |
151 | + | install_docker | |
152 | + | post_install | |
153 | + | ||
154 | + | log_info "-----------------------------------------------------" | |
155 | + | log_info "Docker installation completed successfully! 🎉" | |
156 | + | log_info "REMEMBER TO LOG OUT AND LOG BACK IN to use Docker without sudo." | |
157 | + | log_info "Verify installation by running: docker run hello-world" | |
158 | + | log_info "-----------------------------------------------------" | |
159 | + | } | |
160 | + | ||
161 | + | # Run the main function | |
162 | + | main |
albert revised this gist . Go to revision
1 file changed, 1 insertion, 1 deletion
docker.sh
@@ -37,4 +37,4 @@ sudo usermod -aG docker $USER | |||
37 | 37 | newgrp docker | |
38 | 38 | ||
39 | 39 | # Print success message | |
40 | - | echo "Docker has been installed successfully. | |
40 | + | echo "Docker has been installed successfully." |
albert revised this gist . Go to revision
No changes
albert revised this gist . Go to revision
1 file changed, 1 insertion, 1 deletion
docker.sh
@@ -37,4 +37,4 @@ sudo usermod -aG docker $USER | |||
37 | 37 | newgrp docker | |
38 | 38 | ||
39 | 39 | # Print success message | |
40 | - | echo "Docker has been installed successfully." | |
40 | + | echo "Docker has been installed successfully. |
albert revised this gist . Go to revision
No changes