--- tags: - Scirpts - Desktop --- # 🐳 Docker Engine Installation Guide (`install-docker.sh`) This script automates and guides the installation of Docker CLI, Docker Engine, and necessary dependencies on a Linux host system. **WARNING: Running this script requires elevated privileges (`sudo`).** Always run from a secure, non-production machine initially. ## 🗺️ Prerequisites Before running any provisioning script, ensure the following are in place: * A functional `curl` client is installed. * The user executing the command has appropriate permissions (system administrator level rights). ## Execution Protocol The process follows three critical, distinct steps to ensure the entire stack is correctly configured and operational: ### Step 1: Download the Official Installation Script Use `curl` to fetch the latest official installation manifest from Docker. ```bash # Execute this command in your shell terminal curl -fsSL https://get.docker.com -o install-docker.sh ``` ### Step 2: Run the Installation Script Execute the downloaded script with elevated permissions. This step pulls and configures all necessary binaries and services. ```bash sudo sh install-docker.sh ``` *Wait for the output to confirm successful installation across all components.* ### Step 3: Configure User Permissions (Non-negotiable) Docker commands require administrative access by default. To run Docker without prefixing every command with `sudo`, you must add your current user (`$USER`) to the `docker` group. ```bash sudo usermod -aG docker $USER ``` ***Note: You must log out and log back in for this group change to take effect.*** > [!NOTE] Modernized Workflow For automated, production deployment (CI/CD), **avoid standalone shell scripts like this.** Best practice dictates using infrastructure-as-code tools such as **Ansible** or **Terraform**. These platforms manage dependencies and state much better than a sequential script execution, allowing you to define the *desired final state* of Docker rather than merely listing steps to achieve it. Always prefer declarative configuration over imperative scripts where possible.