# Docker Cheatsheet ## Minimal Workflow ``` docker init docker compose up --build docker compose up --build -d #run_in_background docker compose down #stop ``` ## Managing Containers | Name | Command | |------------------------------------------------------------------------|-------------------------------------------------------------------------------------| | Starting Containers | docker container start nginx | | Stopping Containers | docker container stop nginx | | Restarting Containers | docker container restart nginx | | Pausing Containers | docker container pause nginx | | Unpausing Containers | docker container unpause nginx | | Blocking a Container | docker container wait nginx | | Sending SIGKILL Containers | docker container kill nginx | | Sending another signal | docker container kill -s HUP nginx | | Connecting to an Existing Container | docker container attach nginx | | Check the Containers | docker ps | | To see all running containers | docker container ls | | Container Logs | docker logs infinite | | ‘tail -f’ Containers’ Logs | docker container logs infinite -f | | Inspecting Containers | docker container inspect infinite | | Inspecting Containers for certain | docker container inspect –format ‘{{ .NetworkSettings.IPAddress }}’ $(docker ps -q) | | Containers Events | docker system events infinite | | docker system events infinite | docker container port infinite | | Running Processes | docker container top infinite | | Container Resource Usage | docker container stats infinite | | Inspecting changes to files or directories on a container’s filesystem | docker container diff infinite ## Manage Images | Name | Command | | ---- | ---- | | Listing Images | docker image ls | | Building Images | docker build. | | From a Remote GIT Repository | docker build github.com/creack/docker-firefox | | Instead of Specifying a Context, You Can Pass a Single Dockerfile in the URL or Pipe the File in via STDIN | docker build – < Dockerfile | | Building and Tagging | docker build -t eon/infinite. | | Building a Dockerfile while Specifying the Build Context | docker build -f myOtherDockerfile. | | Building from a Remote Dockerfile URI | curl example.com/remote/Dockerfile\|docker build -f – . | | Removing an Image | docker image rm nginx | | Loading a Tarred Repository from a File or the Standard Input Stream | docker image load < ubuntu.tar.gz | | Saving an Image to a Tar Archive | docker image save busybox > ubuntu.tar | | Showing the History of an Image | docker image history | | Creating an Image From a Container | docker container commit nginx | | Tagging an Image | docker image tag nginx eon01/nginx | | Pushing an Image | docker image push eon01/nginx | ## Removing Images | Name | Command | | ---- | ---- | | Removing a Running Container | docker container rm nginx | | Removing a Container and its Volume | docker container rm -v nginx | | Removing all Exited Containers | docker container rm $(docker container ls -a -f status=exited -q) | | Removing All Stopped Containers | docker container rm `docker container ls -a -q` | | Removing a Docker Image | docker image rm nginx | | Removing Dangling Images | docker image rm $(docker image ls -f dangling=true -q) | | Removing all Images | docker image rm $(docker image ls -a -q) | | Removing all Untagged Images | docker image rm -f $(docker image ls \|grep “^”\|awk “{print $3}”) | | Stopping & Removing all Containers | docker container stop $(docker container ls -a -q) && docker container rm $(docker container ls -a -q) | | Removing Dangling Volumes | docker volume rm $(docker volume ls -f dangling=true -q) | | Removing all unused (containers, images, networks and volumes) | docker system prune -f | | Clean all | docker system prune -a | ## Dockerfile Commands | Command | Description | Example | |------------|--------------------------------------------------------------------------------------------------|-----------------------------------------------| | FROM | Specifies the base image for the build | FROM ubuntu:latest | | RUN | Executes a command inside the container during build time | RUN apt-get update && apt-get install -y curl | | CMD | Specifies the default command to run when the container starts | CMD [“npm”, “start”] | | EXPOSE | Informs Docker that the container listens on specific network ports at runtime | EXPOSE 80/tcp | | ENV | Sets environment variables inside the container | ENV NODE_ENV=production | | COPY | Copies files or directories from the build context into the container | COPY app.js /usr/src/app/ | | ADD | Similar to COPY but supports additional features like URL retrieval and decompression | ADD https://example.com/file.tar.gz /usr/src/ | | WORKDIR | Sets the working directory for subsequent instructions | WORKDIR /usr/src/app | | ARG | Defines variables that users can pass at build-time to the builder with the docker build command | ARG VERSION=1.0 | | ENTRYPOINT | Configures a container to run as an executable | ENTRYPOINT [“python”, “app.py”] | | VOLUME | Creates a mount point and assigns it to a specified volume | VOLUME /data | | USER | Sets the user or UID to use when running the image | USER appuser | | LABEL | Adds metadata to an image in the form of key-value pairs | LABEL version=”1.0″ maintainer=”John Doe | | ONBUILD | Configures commands to run when the image is used as the base for another build | ONBUILD ADD . /app/src | ## Volume Commands | Command | Description | Example | |----------------|----------------------------------------------|------------------------------| | volume create | Creates a named volume | docker volume create mydata | | volume ls | Lists the available volumes | docker volume ls | | volume inspect | Displays detailed information about a volume | docker volume inspect mydata | | volume rm | Removes one or more volumes | docker volume rm mydata | | volume prune | Removes all unused volumes | docker volume prune |