Docker(Q15206305) is a Open-source software for deploying containerized applications. It extends the hash code-based naming convention of Git to manage data versioning of Docker image files. Since this project utilizes Docker technologies extensively, it is necessary to provide documentation on Docker.
Before reading books on Docker, one can start reading some of the following articles:
- Six Docker Basics
- Docker ARG, ENV and .env - a Complete Guide
- Container Terminology Practical Introduction
- Dive Into Docker website
Some Utilities to run Docker
"See this docker container? I wish I could run another one just like it, but I'll be damned if I'm going to type all those command-line switches manually!"
Docker Installation Mysteries
There are two main packages for Docker installation,
containerd.io. If your network doesn't resolve certain repository site, you might not be able to install the software properly, and you might not be given the signals about why. In my case, I used a VPN service to pretend my computer is situated in the USA, and some problems are resolved. The particular case in point is here:
echo "[TASK 5] Install containerd runtime" apt update -qq >/dev/null 2>&1 apt install -qq -y containerd apt-transport-https >/dev/null 2>&1 mkdir /etc/containerd containerd config default > /etc/containerd/config.toml systemctl restart containerd systemctl enable containerd >/dev/null 2>&1
Install software from local repository
One way to avoid software download problems is to install a local instance of software repository. Relevant information can be found here: Set up Local Repository for Ubuntu.
Building Multi-Architecture Image
To build docker images for multiple architectures (ARM and AMD/Intel), please look at
- Multi-Platform Docker Builds
- Another reference is here: Mutli-architecture build and images
- Multi-Architecture Images posted 2019
Note that you must do the following command on the machine that tries to build images:
docker buildx create --name mybuilder docker buildx use mybuilder
--platform linux/amd64,linux/arm64 options will start to work.
Moreover, when building images from different networks, it is possible that certain packages are not available within your network region. Use VPN to get to another network and retry.
More Advance Reading
- Why Understanding User Space vs. Kernel Space matters?
- Why User Space matters?
- How User Space affects your application?
Docker Tutorial for NetworkEngineers
There is a youtube channel called: NetworkEvolution, which provides high quality video tutorials under the series of Docker Tutorial for Network Engineers. This series looks at Docker from a Network Engineer's viewpoint, which is a required mental model for understanind Docker.
- Lua error: Internal error: The interpreter exited with status 126.