mirror of https://github.com/docker/docs.git
				
				
				
			Update best-practices.md (#21045)
## Description Adding `--no-install-recommends` is a common best practice and can massively reduce image sizes. Since people copy from this page it is good to add.
This commit is contained in:
		
							parent
							
								
									548f41111a
								
							
						
					
					
						commit
						ff09b52268
					
				|  | @ -98,7 +98,7 @@ download of base images and dependencies. | |||
| ```dockerfile | ||||
| # syntax=docker/dockerfile:1 | ||||
| FROM ubuntu:24.04 | ||||
| RUN apt-get -y update && apt-get install -y python | ||||
| RUN apt-get -y update && apt-get install -y --no-install-recommends python3 | ||||
| ``` | ||||
| 
 | ||||
| Also consider [pinning base image versions](#pin-base-image-versions). | ||||
|  | @ -165,7 +165,7 @@ review. Adding a space before a backslash (`\`) helps as well. | |||
| Here’s an example from the [buildpack-deps image](https://github.com/docker-library/buildpack-deps): | ||||
| 
 | ||||
| ```dockerfile | ||||
| RUN apt-get update && apt-get install -y \ | ||||
| RUN apt-get update && apt-get install -y --no-install-recommends \ | ||||
|   bzr \ | ||||
|   cvs \ | ||||
|   git \ | ||||
|  | @ -322,7 +322,7 @@ For example, you can chain commands with the `&&` operator, and use | |||
| escape characters to break long commands into multiple lines. | ||||
| 
 | ||||
| ```dockerfile | ||||
| RUN apt-get update && apt-get install -y \ | ||||
| RUN apt-get update && apt-get install -y --no-install-recommends \ | ||||
|     package-bar \ | ||||
|     package-baz \ | ||||
|     package-foo | ||||
|  | @ -337,7 +337,7 @@ with a pipeline operator: | |||
| ```dockerfile | ||||
| RUN <<EOF | ||||
| apt-get update | ||||
| apt-get install -y \ | ||||
| apt-get install -y --no-install-recommends \ | ||||
|     package-bar \ | ||||
|     package-baz \ | ||||
|     package-foo | ||||
|  | @ -356,7 +356,7 @@ Always combine `RUN apt-get update` with `apt-get install` in the same `RUN` | |||
| statement. For example: | ||||
| 
 | ||||
| ```dockerfile | ||||
| RUN apt-get update && apt-get install -y \ | ||||
| RUN apt-get update && apt-get install -y --no-install-recommends \ | ||||
|     package-bar \ | ||||
|     package-baz \ | ||||
|     package-foo | ||||
|  | @ -370,7 +370,7 @@ subsequent `apt-get install` instructions to fail. For example, this issue will | |||
| 
 | ||||
| FROM ubuntu:22.04 | ||||
| RUN apt-get update | ||||
| RUN apt-get install -y curl | ||||
| RUN apt-get install -y --no-install-recommends curl | ||||
| ``` | ||||
| 
 | ||||
| After building the image, all layers are in the Docker cache. Suppose you later | ||||
|  | @ -381,7 +381,7 @@ modify `apt-get install` by adding an extra package as shown in the following Do | |||
| 
 | ||||
| FROM ubuntu:22.04 | ||||
| RUN apt-get update | ||||
| RUN apt-get install -y curl nginx | ||||
| RUN apt-get install -y --no-install-recommends curl nginx | ||||
| ``` | ||||
| 
 | ||||
| Docker sees the initial and modified instructions as identical and reuses the | ||||
|  | @ -390,14 +390,14 @@ because the build uses the cached version. Because the `apt-get update` isn't | |||
| run, your build can potentially get an outdated version of the `curl` and | ||||
| `nginx` packages. | ||||
| 
 | ||||
| Using `RUN apt-get update && apt-get install -y` ensures your Dockerfile | ||||
| Using `RUN apt-get update && apt-get install -y --no-install-recommends` ensures your Dockerfile | ||||
| installs the latest package versions with no further coding or manual | ||||
| intervention. This technique is known as cache busting. You can also achieve | ||||
| cache busting by specifying a package version. This is known as version pinning. | ||||
| For example: | ||||
| 
 | ||||
| ```dockerfile | ||||
| RUN apt-get update && apt-get install -y \ | ||||
| RUN apt-get update && apt-get install -y --no-install-recommends \ | ||||
|     package-bar \ | ||||
|     package-baz \ | ||||
|     package-foo=1.3.* | ||||
|  | @ -411,7 +411,7 @@ Below is a well-formed `RUN` instruction that demonstrates all the `apt-get` | |||
| recommendations. | ||||
| 
 | ||||
| ```dockerfile | ||||
| RUN apt-get update && apt-get install -y \ | ||||
| RUN apt-get update && apt-get install -y --no-install-recommends \ | ||||
|     aufs-tools \ | ||||
|     automake \ | ||||
|     build-essential \ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue