@fredlackey/devutils 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/README.md +5 -5
  2. package/package.json +1 -1
  3. package/src/commands/install.js +374 -36
  4. package/src/installs/adobe-creative-cloud.js +527 -25
  5. package/src/installs/adobe-creative-cloud.md +605 -0
  6. package/src/installs/appcleaner.js +303 -26
  7. package/src/installs/appcleaner.md +699 -0
  8. package/src/installs/apt-transport-https.js +390 -0
  9. package/src/installs/apt-transport-https.md +678 -0
  10. package/src/installs/atomicparsley.js +624 -26
  11. package/src/installs/atomicparsley.md +795 -0
  12. package/src/installs/aws-cli.js +779 -26
  13. package/src/installs/aws-cli.md +727 -0
  14. package/src/installs/balena-etcher.js +688 -26
  15. package/src/installs/balena-etcher.md +761 -0
  16. package/src/installs/bambu-studio.js +912 -26
  17. package/src/installs/bambu-studio.md +780 -0
  18. package/src/installs/bash-completion.js +554 -23
  19. package/src/installs/bash-completion.md +833 -0
  20. package/src/installs/bash.js +399 -26
  21. package/src/installs/bash.md +993 -0
  22. package/src/installs/beyond-compare.js +585 -26
  23. package/src/installs/beyond-compare.md +813 -0
  24. package/src/installs/build-essential.js +511 -26
  25. package/src/installs/build-essential.md +977 -0
  26. package/src/installs/ca-certificates.js +618 -0
  27. package/src/installs/ca-certificates.md +937 -0
  28. package/src/installs/caffeine.js +490 -26
  29. package/src/installs/caffeine.md +839 -0
  30. package/src/installs/camtasia.js +577 -25
  31. package/src/installs/camtasia.md +762 -0
  32. package/src/installs/chatgpt.js +458 -26
  33. package/src/installs/chatgpt.md +814 -0
  34. package/src/installs/chocolatey.js +447 -0
  35. package/src/installs/chocolatey.md +661 -0
  36. package/src/installs/chrome-canary.js +472 -26
  37. package/src/installs/chrome-canary.md +641 -0
  38. package/src/installs/chromium.js +645 -26
  39. package/src/installs/chromium.md +838 -0
  40. package/src/installs/claude-code.js +558 -26
  41. package/src/installs/claude-code.md +1173 -0
  42. package/src/installs/curl.js +361 -26
  43. package/src/installs/curl.md +714 -0
  44. package/src/installs/cursor.js +561 -26
  45. package/src/installs/cursor.md +970 -0
  46. package/src/installs/dbschema.js +674 -26
  47. package/src/installs/dbschema.md +925 -0
  48. package/src/installs/dependencies.md +435 -0
  49. package/src/installs/development-tools.js +600 -0
  50. package/src/installs/development-tools.md +977 -0
  51. package/src/installs/docker.js +1010 -25
  52. package/src/installs/docker.md +1109 -0
  53. package/src/installs/drawio.js +1001 -26
  54. package/src/installs/drawio.md +795 -0
  55. package/src/installs/elmedia-player.js +328 -25
  56. package/src/installs/elmedia-player.md +556 -0
  57. package/src/installs/ffmpeg.js +870 -25
  58. package/src/installs/ffmpeg.md +852 -0
  59. package/src/installs/file.js +464 -0
  60. package/src/installs/file.md +987 -0
  61. package/src/installs/gemini-cli.js +793 -26
  62. package/src/installs/gemini-cli.md +1153 -0
  63. package/src/installs/git.js +382 -26
  64. package/src/installs/git.md +907 -0
  65. package/src/installs/gitego.js +931 -26
  66. package/src/installs/gitego.md +1172 -0
  67. package/src/installs/go.js +913 -26
  68. package/src/installs/go.md +958 -0
  69. package/src/installs/google-chrome.js +801 -25
  70. package/src/installs/google-chrome.md +862 -0
  71. package/src/installs/gpg.js +412 -73
  72. package/src/installs/gpg.md +1056 -0
  73. package/src/installs/homebrew.js +1015 -26
  74. package/src/installs/homebrew.md +988 -0
  75. package/src/installs/imageoptim.js +950 -26
  76. package/src/installs/imageoptim.md +1119 -0
  77. package/src/installs/installers.json +2297 -0
  78. package/src/installs/jq.js +382 -26
  79. package/src/installs/jq.md +809 -0
  80. package/src/installs/keyboard-maestro.js +701 -26
  81. package/src/installs/keyboard-maestro.md +825 -0
  82. package/src/installs/latex.js +771 -26
  83. package/src/installs/latex.md +1095 -0
  84. package/src/installs/lftp.js +338 -26
  85. package/src/installs/lftp.md +907 -0
  86. package/src/installs/lsb-release.js +346 -0
  87. package/src/installs/lsb-release.md +814 -0
  88. package/src/installs/messenger.js +829 -26
  89. package/src/installs/messenger.md +900 -0
  90. package/src/installs/microsoft-office.js +550 -26
  91. package/src/installs/microsoft-office.md +760 -0
  92. package/src/installs/microsoft-teams.js +782 -25
  93. package/src/installs/microsoft-teams.md +886 -0
  94. package/src/installs/node.js +886 -26
  95. package/src/installs/node.md +1153 -0
  96. package/src/installs/nordpass.js +698 -26
  97. package/src/installs/nordpass.md +921 -0
  98. package/src/installs/nvm.js +977 -26
  99. package/src/installs/nvm.md +1057 -0
  100. package/src/installs/openssh.js +734 -64
  101. package/src/installs/openssh.md +1056 -0
  102. package/src/installs/pandoc.js +644 -26
  103. package/src/installs/pandoc.md +1036 -0
  104. package/src/installs/pinentry.js +492 -26
  105. package/src/installs/pinentry.md +1142 -0
  106. package/src/installs/pngyu.js +851 -26
  107. package/src/installs/pngyu.md +896 -0
  108. package/src/installs/postman.js +781 -26
  109. package/src/installs/postman.md +940 -0
  110. package/src/installs/procps.js +425 -0
  111. package/src/installs/procps.md +851 -0
  112. package/src/installs/safari-tech-preview.js +355 -25
  113. package/src/installs/safari-tech-preview.md +533 -0
  114. package/src/installs/sfnt2woff.js +640 -26
  115. package/src/installs/sfnt2woff.md +795 -0
  116. package/src/installs/shellcheck.js +463 -26
  117. package/src/installs/shellcheck.md +1005 -0
  118. package/src/installs/slack.js +722 -25
  119. package/src/installs/slack.md +865 -0
  120. package/src/installs/snagit.js +566 -25
  121. package/src/installs/snagit.md +844 -0
  122. package/src/installs/software-properties-common.js +372 -0
  123. package/src/installs/software-properties-common.md +805 -0
  124. package/src/installs/spotify.js +858 -25
  125. package/src/installs/spotify.md +901 -0
  126. package/src/installs/studio-3t.js +803 -26
  127. package/src/installs/studio-3t.md +918 -0
  128. package/src/installs/sublime-text.js +780 -25
  129. package/src/installs/sublime-text.md +914 -0
  130. package/src/installs/superwhisper.js +687 -25
  131. package/src/installs/superwhisper.md +630 -0
  132. package/src/installs/tailscale.js +727 -26
  133. package/src/installs/tailscale.md +1100 -0
  134. package/src/installs/tar.js +389 -0
  135. package/src/installs/tar.md +946 -0
  136. package/src/installs/termius.js +780 -26
  137. package/src/installs/termius.md +844 -0
  138. package/src/installs/terraform.js +761 -26
  139. package/src/installs/terraform.md +899 -0
  140. package/src/installs/tidal.js +752 -25
  141. package/src/installs/tidal.md +864 -0
  142. package/src/installs/tmux.js +328 -26
  143. package/src/installs/tmux.md +1030 -0
  144. package/src/installs/tree.js +393 -26
  145. package/src/installs/tree.md +833 -0
  146. package/src/installs/unzip.js +460 -0
  147. package/src/installs/unzip.md +879 -0
  148. package/src/installs/vim.js +403 -26
  149. package/src/installs/vim.md +1040 -0
  150. package/src/installs/vlc.js +803 -26
  151. package/src/installs/vlc.md +927 -0
  152. package/src/installs/vscode.js +825 -26
  153. package/src/installs/vscode.md +1002 -0
  154. package/src/installs/wget.js +415 -0
  155. package/src/installs/wget.md +791 -0
  156. package/src/installs/whatsapp.js +710 -25
  157. package/src/installs/whatsapp.md +854 -0
  158. package/src/installs/winpty.js +352 -0
  159. package/src/installs/winpty.md +620 -0
  160. package/src/installs/woff2.js +535 -26
  161. package/src/installs/woff2.md +977 -0
  162. package/src/installs/wsl.js +572 -0
  163. package/src/installs/wsl.md +699 -0
  164. package/src/installs/xcode-clt.js +520 -0
  165. package/src/installs/xcode-clt.md +351 -0
  166. package/src/installs/xcode.js +542 -26
  167. package/src/installs/xcode.md +573 -0
  168. package/src/installs/yarn.js +806 -26
  169. package/src/installs/yarn.md +1074 -0
  170. package/src/installs/yq.js +636 -26
  171. package/src/installs/yq.md +944 -0
  172. package/src/installs/yt-dlp.js +683 -26
  173. package/src/installs/yt-dlp.md +946 -0
  174. package/src/installs/yum-utils.js +297 -0
  175. package/src/installs/yum-utils.md +648 -0
  176. package/src/installs/zoom.js +740 -25
  177. package/src/installs/zoom.md +884 -0
  178. package/src/scripts/README.md +567 -45
  179. package/src/scripts/STATUS.md +208 -0
  180. package/src/scripts/afk.js +395 -7
  181. package/src/scripts/backup-all.js +731 -9
  182. package/src/scripts/backup-source.js +711 -8
  183. package/src/scripts/brewd.js +373 -7
  184. package/src/scripts/brewi.js +505 -9
  185. package/src/scripts/brewr.js +512 -9
  186. package/src/scripts/brews.js +462 -9
  187. package/src/scripts/brewu.js +488 -7
  188. package/src/scripts/c.js +185 -7
  189. package/src/scripts/ccurl.js +325 -8
  190. package/src/scripts/certbot-crontab-init.js +488 -8
  191. package/src/scripts/certbot-init.js +641 -9
  192. package/src/scripts/ch.js +339 -7
  193. package/src/scripts/claude-danger.js +253 -8
  194. package/src/scripts/clean-dev.js +419 -8
  195. package/src/scripts/clear-dns-cache.js +525 -7
  196. package/src/scripts/clone.js +417 -7
  197. package/src/scripts/code-all.js +420 -7
  198. package/src/scripts/count-files.js +195 -8
  199. package/src/scripts/count-folders.js +195 -8
  200. package/src/scripts/count.js +248 -8
  201. package/src/scripts/d.js +203 -7
  202. package/src/scripts/datauri.js +373 -8
  203. package/src/scripts/delete-files.js +363 -7
  204. package/src/scripts/docker-clean.js +410 -8
  205. package/src/scripts/dp.js +426 -7
  206. package/src/scripts/e.js +375 -9
  207. package/src/scripts/empty-trash.js +497 -7
  208. package/src/scripts/evm.js +428 -9
  209. package/src/scripts/fetch-github-repos.js +441 -10
  210. package/src/scripts/get-channel.js +329 -8
  211. package/src/scripts/get-course.js +384 -11
  212. package/src/scripts/get-dependencies.js +290 -9
  213. package/src/scripts/get-folder.js +783 -10
  214. package/src/scripts/get-tunes.js +411 -10
  215. package/src/scripts/get-video.js +352 -9
  216. package/src/scripts/git-backup.js +561 -9
  217. package/src/scripts/git-clone.js +477 -9
  218. package/src/scripts/git-pup.js +303 -7
  219. package/src/scripts/git-push.js +380 -8
  220. package/src/scripts/h.js +607 -9
  221. package/src/scripts/hide-desktop-icons.js +483 -7
  222. package/src/scripts/hide-hidden-files.js +522 -7
  223. package/src/scripts/install-dependencies-from.js +440 -9
  224. package/src/scripts/ips.js +647 -10
  225. package/src/scripts/iso.js +354 -8
  226. package/src/scripts/killni.js +561 -7
  227. package/src/scripts/ll.js +451 -8
  228. package/src/scripts/local-ip.js +310 -8
  229. package/src/scripts/m.js +508 -8
  230. package/src/scripts/map.js +293 -8
  231. package/src/scripts/mkd.js +287 -7
  232. package/src/scripts/ncu-update-all.js +441 -8
  233. package/src/scripts/nginx-init.js +702 -12
  234. package/src/scripts/npmi.js +366 -7
  235. package/src/scripts/o.js +495 -8
  236. package/src/scripts/org-by-date.js +321 -7
  237. package/src/scripts/p.js +208 -7
  238. package/src/scripts/packages.js +313 -8
  239. package/src/scripts/path.js +209 -7
  240. package/src/scripts/ports.js +582 -8
  241. package/src/scripts/q.js +290 -8
  242. package/src/scripts/refresh-files.js +378 -10
  243. package/src/scripts/remove-smaller-files.js +500 -8
  244. package/src/scripts/rename-files-with-date.js +517 -9
  245. package/src/scripts/resize-image.js +523 -9
  246. package/src/scripts/rm-safe.js +653 -8
  247. package/src/scripts/s.js +525 -9
  248. package/src/scripts/set-git-public.js +349 -7
  249. package/src/scripts/show-desktop-icons.js +459 -7
  250. package/src/scripts/show-hidden-files.js +456 -7
  251. package/src/scripts/tpa.js +265 -8
  252. package/src/scripts/tpo.js +264 -7
  253. package/src/scripts/u.js +489 -7
  254. package/src/scripts/vpush.js +422 -8
  255. package/src/scripts/y.js +267 -7
  256. package/src/utils/common/os.js +94 -2
  257. package/src/utils/ubuntu/apt.js +13 -7
