Docker has revolutionized the way software is developed, shipped, and deployed. By providing a consistent environment across different stages of development, Docker ensures that applications run seamlessly from development to production. This containerization technology has become a cornerstone in modern DevOps practices, enabling developers and system administrators to work more efficiently and reliably.
Knowing Docker commands is essential for anyone involved in software development or system administration. These commands allow you to manage containers, images, networks, and volumes with ease, providing you with the tools needed to build, deploy, and maintain applications effectively. This article aims to provide a comprehensive list of the top 50+ Docker commands that are crucial for effective container management. Whether you are a beginner or an experienced user, mastering these commands will enhance your productivity and streamline your workflows.
Section 1: Basic Docker Commands
1.1 Docker Version and Info
Understanding the version and system-wide information of Docker installed on your machine is the first step in mastering Docker commands. Here are the essential commands:
-
docker --version
: This command displays the version of Docker installed on your system. It’s a quick way to verify that Docker is installed and to check which version you are running.$ docker --version Docker version 20.10.7, build f0df350
-
docker version
: This command provides detailed version information about the Docker client and server. It includes the version number, Git commit, and build date.$ docker version Client: Version: 20.10.7 API version: 1.41 Go version: go1.13.15 Git commit: f0df350 Built: Wed Jun 2 11:56:24 2021 OS/Arch: linux/amd64 Context: default Experimental: true Server: Engine: Version: 20.10.7 API version: 1.41 (minimum version 1.12) Go version: go1.13.15 Git commit: b0f5bc3 Built: Wed Jun 2 11:55:04 2021 OS/Arch: linux/amd64 Experimental: false
-
docker info
: This command displays system-wide information about Docker, including the number of containers, images, and the storage driver in use. It’s useful for getting a comprehensive overview of your Docker environment.$ docker info Client: Context: default Debug Mode: false Server: Containers: 2 Running: 1 Paused: 0 Stopped: 1 Images: 5 Storage Driver: overlay2 Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc version: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7 init version: de40ad0 Security Options: seccomp Profile: default Kernel Version: 5.8.0-53-generic Operating System: Ubuntu 20.04.2 LTS OSType: linux Architecture: x86_64 CPUs: 4 Total Memory: 7.771GiB Name: docker-desktop ID: 3Z4Q:KZ3F:3Z4Q:KZ3F:3Z4Q:KZ3F:3Z4Q:KZ3F Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false
1.2 Docker Help
Docker provides built-in help commands to assist you in understanding the usage and options of various Docker commands:
-
docker --help
: This command displays a list of all available Docker commands along with a brief description of each. It’s a handy reference for quickly finding the command you need.$ docker --help Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers Options: --config string Location of client config files (default "/root/.docker") -D, --debug Enable debug mode -H, --host list Daemon socket(s) to connect to -l, --log-level string Set the logging level (debug, info, warn, error, fatal) (default "info") --tls Use TLS; implied by --tlsverify --tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem") --tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem") --tlskey string Path to TLS key file (default "/root/.docker/key.pem") --tlsverify Use TLS and verify the remote -v, --version Print version information and quit Management Commands: builder Manage builds config Manage Docker configs container Manage containers context Manage contexts engine Manage the docker engine image Manage images network Manage networks node Manage Swarm nodes plugin Manage plugins secret Manage [Docker secrets](https://www.bitdoze.com/docker-compose-secrets/) service Manage services stack Manage Docker stacks swarm Manage Swarm system Manage Docker trust Manage trust on Docker images volume Manage volumes Commands: attach Attach local standard input, output, and error streams to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders between a container and the local filesystem create Create a new container diff Inspect changes to files or directories on a container's filesystem events Get real time events from the server exec Run a command in a running container export Export a container's filesystem as a tar archive history Show the history of an image images List images import Import the contents from a tarball to create a filesystem image info Display system-wide information inspect Return low-level information on Docker objects kill Kill one or more running containers load Load an image from a tar archive or STDIN login Log in to a Docker registry logout Log out from a Docker registry logs Fetch the logs of a container pause Pause all processes within one or more containers port List port mappings or a specific mapping for the container ps List containers pull Pull an image or a repository from a registry push Push an image or a repository to a registry rename Rename a container restart Restart one or more containers rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save one or more images to a tar archive (streamed to STDOUT by default) search Search the Docker Hub for images start Start one or more stopped containers stats Display a live stream of container(s) resource usage statistics stop Stop one or more running containers tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE top Display the running processes of a container unpause Unpause all processes within one or more containers update Update configuration of one or more containers version Show the Docker version information wait Block until one or more containers stop, then print their exit codes Run 'docker COMMAND --help' for more information on a command.
-
docker <command> --help
: This command provides detailed help for a specific Docker command, including its usage, options, and examples. For instance, if you want to learn more about thedocker run
command, you can use:$ docker run --help Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] Run a command in a new container Options: -d, --detach Run container in background and print container ID --name string Assign a name to the container -p, --publish list Publish a container's port(s) to the host -v, --volume list Bind mount a volume --rm Automatically remove the container when it exits -i, --interactive Keep STDIN open even if not attached -t, --tty Allocate a pseudo-TTY --network string Connect a container to a network --restart string Restart policy to apply when a container exits --env list Set environment variables --label list Set metadata on a container --log-driver string Logging driver for the container --log-opt list Log driver options --privileged Give extended privileges to this container --user string Username or UID (format: <name|uid>[:<group|gid>]) --workdir string Working directory inside the container --entrypoint string Overwrite the default ENTRYPOINT of the image --cpus decimal Number of CPUs --memory string Memory limit --memory-swap string Swap limit equal to memory plus swap: '-1' to enable unlimited swap --memory-reservation string Memory soft limit --cpu-shares int CPU shares (relative weight) --cpu-period int Limit CPU CFS (Completely Fair Scheduler) period --cpu-quota int Limit CPU CFS (Completely Fair Scheduler) quota --cpuset-cpus string CPUs in which to allow execution (0-3, 0,1) --cpuset-mems string MEMs in which to allow execution (0-3, 0,1)
These basic commands form the foundation of working with Docker, providing you with essential information and help to get started.
Section 2: Working with Docker Images
2.1 Pulling Images
Docker images are the blueprints for containers, and pulling images from a registry is often the first step in using Docker. Here are the key commands for pulling images:
-
docker pull <image>
: This command downloads an image from a Docker registry (such as Docker Hub). If no tag is specified, Docker defaults to pulling thelatest
tag.$ docker pull ubuntu Using default tag: latest latest: Pulling from library/ubuntu 6d28e14ab8c8: Pull complete 1c9383292a8f: Pull complete 6c0b1f2a1dcd: Pull complete Digest: sha256:4e9f2cdfd5d6b3e5d5e5c5e5d5e5e5d5e5d5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5
-
docker pull <image>:<tag>
: This command downloads a specific version of an image from a Docker registry. Tags are used to specify different versions of an image.$ docker pull nginx:alpine alpine: Pulling from library/nginx 6d28e14ab8c8: Pull complete 1c9383292a8f: Pull complete 6c0b1f2a1dcd: Pull complete Digest: sha256:4e9f2cdfd5d6b3e5d5e5c5e5d5e5e5d5e5d5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e
2.2 Listing Images
Once you have pulled images, you may want to list them to see what is available on your local system. Docker provides commands to list all images:
-
docker images
: This command lists all images on the local system, including their repository, tag, image ID, creation date, and size.$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 4e9f2cdfd5d6 2 weeks ago 72.9MB nginx alpine 6d28e14ab8c8 3 weeks ago 22.3MB
2.3 Removing Images
Managing disk space is crucial, especially when dealing with multiple images. Docker provides commands to remove images that are no longer needed:
-
docker rmi <image>
: This command removes one or more images by their image ID or repository name and tag. You can specify multiple images to remove by separating them with spaces.$ docker rmi nginx:alpine Untagged: nginx:alpine Deleted: sha256:6d28e14ab8c8
-
docker rmi $(docker images -q)
: This command removes all images on the local system. The-q
flag withdocker images
outputs only the image IDs, which are then passed todocker rmi
for removal.$ docker rmi $(docker images -q) Untagged: ubuntu:latest Deleted: sha256:4e9f2cdfd5d6
2.4 Building Images
Building custom images from a Dockerfile is a common practice in Docker. Here are the commands to build images:
-
docker build -t <image>:<tag> <path>
: This command builds an image from a Dockerfile located at the specified path. The-t
flag tags the image with a name and optional tag.$ docker build -t myapp:1.0 . Sending build context to Docker daemon 2.048kB Step 1/3 : FROM ubuntu ---> 4e9f2cdfd5d6 Step 2/3 : COPY . /app ---> Using cache ---> 1c9383292a8f Step 3/3 : CMD ["python", "/app/app.py"] ---> Using cache ---> 6c0b1f2a1dcd Successfully built 6c0b1f2a1dcd Successfully tagged myapp:1.0
-
docker build --no-cache -t <image>:<tag> <path>
: This command builds an image without using the cache. It’s useful when you want to ensure that all steps in the Dockerfile are executed fresh.$ docker build --no-cache -t myapp:1.0 . Sending build context to Docker daemon 2.048kB Step 1/3 : FROM ubuntu ---> 4e9f2cdfd5d6 Step 2/3 : COPY . /app ---> 1c9383292a8f Step 3/3 : CMD ["python", "/app/app.py"] ---> 6c0b1f2a1dcd Successfully built 6c0b1f2a1dcd Successfully tagged myapp:1.0
These commands cover the essential operations for working with Docker images, from pulling and listing to removing and building them.
Section 3: Managing Docker Containers
3.1 Running Containers
Running containers is one of the core functionalities of Docker. Here are the key commands for running containers:
-
docker run <image>
: This command runs a container from a specified image. If the image is not available locally, Docker will pull it from the registry.$ docker run ubuntu
-
docker run -d <image>
: This command runs a container in detached mode, meaning it runs in the background.$ docker run -d nginx 5d8c5c4b5b6a
-
docker run -it <image>
: This command runs a container in interactive mode with a terminal attached. It’s useful for debugging or running commands inside the container.$ docker run -it ubuntu root@5d8c5c4b5b6a:/#
3.2 Listing Containers
To manage running and stopped containers, Docker provides commands to list them:
-
docker ps
: This command lists all running containers, displaying their container ID, image, command, creation time, status, ports, and names.$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5d8c5c4b5b6a nginx "nginx -g 'daemon of..." 2 minutes ago Up 2 minutes 80/tcp amazing_bell
-
docker ps -a
: This command lists all containers, including stopped ones. It provides a comprehensive view of all containers on the system.$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5d8c5c4b5b6a nginx "nginx -g 'daemon of..." 2 minutes ago Up 2 minutes 80/tcp amazing_bell 1c9383292a8f ubuntu "/bin/bash" 5 minutes ago Exited (0) 3 minutes ago compassionate_morse
3.3 Stopping and Starting Containers
Managing the state of containers involves stopping, starting, and restarting them:
-
docker stop <container>
: This command stops a running container. You can specify the container by its ID or name.$ docker stop amazing_bell amazing_bell
-
docker start <container>
: This command starts a stopped container.$ docker start amazing_bell amazing_bell
-
docker restart <container>
: This command restarts a running or stopped container.$ docker restart amazing_bell amazing_bell
3.4 Removing Containers
To free up system resources, you can remove stopped containers:
-
docker rm <container>
: This command removes a stopped container. You can specify the container by its ID or name.$ docker rm compassionate_morse compassionate_morse
-
docker rm $(docker ps -a -q)
: This command removes all stopped containers. The-q
flag withdocker ps -a
outputs only the container IDs, which are then passed todocker rm
for removal.$ docker rm $(docker ps -a -q) compassionate_morse amazing_bell
These commands cover the essential operations for managing Docker containers, from running and listing to stopping, starting, and removing them.
Section 4: Inspecting and Logging
4.1 Inspecting Containers and Images
Inspecting containers and images allows you to retrieve detailed information about their configuration and state. Here are the key commands for inspection:
-
docker inspect <container>
: This command provides detailed information about a container in JSON format. It includes details such as the container’s configuration, state, network settings, and more.$ docker inspect amazing_bell [ { "Id": "5d8c5c4b5b6a", "Created": "2021-06-02T11:56:24.123456789Z", "Path": "nginx", "Args": [ "-g", "daemon off;" ], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 1234, "ExitCode": 0, "Error": "", "StartedAt": "2021-06-02T11:56:25.123456789Z", "FinishedAt": "0001-01-01T00:00:00Z" }, "Image": "sha256:6d28e14ab8c8", "ResolvConfPath": "/var/lib/docker/containers/5d8c5c4b5b6a/resolv.conf", "HostnamePath": "/var/lib/docker/containers/5d8c5c4b5b6a/hostname", "HostsPath": "/var/lib/docker/containers/5d8c5c4b5b6a/hosts", "LogPath": "/var/lib/docker/containers/5d8c5c4b5b6a/5d8c5c4b5b6a-json.log", "Name": "/amazing_bell", "RestartCount": 0, "Driver": "overlay2", "Platform": "linux", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "", "ExecIDs": null, "HostConfig": { "Binds": null, "ContainerIDFile": "", "LogConfig": { "Type": "json-file", "Config": {} }, "NetworkMode": "default", "PortBindings": {}, "RestartPolicy": { "Name": "no", "MaximumRetryCount": 0 }, "AutoRemove": false, "VolumeDriver": "", "VolumesFrom": null, "CapAdd": null, "CapDrop": null, "Dns": [], "DnsOptions": [], "DnsSearch": [], "ExtraHosts": null, "GroupAdd": null, "IpcMode": "private", "Cgroup": "", "Links": null, "OomScoreAdj": 0, "PidMode": "", "Privileged": false, "PublishAllPorts": false, "ReadonlyRootfs": false, "SecurityOpt": null, "UTSMode": "", "UsernsMode": "", "ShmSize": 67108864, "Runtime": "runc", "ConsoleSize": [ 0, 0 ], "Isolation": "", "CpuShares": 0, "Memory": 0, "NanoCpus": 0, "CgroupParent": "", "BlkioWeight": 0, "BlkioWeightDevice": null, "BlkioDeviceReadBps": null, "BlkioDeviceWriteBps": null, "BlkioDeviceReadIOps": null, "BlkioDeviceWriteIOps": null, "CpuPeriod": 0, "CpuQuota": 0, "CpuRealtimePeriod": 0, "CpuRealtimeRuntime": 0, "CpusetCpus": "", "CpusetMems": "", "Devices": [], "DeviceCgroupRules": null, "DeviceRequests": null, "KernelMemory": 0, "KernelMemoryTCP": 0, "MemoryReservation": 0, "MemorySwap": 0, "MemorySwappiness": null, "OomKillDisable": false, "PidsLimit": null, "Ulimits": null, "CpuCount": 0, "CpuPercent": 0, "IOMaximumIOps": 0, "IOMaximumBandwidth": 0, "MaskedPaths": [ "/proc/asound", "/proc/acpi", "/proc/kcore", "/proc/keys", "/proc/latency_stats", "/proc/timer_list", "/proc/timer_stats", "/proc/sched_debug", "/proc/scsi", "/sys/firmware" ], "ReadonlyPaths": [ "/proc/bus", "/proc/fs", "/proc/irq", "/proc/sys", "/proc/sysrq-trigger" ] }, "GraphDriver": { "Data": { "LowerDir": "/var/lib/docker/overlay2/6d28e14ab8c8/lower", "MergedDir": "/var/lib/docker/overlay2/6d28e14ab8c8/merged", "UpperDir": "/var/lib/docker/overlay2/6d28e14ab8c8/upper", "WorkDir": "/var/lib/docker/overlay2/6d28e14ab8c8/work" }, "Name": "overlay2" }, "Mounts": [], "Config": { "Hostname": "5d8c5c4b5b6a", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": false, "AttachStderr": false, "ExposedPorts": { "80/tcp": {} }, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ], "Cmd": [ "nginx", "-g", "daemon off;" ], "Image": "nginx", "Volumes": null, "WorkingDir": "", "Entrypoint": null, "OnBuild": null, "Labels": {}, "StopSignal": "SIGTERM", "StopTimeout": null, "Shell": null }, "NetworkSettings": { "Bridge": "", "SandboxID": "6d28e14ab8c8", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": { "80/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "32768" } ] }, "SandboxKey": "/var/run/docker/netns/6d28e14ab8c8", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "6d28e14ab8c8", "Gateway": "172.17.0.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "MacAddress": "02:42:ac:11:00:02", "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "6d28e14ab8c8", "EndpointID": "6d28e14ab8c8", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:02", "DriverOpts": null } } } } ]
-
docker inspect <image>
: This command provides detailed information about an image in JSON format. It includes details such as the image’s configuration, layers, and more.$ docker inspect nginx:alpine [ { "Id": "sha256:6d28e14ab8c8", "RepoTags": [ "nginx:alpine" ], "RepoDigests": [ "nginx@sha256:4e9f2cdfd5d6b3e5d5e5c5e5d5e5e5d5e5d5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e
4.2 Viewing Logs
Logs are crucial for debugging and monitoring the behavior of your containers. Docker provides commands to view the logs of a container:
-
docker logs <container>
: This command fetches the logs of a container. You can specify the container by its ID or name. It displays all the logs generated by the container since it started.$ docker logs amazing_bell 2021/06/02 11:56:25 [notice] 1#1: using the "epoll" event method 2021/06/02 11:56:25 [notice] 1#1: nginx/1.19.10 2021/06/02 11:56:25 [notice] 1#1: built by gcc 9.3.0 (Alpine 9.3.0) 2021/06/02 11:56:25 [notice] 1#1: OS: Linux 5.8.0-53-generic 2021/06/02 11:56:25 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2021/06/02 11:56:25 [notice] 1#1: start worker processes 2021/06/02 11:56:25 [notice] 1#1: start worker process 30 2021/06/02 11:56:25 [notice] 1#1: start worker process 31
-
docker logs -f <container>
: This command follows the logs of a container in real-time. The-f
flag stands for “follow,” similar to thetail -f
command in Unix-like systems. It continues to display new log entries as they are generated.$ docker logs -f amazing_bell 2021/06/02 11:56:25 [notice] 1#1: using the "epoll" event method 2021/06/02 11:56:25 [notice] 1#1: nginx/1.19.10 2021/06/02 11:56:25 [notice] 1#1: built by gcc 9.3.0 (Alpine 9.3.0) 2021/06/02 11:56:25 [notice] 1#1: OS: Linux 5.8.0-53-generic 2021/06/02 11:56:25 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2021/06/02 11:56:25 [notice] 1#1: start worker processes 2021/06/02 11:56:25 [notice] 1#1: start worker process 30 2021/06/02 11:56:25 [notice] 1#1: start worker process 31
These commands provide essential tools for inspecting and logging, enabling you to retrieve detailed information and monitor the behavior of your containers and images.
Section 5: Networking
5.1 Managing Networks
Docker networking is a crucial aspect of container management, enabling communication between containers and external systems. Here are the key commands for managing Docker networks:
-
docker network ls
: This command lists all Docker networks on the local system, including their names, IDs, drivers, and scope.$ docker network ls NETWORK ID NAME DRIVER SCOPE 6d28e14ab8c8 bridge bridge local 1c9383292a8f host host local 6c0b1f2a1dcd none null local
-
docker network create <network>
: This command creates a new Docker network with the specified name. By default, it uses the bridge driver, but you can specify other drivers such as overlay.$ docker network create my_network 6d28e14ab8c8
-
docker network rm <network>
: This command removes a Docker network by its name or ID. You can only remove networks that are not in use by any containers.$ docker network rm my_network my_network
5.2 Connecting and Disconnecting Containers
Managing the connections between containers and networks is essential for ensuring proper communication and isolation. Here are the commands to connect and disconnect containers from networks:
-
docker network connect <network> <container>
: This command connects a container to a specified network. You can specify the container by its ID or name.$ docker network connect my_network amazing_bell
-
docker network disconnect <network> <container>
: This command disconnects a container from a specified network.$ docker network disconnect my_network amazing_bell
These commands provide the essential tools for managing Docker networks, enabling you to create, list, remove networks, and manage container connections.
Section 6: Volumes and Data Management
6.1 Managing Volumes
Docker volumes are used to persist data generated by and used by Docker containers. Here are the key commands for managing Docker volumes:
-
docker volume ls
: This command lists all Docker volumes on the local system, including their names and driver information.$ docker volume ls DRIVER VOLUME NAME local my_volume local another_volume
-
docker volume create <volume>
: This command creates a new Docker volume with the specified name.$ docker volume create my_volume my_volume
-
docker volume rm <volume>
: This command removes a Docker volume by its name. You can only remove volumes that are not in use by any containers.$ docker volume rm my_volume my_volume
6.2 Using Volumes
Mounting volumes to containers allows you to persist data and share it between containers. Here are the commands to use volumes with containers:
-
docker run -v <volume>:/path/in/container <image>
: This command mounts a volume to a specified path inside the container. The-v
flag is used to specify the volume and the mount path.$ docker run -v my_volume:/data ubuntu
-
docker run --mount source=<volume>,target=/path/in/container <image>
: This command is another way to mount a volume to a container using the--mount
flag. It provides more options and flexibility compared to the-v
flag.$ docker run --mount source=my_volume,target=/data ubuntu
These commands provide the essential tools for managing Docker volumes, enabling you to create, list, remove volumes, and mount them to containers for data persistence and sharing.
Section 7: Docker Compose
7.1 Basic Commands
Docker Compose is a tool for defining and running multi-container Docker applications. Here are the key commands for working with Docker Compose:
-
docker-compose up
: This command starts the services defined in adocker-compose.yml
file. It creates and starts containers, networks, and volumes as specified in the file.$ docker-compose up Creating network "myapp_default" with the default driver Creating volume "myapp_data" with default driver Creating myapp_db_1 ... done Creating myapp_web_1 ... done Attaching to myapp_db_1, myapp_web_1 db_1 | 2021-06-02 11:56:25.123456789 [Note] mysqld: ready for connections. web_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
-
docker-compose down
: This command stops and removes containers, networks, and volumes defined in adocker-compose.yml
file. It cleans up the environment created bydocker-compose up
.$ docker-compose down Stopping myapp_web_1 ... done Stopping myapp_db_1 ... done Removing myapp_web_1 ... done Removing myapp_db_1 ... done Removing network myapp_default Removing volume myapp_data
7.2 Managing Services
Docker Compose provides commands to manage the services defined in a docker-compose.yml
file:
-
docker-compose ps
: This command lists the containers managed by Docker Compose, including their names, states, and ports.$ docker-compose ps Name Command State Ports ---------------------------------------------------------------------------- myapp_db_1 docker-entrypoint.sh Up 3306/tcp myapp_web_1 flask run Up 0.0.0.0:5000->5000/tcp
-
docker-compose logs
: This command displays the logs of services managed by Docker Compose. It aggregates the logs from all containers defined in thedocker-compose.yml
file.$ docker-compose logs db_1 | 2021-06-02 11:56:25.123456789 [Note] mysqld: ready for connections. web_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
These commands provide the essential tools for working with Docker Compose, enabling you to start, stop, and manage multi-container applications efficiently.
Section 8: Advanced Commands
8.1 Docker Exec
Executing commands inside a running container is often necessary for debugging or performing administrative tasks. Here are the key commands for using docker exec
:
-
docker exec -it <container> <command>
: This command runs a command in a running container. The-it
flags are used to run the command in interactive mode with a terminal attached.$ docker exec -it amazing_bell /bin/bash root@5d8c5c4b5b6a:/#
-
docker exec -u <user> -it <container> <command>
: This command runs a command as a specific user inside a running container. The-u
flag specifies the user.$ docker exec -u www-data -it amazing_bell /bin/bash www-data@5d8c5c4b5b6a:/$
8.2 Docker Export and Import
Exporting and importing containers allows you to save and restore container states. Here are the key commands for exporting and importing containers:
-
docker export <container> > <file.tar>
: This command exports a container’s filesystem as a tar archive. It does not include the container’s metadata (such as environment variables and linked containers).$ docker export amazing_bell > amazing_bell.tar
-
docker import <file.tar>
: This command imports a tar archive as a Docker image. You can specify a repository name and tag for the imported image.$ docker import amazing_bell.tar myimage:latest
8.3 Docker Save and Load
Saving and loading images allows you to transfer images between different Docker environments. Here are the key commands for saving and loading images:
-
docker save -o <file.tar> <image>
: This command saves an image to a tar archive. It includes all layers and metadata of the image.$ docker save -o myimage.tar myimage:latest
-
docker load -i <file.tar>
: This command loads an image from a tar archive. It restores the image, including all layers and metadata.$ docker load -i myimage.tar
These advanced commands provide powerful tools for executing commands inside containers, exporting and importing container states, and saving and loading images for transfer and backup.
Docker commands are essential for effectively managing containers and images in your development and production environments. By mastering these commands, you can streamline your workflow, troubleshoot issues more efficiently, and take full advantage of Docker’s capabilities. Remember that Docker is constantly evolving, so it’s a good idea to regularly check the official Docker documentation for the most up-to-date information and best practices.
For a comprehensive list of Docker containers that can enhance your home server setup, check out our guide on Best 100+ Docker Containers for Home Server. This resource provides a wealth of options for various applications and services you can run using Docker, helping you make the most of your containerized environment.