Difference between revisions of "Docker"

From PKC
Jump to navigation Jump to search
Toyhouse_PKC>Admin
 
(26 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Since this project utilizes Docker technologies extensively, it is necessary to provide documentation on [[wikipedia:Docker (software)|Docker]].
__NOTOC__
{{WikiEntry|key=Docker|qCode=15206305}} 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 [[wikipedia:Docker (software)|Docker]]<ref>{{:Video/Learn Docker in 7 Easy Steps - Full Beginner's Tutorial}}</ref>.


Before reading books on Docker, one can start reading some of the following articles:
Before reading books on Docker, one can start reading some of the following articles:
Line 5: Line 6:
# [https://vsupalov.com/6-docker-basics/ Six Docker Basics]
# [https://vsupalov.com/6-docker-basics/ Six Docker Basics]
# [https://vsupalov.com/docker-arg-env-variable-guide/ Docker ARG, ENV and .env - a Complete Guide]
# [https://vsupalov.com/docker-arg-env-variable-guide/ Docker ARG, ENV and .env - a Complete Guide]
# [https://developers.redhat.com/blog/2018/02/22/container-terminology-practical-introduction/ Container Terminology Practical Introduction]
# [https://diveintodocker.com/?utm_source=ansibledocker&utm_medium=github&utm_campaign=readmetop 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!"
* https://github.com/lavie/runlike
==Docker Installation Mysteries==
There are two main packages for Docker installation, <code>docker.io</code> and <code>containerd.io</code>. 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:
<syntaxhighlight lang=BASH>
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
</syntaxhighlight>
===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: [[Ubuntu#Set%20up%20Local%20Repository|Set up Local Repository for Ubuntu]].
=Building Multi-Architecture Image=
To build docker images for multiple architectures (ARM and AMD/Intel), please look at
#[https://jitsu.com/blog/multi-platform-docker-builds Multi-Platform Docker Builds]
#Another reference is here: [https://www.docker.com/blog/multi-arch-build-and-images-the-simple-way/ Mutli-architecture build and images]
#[https://www.docker.com/blog/multi-arch-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
Then, the <code>--platform linux/amd64,linux/arm64</code> 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==
# [https://www.redhat.com/en/blog/architecting-containers-part-1-why-understanding-user-space-vs-kernel-space-matters Why Understanding User Space vs. Kernel Space matters?]
# [https://www.redhat.com/en/blog/architecting-containers-part-2-why-user-space-matters Why User Space matters?]
# [https://www.redhat.com/en/blog/architecting-containers-part-3-how-user-space-affects-your-application 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]].
<noinclude>


=References=
=References=
 
<references/>
{{refs|refs=
=Related Pages=
<ref name="docker-1.0-release-article">{{cite web | url = https://blog.docker.com/2014/06/its-here-docker-1-0/ | title = It's Here: Docker 1.0 | website = Docker | publisher = Docker, Inc. | last = Barbier | first = Julien | date = June 9, 2014 | access-date = September 30, 2019}}</ref>
[[Category:Container Technology]]
<ref name="docker-releases">{{cite web | url = https://docs.docker.com/engine/release-notes/ | title = Docker Engine release notes | website = docker.com | publisher = Docker, Inc. | access-date = 1 March 2021}}</ref>
[[Category:Docker]]
<ref name="source-code">{{cite web | url = https://github.com/docker/distribution | title = Docker source code | website = docker/distribution repo | via = [[GitHub]] | publisher = Docker, Inc. | date = October 12, 2015 | access-date = October 24, 2015}}</ref>
</noinclude>
<ref name="docker-for-mac">{{cite web | url = https://docs.docker.com/docker-for-mac/ | title = Get started with Docker for Mac | work = docker.com | publisher = Docker, Inc. | access-date = September 27, 2018}}</ref>
<ref name="docker-enterprise">{{cite web | url = https://blog.docker.com/2017/03/docker-enterprise-edition/ | title = Announcing Docker Enterprise Edition | first = Michael | last = Friis | date = March 2, 2017 | website = Docker Blog | publisher = Docker, Inc. | access-date = March 2, 2017}}</ref>
<ref name="SYS-CON Media">{{cite web | last = O'Gara | first = Maureen | date = July 26, 2013 | url = http://maureenogara.sys-con.com/node/2747331 | title = Ben Golub, Who Sold Gluster to Red Hat, Now Running dotCloud | publisher = SYS-CON Media | archive-url=https://web.archive.org/web/20190913100835/http://maureenogara.sys-con.com/node/2747331 | archive-date=2019-09-13 | url-status=dead}}</ref>
<ref name="Auto38-1">{{Cite web | url=https://docs.docker.com/engine/faq/#what-does-docker-technology-add-to-just-plain-lxc | title=Docker frequently asked questions (FAQ)| date=2019-03-02}}</ref>
<ref name="what-is-a-container">{{cite web |title=What is a Container? |url=https://www.docker.com/resources/what-container |website=docker.com |publisher=[[Docker, Inc.]] |access-date=13 May 2019}}</ref>
<ref name="os4u">{{cite web | url = http://opensourceforu.com/2017/02/docker-favourite-devops-world/ | title = Docker: A Favourite in the DevOps World | work = Open Source For U | date = February 8, 2017 | first = Vivek | last = Ratan | access-date = June 14, 2017}}</ref>
<ref name="docker-blog-2014-03">{{cite web | url = http://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer/ | title = Docker 0.9: Introducing execution drivers and libcontainer | date = March 10, 2014 | website = Docker Blog | publisher = Docker, Inc. | access-date = January 20, 2015}}</ref>
<ref name="Linux">{{cite web | last = Noyes | first = Katherine | date = August 1, 2013 | url = http://www.linux.com/news/enterprise/cloud-computing/731454-docker-a-shipping-container-for-linux-code | title = Docker: A 'Shipping Container' for Linux Code | website = [[Linux.com]] | access-date = August 9, 2013 | archive-url = https://web.archive.org/web/20130808043357/http://www.linux.com/news/enterprise/cloud-computing/731454-docker-a-shipping-container-for-linux-code/ | archive-date = August 8, 2013 | url-status = dead}}</ref>
<ref name="select-storage-driver">{{cite web | url = https://docs.docker.com/engine/userguide/storagedriver/selectadriver/ | title = Select a storage driver documentation | website = Docker documentation | archive-url = https://archive.today/20161206132431/https://docs.docker.com/engine/userguide/storagedriver/selectadriver/ | archive-date = December 6, 2016 | url-status = dead | access-date = December 7, 2016}}</ref>
<ref name="kernel-requirements">{{cite web | url = http://docker.readthedocs.org/en/v0.7.3/installation/kernel/ | title = Docker Documentation: Kernel Requirements | date = January 4, 2014 | website = docker.readthedocs.org | archive-url = https://web.archive.org/web/20140821065734/http://docker.readthedocs.org/en/v0.7.3/installation/kernel/ | archive-date = August 21, 2014 | access-date = August 20, 2014}}</ref>
<ref name="Chris K., Poweruser 2019"> {{Cite web | url = https://poweruser.blog/lightweight-windows-containers-using-docker-process-isolation-in-windows-10-62519be76c8c | title = Lightweight Windows containers: Using Docker process isolation in Windows 10 | access-date = 2 August 2019 | first = Chris | last = K. | date = 14 January 2019 | website = Poweruser | quote = more “lightweight” real containers (via so called process-isolation), where the containerized processes are running directly on the host system — all processes on the host and in the containers are sharing the same Windows kernel. This is similar to how containers on Linux work. | df = dmy-all }}</ref>
<ref name="datadog">{{cite web | title = 8 surprising facts about real Docker adoption | url = https://www.datadoghq.com/docker-adoption/ | website = Datadog | date = June 2018 | access-date = September 4, 2019}}</ref>
<ref name="kernel-keyrings">{{cite web | url = http://www.projectatomic.io/blog/2014/09/yet-another-reason-containers-don-t-contain-kernel-keyrings/ | title = Yet Another Reason Containers Don't Contain: Kernel Keyrings | first = Dan | last = Walsh | work = projectatomic.io | access-date = April 13, 2015 | date = September 15, 2014}}</ref>
<ref name="limit-resources">{{cite web | url = https://docs.docker.com/config/containers/resource_constraints/ | title = Limit a container's resources | website = Docker Documentation | access-date = March 7, 2018}}</ref>
<ref name="zdnet-7000030397">{{cite web | url = http://www.zdnet.com/docker-libcontainer-unifies-linux-container-powers-7000030397/ | title = Docker libcontainer unifies Linux container powers | first = Steven J. | last = Vaughan-Nichols | date = June 11, 2014 | website = [[ZDNet]] | access-date = July 30, 2014}}</ref>
<ref name="libcontainer">{{cite web | url = https://github.com/docker/libcontainer/blob/master/README.md | title = libcontainer – reference implementation for containers | website = docker/libcontainer repo | publisher = Docker, Inc. | via = [[GitHub]]] | access-date = July 30, 2014}}</ref>
<ref name="infoq-2013-03">{{cite web | last = Avram | first = Abel | date = March 27, 2013 | url = http://www.infoq.com/news/2013/03/Docker | title = Docker: Automated and Consistent Software Deployments | website = InfoQ | access-date = August 9, 2013}}</ref>
<ref name="docker-overview">{{cite web | url = https://docs.docker.com/engine/docker-overview/ | title = Docker overview | website = Docker Documentation | publisher = Docker, Inc. | access-date = February 26, 2018}}</ref>
<ref name="dockerd">{{cite web | url = https://docs.docker.com/engine/reference/commandline/dockerd | title = dockerd | website = Docker Documentation | publisher = Docker, Inc. | access-date = February 26, 2018}}</ref>
<ref name="cli-usage">{{cite web | url = https://docs.docker.com/engine/reference/commandline/cli/ | title = Use the Docker command line | website = Docker Documentation | publisher = Docker, Inc. | access-date = February 26, 2018}}</ref>
<ref name="digitalocean">{{cite web | url = https://www.digitalocean.com/community/tutorials/the-docker-ecosystem-an-introduction-to-common-components | title = The Docker Ecosystem: An Introduction to Common Components | website = www.digitalocean.com | access-date = February 26, 2018}}</ref>
<ref name="docker-registry">{{cite web | url = https://docs.docker.com/registry/introduction/ | title = About Registry | website = Docker Documentation | publisher = Docker, Inc. | access-date = February 26, 2018}}</ref>
<ref name="Auto38-2">{{Cite web | url=https://docs.docker.com/registry/notifications/ | title=Work with notifications| date=2019-03-02}}</ref>
<ref name="compose-overview">{{cite web | url = https://docs.docker.com/compose/overview/ | title = Overview of Docker Compose | website = Docker Documentation | publisher = Docker, Inc. | access-date = July 6, 2017}}</ref>
<ref name="compose-cli-ref">{{cite web | url = https://docs.docker.com/compose/reference/ | title = Compose command-line reference | website = Docker Documentation | publisher = Docker, Inc. | access-date = February 28, 2018}}</ref>
<ref name="codeship">{{cite news | url = https://blog.codeship.com/orchestrate-containers-for-development-with-docker-compose/ | title = Orchestrate Containers for Development with Docker Compose | date = May 27, 2015 | work = via @codeship | access-date = February 28, 2018}}</ref>
<ref name="compose-v3-ref">{{cite web | url = https://docs.docker.com/compose/compose-file/ | title = Compose file version 3 reference | website = Docker Documentation | publisher = Docker, Inc. | access-date = February 28, 2018}}</ref>
<ref name="release-0.0.1">{{cite web | url = https://github.com/docker/compose/releases/tag/0.0.1 | title = Release 0.0.1 | last = Firshman | first = Ben | date = December 21, 2013 | website = docker/compose | publisher = [[Docker, Inc.]] | via = [[GitHub]]}}</ref>
<ref name="release-1.0.0">{{cite web | url = https://github.com/docker/compose/releases/tag/1.0.0 | title = Release 1.0.0 | last = Prasad | first = Aanand | date = October 16, 2014 | website = docker/compose | publisher = [[Docker, Inc.]] | via = [[GitHub]]}}</ref>
<ref name="container-orchestration-tools">{{cite web | url = https://www.linux.com/news/8-open-source-CONTAINER-ORCHESTRATION-TOOLS-KNOW | title = 8 Container Orchestration Tools to Know | date = April 12, 2017 | website = [[Linux.com]] | access-date = July 6, 2017}}</ref>
<ref name="docker-swarm">{{cite web | url = https://docs.docker.com/swarm/ | title = Docker Swarm | website = Docker Documentation | publisher = Docker, Inc. | access-date = July 6, 2017}}</ref>
<ref name="Auto38-3">https://docs.docker.com/engine/reference/commandline/swarm/</ref>
<ref name="swarm-cli-ref">{{cite web | url = https://docs.docker.com/swarm/reference/ | title = Swarm command-line reference | website = Docker Documentation | publisher = Docker, Inc. | access-date = February 28, 2018}}</ref>
<ref name="docker-node">{{cite web | url = https://docs.docker.com/engine/reference/commandline/node/ | title = docker node | website = Docker Documentation | access-date = February 28, 2018}}</ref>
<ref name="aquasec">{{cite web | url = https://www.aquasec.com/wiki/display/containers/Docker+Swarm+101 | title = Docker Swarm 101 | website = aquasec.com | access-date = February 28, 2018}}</ref>
<ref name="raft">{{cite web | url = https://raft.github.io/ | title = Raft Consensus Algorithm | website = raft.github.io | access-date = February 28, 2018}}</ref>
<ref name="Auto38-4">{{Cite web |title=Au Revoir |url=https://www.docker.com/blog/au-revoir/ |date=28 Mar 2018 |access-date=23 Jan 2021 |archive-url=https://archive.is/gqGWd |archive-date=12 Jan 2021 |website=docker.com |last1=Hykes |first1=Solomon}}</ref>
<ref name="Auto38-5">{{cite web |title=About the dotCloud Platform |url=https://www.dotcloud.com/about.html |archive-url=https://web.archive.org/web/20140702231323/https://www.dotcloud.com/about.html |url-status=dead |archive-date=2 July 2014 |website=dotCloud |access-date=23 June 2019}}</ref>
<ref name="Auto38-6">{{Cite news |title=Founders Den: A Private Clubhouse For Entrepreneurs Opens In San Francisco |url=http://techcrunch.com/2011/01/10/founders-den/ |archive-url=https://archive.is/7buW0 |archive-date=29 Mar 2016 |date=10 Jan 2011 |last1=Seigler |first1=MG |work=[[TechCrunch]] |access-date=2 Feb 2021}}</ref>
<ref name="dotcloud">{{cite web | url = https://www.dotcloud.com/ | title = One home for all your apps | website = dotcloud.com | access-date = May 8, 2014 | url-status = dead | archive-url = https://web.archive.org/web/20140517031011/https://www.dotcloud.com/ | archive-date = May 17, 2014}}</ref>
<ref name="docker-announcement">{{cite web | title = The future of Linux Containers | url = https://www.youtube.com/watch?v=wW9CAH9nSLs | work = DotCloud Channel | via = [[YouTube]] | access-date = July 13, 2018}}</ref>
<ref name="infoq-2014-03">{{cite web | last = Swan | first = Chris | date = March 13, 2014 | url = http://www.infoq.com/news/2014/03/docker_0_9 | title = Docker drops LXC as default execution environment | website = InfoQ | access-date = January 20, 2015}}</ref>
<ref name="moby">https://collabnix.com/demystifying-the-relationship-between-moby-docker/</ref>
<ref name="techcrunch-2013-09">{{cite web | url = https://techcrunch.com/2013/09/19/dotcloud-pivots-and-wins-big-with-docker-the-cloud-service-now-part-of-red-hat-openshift/ | title = DotCloud Pivots And Wins Big With Docker, The Cloud Service Now Part Of Red Hat OpenShift | website = [[TechCrunch]] | date = September 19, 2013 | access-date = January 20, 2014}}</ref>
<ref name="docker-windows-server">{{cite web | url = http://www.zdnet.com/docker-container-support-coming-to-microsofts-next-windows-server-release-7000034708/ | title = Docker container support coming to Microsoft's next Windows Server release | date = October 15, 2014 | access-date = October 16, 2014 | first = Mary Jo | last = Foley | author-link= Mary Jo Foley | website = [[ZDNet]]}}</ref>
<ref name="docker-microsoft">{{cite web | url = https://weblogs.asp.net/scottgu/docker-and-microsoft-integrating-docker-with-windows-server-and-microsoft-azure | title = Docker and Microsoft: Integrating Docker with Windows Server and Microsoft Azure | first = Scott | last = Guthrie | website = ScottGu's Blog | publisher = Microsoft | date = October 15, 2014 | access-date = January 12, 2015}}</ref>
<ref name="amazon-ec2">{{cite web | first = Jeff | last = Barr | date = November 13, 2014 | url = https://aws.amazon.com/blogs/aws/cloud-container-management/ | title = Amazon EC2 Container Service (ECS) – Container Management for the AWS Cloud | work = Amazon Web Services Blog | access-date = April 29, 2017}}</ref>
<ref name="stratoscale">{{cite web | url = http://www.datacenterknowledge.com/archives/2014/11/10/stratoscale-raises-32m-supports-docker-containers-openstack/ | title = Stratoscale Raises $32M to Build Docker-Supporting OpenStack Clouds on Commodity Servers | date = November 10, 2014 | access-date = January 3, 2016 | first = John | last = Rath}}</ref>
<ref name="ibm-partnership">{{cite web | url = https://www-03.ibm.com/press/us/en/pressrelease/45597.wss | title = IBM and Docker Announce Strategic Partnership to Deliver Enterprise Applications in the Cloud and On Prem | date = December 4, 2014 | access-date = April 20, 2015 | publisher = [[IBM]]}}</ref>
<ref name="common-container-standard">{{cite web | url = https://techcrunch.com/2015/06/22/docker-coreos-google-microsoft-amazon-and-others-agree-to-develop-common-container-standard/#.pvelx1:NDMH | title = Docker, CoreOS, Google, Microsoft, Amazon And Others Come Together To Develop Common Container Standard | date = June 22, 2015 | access-date = August 8, 2015 | first = Frederic | last = Lardinois | website = [[TechCrunch]]}}</ref>
<ref name="open-container-project">{{cite web | url = http://www.cio-today.com/article/index.php?story_id=112003LU9CSG | title = Docker, Tech Giants Team on Open Container Project | date = June 22, 2015 | access-date = August 8, 2015 | first = Shirley | last = Siluk | website = cio-today.com}}</ref>
<ref name="InfoWorld-Windocks">{{cite web | url = https://www.infoworld.com/article/3051588/application-virtualization/windocks-does-what-docker-and-microsoft-cant-do.html | title = Windocks does what Docker and Microsoft can't do | date = April 4, 2016 | access-date = October 27, 2018 | first = Serdar | last = Yegulalp | website = [[InfoWorld]]}}</ref>
<ref name="gist-project-stats">{{cite web | url = https://gist.github.com/icecrime/18d72202f4569a0cab1ee60f7583425f | title = Docker – Updated project statistics | website = [[GitHub#Gist|GitHub Gist]] | access-date = August 22, 2016}}</ref>
<ref name="win10-insider-preview">{{cite web | first = Dona | last = Sarkar | url = https://blogs.windows.com/windowsexperience/2016/06/08/announcing-windows-10-insider-preview-build-14361/ | title = Announcing Windows 10 Insider Preview Build 14361 | website = Windows Blogs | publisher = [[Microsoft]] | date = June 8, 2016 | access-date = June 19, 2016}}</ref>
<ref name="linkedin-pulse">{{cite web | url = https://www.linkedin.com/pulse/docker-momentum-2016-analysis-michael-mullany | title = Docker Momentum Analysis 2016 | first = Michael | last = Mullany | website = [[LinkedIn Pulse]] | access-date = January 5, 2017}}</ref>
<ref name="Vaughan-Nichols">{{cite web |last1=Vaughan-Nichols |first1=Steven |title=Docker embraces Windows Subsystem for Linux 2 |url=https://www.zdnet.com/article/docker-embraces-windows-subsystem-for-linux-2/ |website=[[ZDNet]] |publisher=[[CBS Interactive]] |date=June 18, 2019}}</ref>
<ref name="WSL2-backport">{{Cite web|date=2020-08-20|title=WSL 2 Support is coming to Windows 10 Versions 1903 and 1909|url=https://devblogs.microsoft.com/commandline/wsl-2-support-is-coming-to-windows-10-versions-1903-and-1909/|access-date=2020-08-21|website=Windows Command Line|language=en-US}}</ref>
<ref name="docker-backport">{{Cite web|date=2020-08-20|title=Docker Desktop & WSL 2 - Backport Update|url=https://www.docker.com/blog/docker-desktop-wsl-2-backport-update/|access-date=2020-08-21|website=Docker Blog|language=en-US}}</ref>
}}

Latest revision as of 08:00, 23 May 2022


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[1].

Before reading books on Docker, one can start reading some of the following articles:

  1. Six Docker Basics
  2. Docker ARG, ENV and .env - a Complete Guide
  3. Container Terminology Practical Introduction
  4. 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, docker.io and 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

  1. Multi-Platform Docker Builds
  2. Another reference is here: Mutli-architecture build and images
  3. 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

Then, the --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

  1. Why Understanding User Space vs. Kernel Space matters?
  2. Why User Space matters?
  3. 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.


References

Related Pages