@@ -0,0 +1,1109 @@
1
+ # Installing Docker
2
+
3
+ ## Dependencies
4
+
5
+ ### macOS (Homebrew)
6
+ - **Required:**
7
+ - Homebrew - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
8
+ - **Optional:** None
9
+ - **Auto-installed:** None (Docker Desktop includes all components)
10
+
11
+ ### Ubuntu (APT/Snap)
12
+ - **Required:**
13
+ - `ca-certificates` - Install via `sudo apt install ca-certificates`
14
+ - `curl` - Install via `sudo apt install curl`
15
+ - **Optional:** None
16
+ - **Auto-installed:**
17
+ - `docker-ce` (Docker Engine)
18
+ - `docker-ce-cli` (Docker CLI)
19
+ - `containerd.io` (Container runtime)
20
+ - `docker-buildx-plugin` (BuildKit plugin)
21
+ - `docker-compose-plugin` (Compose v2)
22
+
23
+ ### Raspberry Pi OS (APT/Snap)
24
+ - **Required:**
25
+ - `ca-certificates` - Install via `sudo apt install ca-certificates`
26
+ - `curl` - Install via `sudo apt install curl`
27
+ - **Optional:** None
28
+ - **Auto-installed:**
29
+ - `docker-ce` (Docker Engine)
30
+ - `docker-ce-cli` (Docker CLI)
31
+ - `containerd.io` (Container runtime)
32
+ - `docker-buildx-plugin` (BuildKit plugin)
33
+ - `docker-compose-plugin` (Compose v2)
34
+
35
+ ### Amazon Linux (DNF/YUM)
36
+ - **Required:** None (DNF/YUM are pre-installed on Amazon Linux)
37
+ - **Optional:**
38
+ - `docker-compose-plugin` - Install via `sudo dnf install docker-compose-plugin` (AL2023 only, for AL2 manual installation required)
39
+ - **Auto-installed:**
40
+ - `docker` (main package includes Docker Engine)
41
+
42
+ ### Windows (Chocolatey/winget)
43
+ - **Required:**
44
+ - Chocolatey - Install via PowerShell: `Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))`
45
+ - WSL 2 - Install via `wsl --install` (recommended) or Hyper-V enabled via PowerShell
46
+ - **Optional:** None
47
+ - **Auto-installed:** None (Docker Desktop is a complete package)
48
+
49
+ ### Git Bash (Manual/Portable)
50
+ - **Required:**
51
+ - Docker Desktop on Windows host - Install via `choco install docker-desktop -y` from Administrator PowerShell
52
+ - Chocolatey on Windows host - Install via PowerShell (see Windows section above)
53
+ - **Optional:**
54
+ - `winpty` - Typically pre-installed with Git Bash, used for interactive containers with `winpty docker run -it <image>`
55
+ - **Auto-installed:** None (Git Bash uses the Windows host's Docker installation)
56
+
57
+ ## Overview
58
+
59
+ Docker is a containerization platform that enables developers to package applications and their dependencies into standardized units called containers. These containers run consistently across different environments, solving the "it works on my machine" problem. Docker provides two main products:
60
+
61
+ - **Docker Engine**: The core runtime for building and running containers, ideal for servers and CI/CD pipelines
62
+ - **Docker Desktop**: A GUI application that includes Docker Engine plus additional tools like Docker Compose, Kubernetes, and a visual dashboard, ideal for desktop development environments
63
+
64
+ This guide documents Docker Desktop installation for desktop platforms (macOS, Windows) and Docker Engine for server platforms (Ubuntu, Raspberry Pi OS, Amazon Linux).
65
+
66
+ ## Prerequisites
67
+
68
+ Before installing Docker on any platform, ensure:
69
+
70
+ 1. **Internet connectivity** - Required to download Docker packages
71
+ 2. **Administrative privileges** - Required for system-wide installation
72
+ 3. **Virtualization support** - Required on Windows and macOS (Docker Desktop uses a VM)
73
+ 4. **Sufficient resources** - Minimum 4 GB RAM and 10 GB free disk space recommended
74
+
75
+ **Important**: If you have older Docker installations (docker, docker-engine, docker.io, or docker-ce), remove them before installing to avoid conflicts.
76
+
77
+ ## Platform-Specific Installation
78
+
79
+ ### macOS (Homebrew)
80
+
81
+ #### Prerequisites
82
+
83
+ - macOS 14 (Sonoma) or later (Docker Desktop supports the current and two previous major macOS releases)
84
+ - Homebrew package manager installed
85
+ - At least 4 GB RAM
86
+ - Apple Silicon (M1/M2/M3) or Intel processor
87
+
88
+ If Homebrew is not installed, install it first:
89
+
90
+ ```bash
91
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
92
+ ```
93
+
94
+ #### Installation Steps
95
+
96
+ Run the following command to install Docker Desktop:
97
+
98
+ ```bash
99
+ brew install --quiet --cask docker
100
+ ```
101
+
102
+ The `--quiet` flag suppresses non-essential output, and `--cask` specifies the graphical application version (Docker Desktop) rather than just the CLI tools.
103
+
104
+ After installation, start Docker Desktop from the Applications folder or via command line:
105
+
106
+ ```bash
107
+ open -a Docker
108
+ ```
109
+
110
+ **Note**: On first launch, Docker Desktop will require your password to install privileged helper components. This is a one-time requirement.
111
+
112
+ #### Verification
113
+
114
+ Confirm the installation succeeded:
115
+
116
+ ```bash
117
+ docker --version
118
+ ```
119
+
120
+ Expected output (version numbers may vary):
121
+
122
+ ```
123
+ Docker version 27.4.1, build b9d17ea
124
+ ```
125
+
126
+ Test Docker is running correctly:
127
+
128
+ ```bash
129
+ docker run hello-world
130
+ ```
131
+
132
+ This downloads a test image and runs it. If successful, you will see a message beginning with "Hello from Docker!"
133
+
134
+ #### Troubleshooting
135
+
136
+ **Problem**: `docker: command not found` after installation
137
+
138
+ **Solution**: Docker Desktop may not be running. Start it from Applications:
139
+
140
+ ```bash
141
+ open -a Docker
142
+ ```
143
+
144
+ Wait for the Docker icon in the menu bar to show "Docker Desktop is running" before running commands.
145
+
146
+ **Problem**: "Cannot connect to the Docker daemon"
147
+
148
+ **Solution**: Docker Desktop is not running. Start it and wait for initialization:
149
+
150
+ ```bash
151
+ open -a Docker
152
+ sleep 30
153
+ docker ps
154
+ ```
155
+
156
+ **Problem**: Slow performance on Apple Silicon
157
+
158
+ **Solution**: Ensure you are using the native Apple Silicon version. Reinstall with:
159
+
160
+ ```bash
161
+ brew uninstall --cask docker
162
+ brew install --quiet --cask docker
163
+ ```
164
+
165
+ ---
166
+
167
+ ### Ubuntu/Debian (APT)
168
+
169
+ #### Prerequisites
170
+
171
+ - Ubuntu 22.04 (Jammy) or later, or Debian 11 (Bullseye) or later (64-bit)
172
+ - sudo privileges
173
+ - At least 4 GB RAM recommended
174
+
175
+ **Important**: Do not use `apt install docker.io` or `snap install docker`. These packages are maintained by third parties and may be outdated. Use Docker's official repository instead.
176
+
177
+ First, remove any conflicting packages:
178
+
179
+ ```bash
180
+ for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
181
+ sudo DEBIAN_FRONTEND=noninteractive apt-get remove -y $pkg 2>/dev/null || true
182
+ done
183
+ ```
184
+
185
+ #### Installation Steps
186
+
187
+ **Step 1: Set up Docker's APT repository**
188
+
189
+ Add Docker's official GPG key and repository:
190
+
191
+ ```bash
192
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
193
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates curl
194
+ sudo install -m 0755 -d /etc/apt/keyrings
195
+ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
196
+ sudo chmod a+r /etc/apt/keyrings/docker.asc
197
+ ```
198
+
199
+ Add the repository to APT sources:
200
+
201
+ ```bash
202
+ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
203
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
204
+ ```
205
+
206
+ **Note for Debian**: Replace `ubuntu` with `debian` in the URL above:
207
+
208
+ ```bash
209
+ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
210
+ ```
211
+
212
+ **Step 2: Install Docker Engine**
213
+
214
+ ```bash
215
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
216
+ ```
217
+
218
+ **Step 3: Configure Docker to start on boot and add user to docker group**
219
+
220
+ ```bash
221
+ sudo systemctl enable docker.service
222
+ sudo systemctl enable containerd.service
223
+ sudo usermod -aG docker $USER
224
+ ```
225
+
226
+ **Important**: Log out and log back in for the group membership to take effect, or run:
227
+
228
+ ```bash
229
+ newgrp docker
230
+ ```
231
+
232
+ #### Verification
233
+
234
+ Confirm the installation succeeded:
235
+
236
+ ```bash
237
+ docker --version
238
+ ```
239
+
240
+ Expected output (version numbers may vary):
241
+
242
+ ```
243
+ Docker version 27.4.1, build b9d17ea
244
+ ```
245
+
246
+ Verify Docker Engine is running:
247
+
248
+ ```bash
249
+ sudo systemctl status docker
250
+ ```
251
+
252
+ Test Docker works without sudo (after re-logging in):
253
+
254
+ ```bash
255
+ docker run hello-world
256
+ ```
257
+
258
+ #### Troubleshooting
259
+
260
+ **Problem**: `E: Unable to locate package docker-ce`
261
+
262
+ **Solution**: The repository was not added correctly. Verify the docker.list file exists:
263
+
264
+ ```bash
265
+ cat /etc/apt/sources.list.d/docker.list
266
+ ```
267
+
268
+ If empty or missing, repeat Step 1.
269
+
270
+ **Problem**: `Cannot connect to the Docker daemon`
271
+
272
+ **Solution**: Start the Docker service:
273
+
274
+ ```bash
275
+ sudo systemctl start docker
276
+ ```
277
+
278
+ **Problem**: Permission denied when running docker commands
279
+
280
+ **Solution**: Either use sudo, or ensure your user is in the docker group:
281
+
282
+ ```bash
283
+ groups
284
+ ```
285
+
286
+ If `docker` is not listed, add yourself and log out/in:
287
+
288
+ ```bash
289
+ sudo usermod -aG docker $USER
290
+ ```
291
+
292
+ **Problem**: GPG key import fails
293
+
294
+ **Solution**: Ensure curl and ca-certificates are installed:
295
+
296
+ ```bash
297
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates curl gnupg
298
+ ```
299
+
300
+ ---
301
+
302
+ ### Raspberry Pi OS (APT)
303
+
304
+ #### Prerequisites
305
+
306
+ - Raspberry Pi OS (64-bit recommended) - Bookworm or Bullseye
307
+ - Raspberry Pi 3B+ or later (64-bit capable hardware)
308
+ - At least 2 GB RAM (4 GB recommended for multi-container workloads)
309
+ - sudo privileges
310
+
311
+ **Important Deprecation Notice**: Docker Engine v28 will be the last major version to support Raspberry Pi OS 32-bit (armhf). For long-term support, use 64-bit Raspberry Pi OS.
312
+
313
+ First, verify your architecture:
314
+
315
+ ```bash
316
+ uname -m
317
+ ```
318
+
319
+ - `aarch64` = 64-bit (recommended)
320
+ - `armv7l` = 32-bit (limited support)
321
+
322
+ Remove any conflicting packages:
323
+
324
+ ```bash
325
+ for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
326
+ sudo DEBIAN_FRONTEND=noninteractive apt-get remove -y $pkg 2>/dev/null || true
327
+ done
328
+ ```
329
+
330
+ #### Installation Steps
331
+
332
+ **For 64-bit Raspberry Pi OS (aarch64):**
333
+
334
+ Use the Debian arm64 packages:
335
+
336
+ ```bash
337
+ # Add Docker's GPG key
338
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
339
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates curl
340
+ sudo install -m 0755 -d /etc/apt/keyrings
341
+ sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
342
+ sudo chmod a+r /etc/apt/keyrings/docker.asc
343
+
344
+ # Add the repository
345
+ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
346
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
347
+
348
+ # Install Docker
349
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
350
+ ```
351
+
352
+ **For 32-bit Raspberry Pi OS (armv7l):**
353
+
354
+ Use the Raspbian-specific packages:
355
+
356
+ ```bash
357
+ # Add Docker's GPG key
358
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
359
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates curl
360
+ sudo install -m 0755 -d /etc/apt/keyrings
361
+ sudo curl -fsSL https://download.docker.com/linux/raspbian/gpg -o /etc/apt/keyrings/docker.asc
362
+ sudo chmod a+r /etc/apt/keyrings/docker.asc
363
+
364
+ # Add the repository
365
+ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/raspbian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
366
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
367
+
368
+ # Install Docker
369
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
370
+ ```
371
+
372
+ **Post-installation (both architectures):**
373
+
374
+ ```bash
375
+ sudo systemctl enable docker.service
376
+ sudo systemctl enable containerd.service
377
+ sudo usermod -aG docker $USER
378
+ ```
379
+
380
+ Log out and log back in for group membership to take effect.
381
+
382
+ #### Verification
383
+
384
+ Confirm the installation succeeded:
385
+
386
+ ```bash
387
+ docker --version
388
+ ```
389
+
390
+ Expected output (version numbers may vary):
391
+
392
+ ```
393
+ Docker version 27.4.1, build b9d17ea
394
+ ```
395
+
396
+ Test Docker works:
397
+
398
+ ```bash
399
+ docker run hello-world
400
+ ```
401
+
402
+ **Note**: On ARM architecture, not all Docker images are available. Use images with `arm64` or `arm/v7` tags, or multi-architecture images.
403
+
404
+ #### Troubleshooting
405
+
406
+ **Problem**: "no matching manifest for linux/arm/v7" or "no matching manifest for linux/arm64"
407
+
408
+ **Solution**: The image does not support ARM architecture. Look for ARM-compatible images or use official images which typically support multiple architectures.
409
+
410
+ **Problem**: Installation very slow
411
+
412
+ **Solution**: Raspberry Pi SD cards can be slow. Use a high-quality SD card (Class 10 or faster) or boot from USB/SSD.
413
+
414
+ **Problem**: Docker daemon fails to start with cgroup errors
415
+
416
+ **Solution**: Add cgroup options to boot config:
417
+
418
+ ```bash
419
+ echo ' cgroup_memory=1 cgroup_enable=memory' | sudo tee -a /boot/cmdline.txt
420
+ sudo reboot
421
+ ```
422
+
423
+ **Problem**: Out of memory errors
424
+
425
+ **Solution**: Add swap space or reduce container memory limits. Create a swap file:
426
+
427
+ ```bash
428
+ sudo fallocate -l 2G /swapfile
429
+ sudo chmod 600 /swapfile
430
+ sudo mkswap /swapfile
431
+ sudo swapon /swapfile
432
+ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
433
+ ```
434
+
435
+ ---
436
+
437
+ ### Amazon Linux (DNF/YUM)
438
+
439
+ #### Prerequisites
440
+
441
+ - Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
442
+ - sudo privileges
443
+ - EC2 instance or compatible environment
444
+
445
+ **Note**: Amazon Linux 2023 uses DNF as the package manager. Amazon Linux 2 uses YUM. The commands below use DNF for AL2023; for AL2, replace `dnf` with `yum`.
446
+
447
+ #### Installation Steps
448
+
449
+ **For Amazon Linux 2023:**
450
+
451
+ ```bash
452
+ # Update system packages
453
+ sudo dnf update -y
454
+
455
+ # Install Docker from Amazon's repository
456
+ sudo dnf install -y docker
457
+
458
+ # Start and enable Docker
459
+ sudo systemctl start docker
460
+ sudo systemctl enable docker
461
+
462
+ # Add user to docker group
463
+ sudo usermod -aG docker $USER
464
+ ```
465
+
466
+ **For Amazon Linux 2:**
467
+
468
+ ```bash
469
+ # Update system packages
470
+ sudo yum update -y
471
+
472
+ # Install Docker using amazon-linux-extras
473
+ sudo amazon-linux-extras install -y docker
474
+
475
+ # Start and enable Docker
476
+ sudo systemctl start docker
477
+ sudo systemctl enable docker
478
+
479
+ # Add user to docker group
480
+ sudo usermod -aG docker $USER
481
+ ```
482
+
483
+ Log out and log back in for group membership to take effect.
484
+
485
+ **Installing Docker Compose:**
486
+
487
+ Docker Compose v2 is installed as a plugin. On Amazon Linux, install it separately:
488
+
489
+ ```bash
490
+ # For AL2023
491
+ sudo dnf install -y docker-compose-plugin
492
+
493
+ # For AL2 (manual installation)
494
+ DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
495
+ sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
496
+ sudo chmod +x /usr/local/bin/docker-compose
497
+ ```
498
+
499
+ #### Verification
500
+
501
+ Confirm the installation succeeded:
502
+
503
+ ```bash
504
+ docker --version
505
+ ```
506
+
507
+ Expected output (version numbers may vary):
508
+
509
+ ```
510
+ Docker version 25.0.3, build 4debf41
511
+ ```
512
+
513
+ **Note**: Amazon's repository may have a slightly older version than Docker's official repository. This is intentional for stability.
514
+
515
+ Verify Docker is running:
516
+
517
+ ```bash
518
+ sudo systemctl status docker
519
+ ```
520
+
521
+ Test Docker works:
522
+
523
+ ```bash
524
+ docker run hello-world
525
+ ```
526
+
527
+ #### Troubleshooting
528
+
529
+ **Problem**: `No match for argument: docker` on Amazon Linux 2
530
+
531
+ **Solution**: Use amazon-linux-extras:
532
+
533
+ ```bash
534
+ sudo amazon-linux-extras install -y docker
535
+ ```
536
+
537
+ **Problem**: Docker version is older than expected
538
+
539
+ **Solution**: Amazon's repository prioritizes stability. If you need the latest version, use Docker's official CentOS repository (compatible with Amazon Linux):
540
+
541
+ ```bash
542
+ sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
543
+ sudo sed -i 's/$releasever/9/g' /etc/yum.repos.d/docker-ce.repo
544
+ sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
545
+ ```
546
+
547
+ **Problem**: `Cannot connect to the Docker daemon`
548
+
549
+ **Solution**: Start the Docker service:
550
+
551
+ ```bash
552
+ sudo systemctl start docker
553
+ ```
554
+
555
+ **Problem**: Permission denied
556
+
557
+ **Solution**: Ensure Docker service is running and you are in the docker group:
558
+
559
+ ```bash
560
+ sudo systemctl status docker
561
+ groups
562
+ ```
563
+
564
+ ---
565
+
566
+ ### Windows (Chocolatey)
567
+
568
+ #### Prerequisites
569
+
570
+ - Windows 10 version 21H2 or higher (64-bit), or Windows 11
571
+ - BIOS-level virtualization enabled (Intel VT-x or AMD-V)
572
+ - WSL 2 backend (recommended) or Hyper-V enabled
573
+ - At least 4 GB RAM
574
+ - Administrator PowerShell or Command Prompt
575
+ - Chocolatey package manager installed
576
+
577
+ If Chocolatey is not installed, install it first by running this command in an Administrator PowerShell:
578
+
579
+ ```powershell
580
+ Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
581
+ ```
582
+
583
+ #### Installation Steps
584
+
585
+ Run the following command in an Administrator PowerShell or Command Prompt:
586
+
587
+ ```powershell
588
+ choco install docker-desktop -y
589
+ ```
590
+
591
+ The `-y` flag automatically confirms all prompts, enabling fully non-interactive installation.
592
+
593
+ **Note**: A system restart may be required after installation to complete the setup.
594
+
595
+ After restart, Docker Desktop will launch automatically. If not, start it from the Start Menu.
596
+
597
+ #### Verification
598
+
599
+ Open a new Command Prompt or PowerShell window, then run:
600
+
601
+ ```powershell
602
+ docker --version
603
+ ```
604
+
605
+ Expected output (version numbers may vary):
606
+
607
+ ```
608
+ Docker version 27.4.1, build b9d17ea
609
+ ```
610
+
611
+ Test Docker works:
612
+
613
+ ```powershell
614
+ docker run hello-world
615
+ ```
616
+
617
+ #### Troubleshooting
618
+
619
+ **Problem**: "WSL 2 installation is incomplete" error
620
+
621
+ **Solution**: Install WSL 2 before Docker Desktop:
622
+
623
+ ```powershell
624
+ wsl --install
625
+ ```
626
+
627
+ Restart your computer and then retry Docker Desktop installation.
628
+
629
+ **Problem**: "Virtualization must be enabled" error
630
+
631
+ **Solution**: Enable virtualization in your BIOS/UEFI settings. The exact steps vary by manufacturer. Look for settings named "Intel VT-x", "Intel Virtualization Technology", "AMD-V", or "SVM Mode".
632
+
633
+ **Problem**: Docker Desktop fails to start with Hyper-V error
634
+
635
+ **Solution**: Enable Hyper-V from an Administrator PowerShell:
636
+
637
+ ```powershell
638
+ Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -NoRestart
639
+ Enable-WindowsOptionalFeature -Online -FeatureName Containers -All -NoRestart
640
+ Restart-Computer
641
+ ```
642
+
643
+ **Problem**: `docker: command not found` in terminal
644
+
645
+ **Solution**: Docker Desktop may not be running. Start it from the Start Menu and wait for initialization (look for the whale icon in the system tray).
646
+
647
+ **Problem**: Slow performance
648
+
649
+ **Solution**: Use WSL 2 backend (recommended) instead of Hyper-V. In Docker Desktop settings, ensure "Use the WSL 2 based engine" is checked.
650
+
651
+ ---
652
+
653
+ ### WSL (Ubuntu)
654
+
655
+ #### Prerequisites
656
+
657
+ - Windows 10 version 2004 or higher, or Windows 11
658
+ - WSL 2 enabled with Ubuntu distribution installed
659
+ - sudo privileges within WSL
660
+
661
+ **Recommended Approach**: Install Docker Desktop on Windows (see Windows section) and enable WSL 2 integration. Docker Desktop automatically provides Docker access within WSL distributions without separate installation.
662
+
663
+ **Alternative Approach**: Install Docker Engine directly within WSL (documented below). Use this approach if you prefer not to use Docker Desktop or need Docker only within WSL.
664
+
665
+ #### Installation Steps
666
+
667
+ **Option A: Docker Desktop Integration (Recommended)**
668
+
669
+ 1. Install Docker Desktop on Windows (see Windows section)
670
+ 2. Open Docker Desktop settings
671
+ 3. Navigate to Resources > WSL Integration
672
+ 4. Enable integration for your Ubuntu distribution
673
+ 5. Docker commands will now work in your WSL Ubuntu terminal
674
+
675
+ **Option B: Docker Engine in WSL (Without Docker Desktop)**
676
+
677
+ Run these commands in your WSL Ubuntu terminal:
678
+
679
+ ```bash
680
+ # Remove any conflicting packages
681
+ for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
682
+ sudo DEBIAN_FRONTEND=noninteractive apt-get remove -y $pkg 2>/dev/null || true
683
+ done
684
+
685
+ # Add Docker's GPG key
686
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
687
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates curl
688
+ sudo install -m 0755 -d /etc/apt/keyrings
689
+ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
690
+ sudo chmod a+r /etc/apt/keyrings/docker.asc
691
+
692
+ # Add the repository
693
+ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
694
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
695
+
696
+ # Install Docker
697
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
698
+
699
+ # Add user to docker group
700
+ sudo usermod -aG docker $USER
701
+ ```
702
+
703
+ **Starting Docker in WSL:**
704
+
705
+ WSL does not use systemd by default, so Docker must be started manually:
706
+
707
+ ```bash
708
+ sudo service docker start
709
+ ```
710
+
711
+ To start Docker automatically when WSL launches, add to your `~/.bashrc`:
712
+
713
+ ```bash
714
+ echo 'if [ -z "$(pgrep -x dockerd)" ]; then sudo service docker start > /dev/null 2>&1; fi' >> ~/.bashrc
715
+ ```
716
+
717
+ Configure passwordless sudo for the docker service (optional):
718
+
719
+ ```bash
720
+ echo "$USER ALL=(ALL) NOPASSWD: /usr/sbin/service docker *" | sudo tee /etc/sudoers.d/docker-service
721
+ ```
722
+
723
+ #### Verification
724
+
725
+ Confirm the installation succeeded:
726
+
727
+ ```bash
728
+ docker --version
729
+ ```
730
+
731
+ Expected output (version numbers may vary):
732
+
733
+ ```
734
+ Docker version 27.4.1, build b9d17ea
735
+ ```
736
+
737
+ Test Docker works:
738
+
739
+ ```bash
740
+ docker run hello-world
741
+ ```
742
+
743
+ #### Troubleshooting
744
+
745
+ **Problem**: `Cannot connect to the Docker daemon` in WSL
746
+
747
+ **Solution**: Start the Docker service:
748
+
749
+ ```bash
750
+ sudo service docker start
751
+ ```
752
+
753
+ **Problem**: iptables errors when starting Docker
754
+
755
+ **Solution**: Switch to iptables-legacy:
756
+
757
+ ```bash
758
+ sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
759
+ sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
760
+ sudo service docker restart
761
+ ```
762
+
763
+ **Problem**: Docker works in WSL but not in Windows terminal
764
+
765
+ **Solution**: If using Docker Desktop, ensure WSL integration is enabled. If using Docker Engine in WSL only, Docker commands will only work from within WSL.
766
+
767
+ **Problem**: "permission denied" errors after adding user to docker group
768
+
769
+ **Solution**: Close and restart your WSL terminal, or run:
770
+
771
+ ```bash
772
+ newgrp docker
773
+ ```
774
+
775
+ ---
776
+
777
+ ### Git Bash (Windows Installation)
778
+
779
+ #### Prerequisites
780
+
781
+ - Windows 10 or Windows 11 (64-bit)
782
+ - Git Bash installed (comes with Git for Windows)
783
+ - Docker Desktop installed on Windows (see Windows section)
784
+
785
+ **Note**: Git Bash on Windows does not require a separate Docker installation. Git Bash inherits the Windows PATH, so once Docker Desktop is installed on Windows, the `docker` command is automatically available in Git Bash.
786
+
787
+ #### Installation Steps
788
+
789
+ 1. Install Docker Desktop on Windows using Chocolatey (see Windows section):
790
+
791
+ ```bash
792
+ # Run from Administrator PowerShell or Command Prompt
793
+ choco install docker-desktop -y
794
+ ```
795
+
796
+ 2. Restart your computer if prompted
797
+
798
+ 3. Launch Docker Desktop from the Start Menu and wait for it to initialize
799
+
800
+ 4. Open Git Bash - the `docker` command will be available
801
+
802
+ #### Verification
803
+
804
+ In Git Bash, confirm Docker is accessible:
805
+
806
+ ```bash
807
+ docker --version
808
+ ```
809
+
810
+ Expected output (version numbers may vary):
811
+
812
+ ```
813
+ Docker version 27.4.1, build b9d17ea
814
+ ```
815
+
816
+ Test Docker works:
817
+
818
+ ```bash
819
+ docker run hello-world
820
+ ```
821
+
822
+ #### Troubleshooting
823
+
824
+ **Problem**: `docker: command not found` in Git Bash
825
+
826
+ **Solution**: Docker Desktop may not be running or PATH may not be inherited. First, ensure Docker Desktop is running (check for whale icon in system tray). Then verify the PATH includes Docker:
827
+
828
+ ```bash
829
+ echo $PATH | tr ':' '\n' | grep -i docker
830
+ ```
831
+
832
+ If Docker is not in PATH, add it to your `~/.bashrc`:
833
+
834
+ ```bash
835
+ echo 'export PATH="$PATH:/c/Program Files/Docker/Docker/resources/bin"' >> ~/.bashrc
836
+ source ~/.bashrc
837
+ ```
838
+
839
+ **Problem**: `the input device is not a TTY` error
840
+
841
+ **Solution**: Git Bash's mintty terminal has TTY compatibility issues with Docker. Use `winpty` prefix:
842
+
843
+ ```bash
844
+ winpty docker run -it ubuntu bash
845
+ ```
846
+
847
+ Or add an alias to your `~/.bashrc`:
848
+
849
+ ```bash
850
+ echo 'alias docker="winpty docker"' >> ~/.bashrc
851
+ source ~/.bashrc
852
+ ```
853
+
854
+ **Problem**: Volume mount paths not working
855
+
856
+ **Solution**: Git Bash automatically converts Unix-style paths. For volume mounts, prefix with double slash or use Windows-style paths:
857
+
858
+ ```bash
859
+ # Use double leading slash
860
+ docker run -v //c/Users/me/project:/app ubuntu ls /app
861
+
862
+ # Or use MSYS_NO_PATHCONV
863
+ MSYS_NO_PATHCONV=1 docker run -v /c/Users/me/project:/app ubuntu ls /app
864
+ ```
865
+
866
+ **Problem**: Docker Compose commands fail
867
+
868
+ **Solution**: Docker Compose v2 is integrated as `docker compose` (with a space). The old `docker-compose` command may not work in Git Bash. Use:
869
+
870
+ ```bash
871
+ docker compose up
872
+ ```
873
+
874
+ Instead of:
875
+
876
+ ```bash
877
+ docker-compose up
878
+ ```
879
+
880
+ ---
881
+
882
+ ## Post-Installation Configuration
883
+
884
+ After installing Docker on any platform, consider these optional but recommended configurations.
885
+
886
+ ### Running Docker Without sudo (Linux)
887
+
888
+ On Linux systems, Docker requires root privileges by default. To run Docker commands without `sudo`:
889
+
890
+ 1. Create the docker group (if it does not exist):
891
+
892
+ ```bash
893
+ sudo groupadd docker
894
+ ```
895
+
896
+ 2. Add your user to the docker group:
897
+
898
+ ```bash
899
+ sudo usermod -aG docker $USER
900
+ ```
901
+
902
+ 3. Log out and log back in for the change to take effect, or run:
903
+
904
+ ```bash
905
+ newgrp docker
906
+ ```
907
+
908
+ 4. Verify you can run Docker without sudo:
909
+
910
+ ```bash
911
+ docker run hello-world
912
+ ```
913
+
914
+ **Security Warning**: The docker group grants root-equivalent privileges. Only add trusted users to this group.
915
+
916
+ ### Configuring Docker to Start on Boot (Linux)
917
+
918
+ On systems using systemd:
919
+
920
+ ```bash
921
+ sudo systemctl enable docker.service
922
+ sudo systemctl enable containerd.service
923
+ ```
924
+
925
+ ### Configuring Default Registry Mirror
926
+
927
+ To use a custom registry mirror (useful for corporate environments or improving pull speeds), create or edit `/etc/docker/daemon.json`:
928
+
929
+ ```bash
930
+ sudo mkdir -p /etc/docker
931
+ sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'
932
+ {
933
+ "registry-mirrors": ["https://mirror.example.com"]
934
+ }
935
+ EOF
936
+ sudo systemctl restart docker
937
+ ```
938
+
939
+ ### Configuring Log Rotation
940
+
941
+ By default, Docker container logs can grow unbounded. Configure log rotation:
942
+
943
+ ```bash
944
+ sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'
945
+ {
946
+ "log-driver": "json-file",
947
+ "log-opts": {
948
+ "max-size": "10m",
949
+ "max-file": "3"
950
+ }
951
+ }
952
+ EOF
953
+ sudo systemctl restart docker
954
+ ```
955
+
956
+ ### Verifying Docker Compose
957
+
958
+ Docker Compose v2 is included with Docker Engine and Docker Desktop. Verify it is available:
959
+
960
+ ```bash
961
+ docker compose version
962
+ ```
963
+
964
+ Expected output (version numbers may vary):
965
+
966
+ ```
967
+ Docker Compose version v2.32.1
968
+ ```
969
+
970
+ ---
971
+
972
+ ## Common Issues
973
+
974
+ ### Issue: "Cannot connect to the Docker daemon"
975
+
976
+ **Symptoms**: `Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?`
977
+
978
+ **Solutions**:
979
+
980
+ - **Linux**: Start the Docker service:
981
+
982
+ ```bash
983
+ sudo systemctl start docker
984
+ ```
985
+
986
+ - **macOS/Windows**: Ensure Docker Desktop is running (check for icon in menu bar/system tray)
987
+
988
+ - **WSL**: Start Docker manually:
989
+
990
+ ```bash
991
+ sudo service docker start
992
+ ```
993
+
994
+ ### Issue: Permission Denied
995
+
996
+ **Symptoms**: `Got permission denied while trying to connect to the Docker daemon socket`
997
+
998
+ **Solutions**:
999
+
1000
+ - Add your user to the docker group:
1001
+
1002
+ ```bash
1003
+ sudo usermod -aG docker $USER
1004
+ ```
1005
+
1006
+ - Log out and log back in
1007
+ - As a temporary workaround, use sudo:
1008
+
1009
+ ```bash
1010
+ sudo docker run hello-world
1011
+ ```
1012
+
1013
+ ### Issue: Disk Space Full
1014
+
1015
+ **Symptoms**: Docker operations fail with "no space left on device"
1016
+
1017
+ **Solutions**:
1018
+
1019
+ Remove unused Docker objects:
1020
+
1021
+ ```bash
1022
+ # Remove unused containers, networks, images, and volumes
1023
+ docker system prune -af --volumes
1024
+ ```
1025
+
1026
+ Check Docker disk usage:
1027
+
1028
+ ```bash
1029
+ docker system df
1030
+ ```
1031
+
1032
+ ### Issue: Network Conflicts
1033
+
1034
+ **Symptoms**: Containers cannot access the internet or conflict with host network
1035
+
1036
+ **Solutions**:
1037
+
1038
+ Restart Docker to reset networking:
1039
+
1040
+ ```bash
1041
+ # Linux
1042
+ sudo systemctl restart docker
1043
+
1044
+ # macOS/Windows
1045
+ # Restart Docker Desktop from the menu
1046
+ ```
1047
+
1048
+ Check if Docker networks conflict with your host network:
1049
+
1050
+ ```bash
1051
+ docker network ls
1052
+ docker network inspect bridge
1053
+ ```
1054
+
1055
+ ### Issue: Container DNS Resolution Failures
1056
+
1057
+ **Symptoms**: Containers cannot resolve hostnames
1058
+
1059
+ **Solutions**:
1060
+
1061
+ Configure custom DNS in `/etc/docker/daemon.json`:
1062
+
1063
+ ```bash
1064
+ sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'
1065
+ {
1066
+ "dns": ["8.8.8.8", "8.8.4.4"]
1067
+ }
1068
+ EOF
1069
+ sudo systemctl restart docker
1070
+ ```
1071
+
1072
+ ### Issue: Slow Image Pulls
1073
+
1074
+ **Symptoms**: `docker pull` takes very long or times out
1075
+
1076
+ **Solutions**:
1077
+
1078
+ - Check your internet connection
1079
+ - Use a registry mirror (see Post-Installation Configuration)
1080
+ - For corporate networks, configure proxy settings:
1081
+
1082
+ ```bash
1083
+ sudo mkdir -p /etc/systemd/system/docker.service.d
1084
+ sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf > /dev/null <<'EOF'
1085
+ [Service]
1086
+ Environment="HTTP_PROXY=http://proxy.example.com:8080"
1087
+ Environment="HTTPS_PROXY=http://proxy.example.com:8080"
1088
+ Environment="NO_PROXY=localhost,127.0.0.1"
1089
+ EOF
1090
+ sudo systemctl daemon-reload
1091
+ sudo systemctl restart docker
1092
+ ```
1093
+
1094
+ ---
1095
+
1096
+ ## References
1097
+
1098
+ - [Docker Official Installation Documentation](https://docs.docker.com/engine/install/)
1099
+ - [Docker Desktop for Mac](https://docs.docker.com/desktop/setup/install/mac-install/)
1100
+ - [Docker Desktop for Windows](https://docs.docker.com/desktop/setup/install/windows-install/)
1101
+ - [Docker Engine on Ubuntu](https://docs.docker.com/engine/install/ubuntu/)
1102
+ - [Docker Engine on Debian](https://docs.docker.com/engine/install/debian/)
1103
+ - [Docker Engine on Raspberry Pi OS](https://docs.docker.com/engine/install/raspberry-pi-os/)
1104
+ - [Docker Desktop WSL 2 Backend](https://docs.docker.com/desktop/features/wsl/)
1105
+ - [Docker Post-Installation Steps for Linux](https://docs.docker.com/engine/install/linux-postinstall/)
1106
+ - [Docker Desktop Homebrew Cask](https://formulae.brew.sh/cask/docker)
1107
+ - [Docker Desktop Chocolatey Package](https://community.chocolatey.org/packages/docker-desktop)
1108
+ - [AWS Documentation: Installing Docker on Amazon Linux](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-docker.html)
1109
+ - [Microsoft Learn: Docker on WSL](https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers)