Docker Notes
Common Docker terms and commands used in the CLI.
Contents
Notes
- Since docker requires elevated privileges,
sudois typically required when running these commands unless the current user has privileges. - These commands are run on the Host system.
- Most commands support the
--helpflag and provide good documentation.
Images
Think of it as the template, a Image include the instructions needed to create a Container. They are read-only (immutable), so can be easily shared, but can be additionally customized. Similar in concept to a Virtual Machine Snapshot.
There are public and private registries that contain Docker Images. DockerHub, for example, is a public registry maintained by Docker Inc.
| To | Command |
|---|---|
| List: | docker image ls |
| Start: | docker run {repository-name} |
| Build: | docker build -f /path/to/a/Dockerfile . Or, if running from directory that has the Dockerfile: docker build -t {new-name} . |
Containers
Think of it as the running instance of an Image, a Container is a runnable instance of a Docker Image.
Changes can be made while a Container is running but they won't persist, if needed, you can persist data by creating a named volume that is stored on the host https://docs.docker.com/get-started/05_persisting_data/. If changes are needed to the Image (for example, to add a webserver), you can create a new image from a container.
Containers run in isolation by default, but containers on the same network can talk to each other with container networking https://docs.docker.com/get-started/07_multi_container/
| To | Command |
|---|---|
| List: | docker container ls |
| List Running: | docker ps |
| Start: | docker run {container-id} |
| Stop: | docker stop {container-id} |
| Delete: | docker rm {container-id} |
| Copy a File: | docker cp [OPTIONS] {container-id}:{src-path} {dest-path} |
| Run Command in Container: | docker exec [OPTIONS] {container-id} {command} [ARG...] docker exec -ti pop_container sh -c "echo Hello World!" |
| Create new Image from Container's changes: | docker commit {options} {container-id} |
Contexts
Contexts allow a single Docker CLI to manage multiple Docker nodes, Kubernetes clusters, etc.
| To | Command |
|---|---|
| List: | docker context ls |
| Inspect Current: | docker context inspect |
| Inspect Other: | docker context inspect {context-name} |
| Create: | docker context create |
| Delete: | docker context rm {context-name} |
| Switch: | docker context use {context-name} |
| Export: | docker context export {context-name} Kubernetes: docker context export {context-name} --kubeconfig |
| Import (not for Kubernetes): | docker context import {context-name} {filename} Won't work for Kubernetes, instead, merge with existing ~/.kube/config file |
| Update: | docker context update {context-name} {--flag} {"text"} Flags: --default-stack-orchestrator --description --docker --kubernetes |