What is Docker?
- Docker is a platform that allows one to develop and deploy applications in a isolated manner along with all of their dependencies.
Why Use Docker?
For a more extensive discussion of Docker’s advantages see Schenker’s Learn Docker – Fundamentals of Docker 18.x, specifically Chapter 1.
- Automation – Using containers significantly increases the amount of automation that can occur.
- Cost Savings – By using a thin layer as opposed to the thicker Virtual Machine model it allows more processes to be run on less hardware.
- Developer Productivity – Allows for the creation of reusable and shareable development environments.
- Deployability – It is easier and quicker to deploy applications to production when containerized.
- Security – Use isolation built into Docker containers to keep applications from affecting one another.
- Scalability – Using Kubernetes one can scale one’s applications massively.
Docker Commands
The Docker CLI can be used in a number of different ways, some of the more common commands are listed below. In general, a Docker command follows this form:
- begins with
docker
(the name of the CLI we are using), - a context (like
containers
), - a command (like
run
), and - can include specific processes to run in the container.
- The end result:
docker thecontext thecommand theprocess
Docker General Commands
Check Docker Version: | docker --version |
Details About Installed Version: | docker info |
View Docker CLI Help: Can also be run in a specific context/on a command like: | docker --help docker container ls -h |
Login to Docker Public Registry: | docker login |
Docker Container Commands
Start Container: – If we do not have a local copy of the image it will be pulled from the Docker repository. – Use --d to specify that this is a Linux daemon. Use --name to provide a friendly name for the container. | docker run name-of-container |
Gracefully Stop Container: – If we have provided a container with a friendly name we can use that instead of the hash. | docker container stop <hash> |
Force Container Shutdown: | docker container kill <hash> |
List All Containers: | docker container ls --all |
Show Only Running Containers: | docker container ls |
Give Container Friendly Name: | docker build -t name |
Run Container Interactively: | docker run --interactive --tty name-of-container bash |
Run Container Detached: – Example: docker run --detach --publish 80:80 --name nginx – One can use -P to map all ports. | docker run --detach --publish <port>:<port> --name <name-of-container> <name-of-image> |
Attach to Running Container: – To exit container without stopping press: Ctrl+P Ctrl+Q | docker container attach <nameofcontainer> |
Remove specified container from local machine: – Use -f or --force to force the removal. | docker container rm <hash> |
Inspect Container: | docker container inspect <name> |
View Container Logs: – Use --tail or -t before nameofcontainer to get only the tail of the logs (include number of lines to return)– Use --tail with --flow in above manner to continue getting newer log entries. | docker container logs <nameofcontainer> |
View Container Diff: – Shows a list of files added/modified/deleted since the base layer. | docker container diff <nameofcontainer> |
Docker Image Commands
List Downloaded: | docker image ls |
Associate Image with username/repo and tag: | docker tag image username/repository:tag |
Publish to the Repository: | docker push username/repository:tag |
Remove specified image from local machine: | docker image rm <image id> |
Persist Changes to a Container Into a New Image: | docker container commit <name-of-container> <name-of-image> |
View Changes Made to Build Image: | docker image history <name-of-container> |
Docker Virtual Machine Commands
List Virtual Machines: | docker-machine ls |
Connect to Docker Virtual Machine: | docker-machine ssh nameofvm |
Other Useful Docker Commands
Get the IP address assigned to a container: | docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' name-of-container |
Dockerfile
- See our dedicated page on Dockerfiles.
Docker Compose
- See our dedicated page on Docker Compose.
Minikube Commands
- Start:
minikube start
- If running on Windows you may need to specify if you are using Hyper-V:
minikube start --vm-driver=hyper --hyperv-virtual-switch="Name of Switch"
- If running on Windows you may need to specify if you are using Hyper-V:
Kubernetes Commands
- See our dedicated page on Kubernetes.
Tooling
- If you use Microsoft’s Visual Studio Code as your IDE you may want to look at their tutorial on Dev Containers which shows how to use Docker containers to setup isolated dev environments that integrate with VSC quickly.
Terminology
- See our Docker Terminology page.
Some Other Stuff…
- Start with Install Docker for Windows.
- Then Get Started with Docker for Windows.
- Docker for Windows runs in the taskbar notifications area.
- You’ll want to check “Expose daemon on tcp://localhost:2375 without TLS” if using PhpStorm.
- Allows one to configure auto startup, sharing local drives with containers (only needed for Linux containers), set resources used by Docker, configure network, proxies, configure registries (where images are hosted), Kubernetes, reset configuration, and etc.
- Using Docker with MariaDB.
Bibliography
- This page is based primarily on Docker Documentation and Gabriel N. Schenker’s Learn Docker 18.x.
- Official MariaDB Documentation. Installing and Using MariaDB via Docker.