linux-containers/presentation.org
2020-10-02 20:08:22 +02:00

77 KiB
Raw Blame History

Linux Containers

Welcome to Linux Containers

Hello and Welcome to this presentation about Linux Containers.

Who am I ?

Name
Elia el Lazkani
Blog
https://blog.lazkani.io
Gitea
Project42:@Elia
Gitlab
@elazkani
Github
@elazkani

Once upon a time

A little bit of history into container technology.

Pre-Linux Containers Era

2000
Jails' early implementation show up in FreeBSD Jails builds upon chroot. It changes the root directory of a set of processes. This will essentially create a safe environment, separate from the remainder of the system. This is great to hack code, like the FreeBSD base, safely without any risk to the remainder of the system.
2003
Linux VServer Linux VServer first release shows up as a patch to the Linux Kernel. VServer provides virtualization for the Linux Kernel. Even though this is not containerization, this is the earliest form of partitioning resources.
2005
Solaris Containers Solaris leveraged ZFS capabilities in their implementation of containers. They were able to offer features like snapshots, cloning and restoring.
2005
OpenVZ Open Virtuozzo finds itself on Linux as a patched kernel. OpenVZ is operating-system-level virtualization technology which allows running multiple isolated operating system instances on the same kernel. It called these instances containers.

Post-Linux Containers Era

2006-2007
The Generic Process Containers lands in Linux This was renamed thereafter to Control Groups popularily known as cgroups and landed in Linux version 2.6.24. cgroups are the first piece of the puzzle in Linux Containers. We will be talking about cgroups in detail later.
2008
Namespaces Even though namespaces have been around since 2002, Linux version 2.4.19, they saw a rapid development beginning 2006 and into 2008. namespaces are the other piece of the puzzle in Linux Containers. We will talk about namespaces in more details later.
2008
LXC LXC finally shows up! LXC is the first form of containers on the Linux kernel. LXC combined both cgroups and namespaces to provide isolated environments; containers. It is worth mentioning that LXC runs a full operating system containers from an image. In other words, LXC containers are meant to run more than one process.
2013
Docker Docker offered a full set of tools for working with containers. Making it easier than ever to work with them. They leveraged a lot of the concepts that we have mentioned previously. Docker containers are designed to only run the application process. Unlike LXC the PID 1 of a Docker container is excepted to be the application running in the contanier. We will be discussing this topic in more details later.

cgroups

What are cgroups ?

Let's find out ! Better yet, let's use the tools at our disposal to find out together…

Open a terminal and run the following command.

man 7 cgroups

This should open the man pages for cgroups.

Control groups, usually referred to as cgroups, are a Linux kernel fea ture which allow processes to be organized into hierarchical groups whose usage of various types of resources can then be limited and moni tored. The kernel's cgroup interface is provided through a pseudo- filesystem called cgroupfs. Grouping is implemented in the core cgroup kernel code, while resource tracking and limits are implemented in a set of per-resource-type subsystems (memory, CPU, and so on).

What this all mean ?

This can all be simplified by explaining it in a different way.

Essentially, you can think of cgroups as a way for the kernel to limit what you can use.

This gives us the ability to only give a container 1 CPU out of 4 available to the kernel. Or maybe, limit the memory allowed to 512MB to the container. This way the container cannot overload the resources of the system in case they run a fork-bomb, for example.

But, cgroups do not limit what we can "see".

namespaces

Namespaces to the rescue !

As we did before, let's check the man page for namespaces

man 7 namespaces

A namespace wraps a global system resource in an abstraction that makes it appear to the processes within the namespace that they have their own isolated instance of the global resource. Changes to the global resource are visible to other processes that are members of the name space, but are invisible to other processes. One use of namespaces is to implement containers.

Wooow ! That's more mumbo jumbo ?!

Is it really simple ?

Let's simplify this one as well.

You can think of namespaces as way for the kernel to limit what we see.

There are multiple namespaces, like the cgroup_namespaces which virtualizes the view of a process cgroup. In other words, inside the cgroup the process with PID 1 is not PID on the system.

The namespaces manual page lists them, you check them out for more details.

Linux Containers

We are finally here. Let's talk Linux Containers.

The first topic we need to know about is images.

What are container images ?

We talked before that Docker came in and offered tooling around containers.

One of those concepts that they used is layers.

First of all, an image is a file-system representation of a container. It is an on-disk, read-only, image. It sort of looks like your Linux filesystem.

Then, layers on top to add functionality. You might ask, what are these layers. We will see them in action.

Let's look at my system.

lsb_release -a
LSB Version:	n/a
Distributor ID:	ManjaroLinux
Description:	Manjaro Linux
Release:	20.1.1
Codename:	Mikah

As you can see, I am running Manjaro. Keep that in mind.

Let's take a look at the kernel running on this machine.

uname -a
Linux the-manj 5.8.6-1-MANJARO #1 SMP PREEMPT Thu Sep 3 14:19:36 UTC 2020 x86_64 GNU/Linux

So, it's kernel version 5.8.6. Remember this one as well.

neofetch

I would like to test a tool called neofetch. Why ?

  • First reason, I am not that creative.
  • Second, it's a nice tool, you'll see.

We can test neofetch

neofetch

Look at that, we don't have it installed. Not a big deal. We can download an image and test it inside.

Pulling an image

Let's download a docker image. I am using podman, an open source project that allows us to use containers.

NOTE: you might want to run these commands with sudo privileges.

podman pull ubuntu:20.04
9140108b62dc87d9b278bb0d4fd6a3e44c2959646eb966b86531306faa81b09b

Let's pull an Ubuntu image.

As you can see, we have pulled an image from the repositories online. We can see further information about the image.

podman images
REPOSITORY                TAG     IMAGE ID      CREATED     SIZE
docker.io/library/ubuntu  20.04   9140108b62dc  6 days ago  75.3 MB

Much better, now we can see that we have an Ubuntu image downloaded from /elia/linux-containers/src/commit/32c8a373fdf692d728341a7d01206175c2b3e078/docker.io.

What's a container then ?

A container is nothing but an instance of an image.

Let's list our containers.

podman ps -a
CONTAINER ID  IMAGE   COMMAND  CREATED  STATUS  PORTS   NAMES

We have none. Let's start one.

podman run -it ubuntu:20.04 uname -a
Linux ee76616f69d1 5.8.6-1-MANJARO #1 SMP PREEMPT Thu Sep 3 14:19:36 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

It's running the same kernel as our machine. are we really inside a container ?

podman run -it ubuntu:20.04 hostname -f
04b762cd25e3
hostname -f
the-manj

They have different hostnames.

Let's see if it's really Ubuntu.

podman run -it ubuntu:20.04 bash -c 'apt-get update && apt-get install -y vim'
0% [Working]
            
Get:1 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]

            
Get:2 http://security.ubuntu.com/ubuntu focal-security InRelease [107 kB]

0% [1 InRelease 14.2 kB/265 kB 5%] [2 InRelease 14.2 kB/107 kB 13%]
                                                                   
0% [1 InRelease 192 kB/265 kB 73%]
                                  
0% [Working]
            
Get:3 http://archive.ubuntu.com/ubuntu focal-updates InRelease [111 kB]

0% [3 InRelease 1153 B/111 kB 1%]
                                 
0% [Working]
            
Get:4 http://archive.ubuntu.com/ubuntu focal-backports InRelease [98.3 kB]

0% [4 InRelease 2602 B/98.3 kB 3%]
                                  
0% [Working]
0% [Working]
            
Get:5 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [367 kB]

0% [5 Packages 1239 B/367 kB 0%]
                                
0% [Working]
0% [5 Packages store 0 B]
                         
Get:6 http://security.ubuntu.com/ubuntu focal-security/multiverse amd64 Packages [1169 B]

0% [5 Packages store 0 B] [6 Packages 1169 B/1169 B 100%]
                                                         
0% [5 Packages store 0 B] [Waiting for headers]
                                               
Get:7 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages [112 kB]

0% [5 Packages store 0 B] [7 Packages 2761 B/112 kB 2%]
                                                       
0% [5 Packages store 0 B] [Waiting for headers]
                                               
Get:8 http://security.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [75.9 kB]

0% [5 Packages store 0 B] [8 Packages 13.7 kB/75.9 kB 18%]
                                                          
0% [5 Packages store 0 B]
                         
0% [Working]
0% [6 Packages store 0 B]
                         
0% [Working]
0% [7 Packages store 0 B]
                         
0% [Working]
0% [8 Packages store 0 B]
                         
0% [Working]
0% [Working]
            
Get:9 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages [1275 kB]

0% [9 Packages 34.5 kB/1275 kB 3%]
                                  
0% [Working]
0% [9 Packages store 0 B] [Waiting for headers]
0% [9 Packages store 0 B] [Waiting for headers]
                                               
Get:10 http://archive.ubuntu.com/ubuntu focal/restricted amd64 Packages [33.4 kB]

0% [9 Packages store 0 B] [10 Packages 8481 B/33.4 kB 25%]
                                                          
0% [9 Packages store 0 B]
                         
Get:11 http://archive.ubuntu.com/ubuntu focal/multiverse amd64 Packages [177 kB]

0% [9 Packages store 0 B] [11 Packages 11.4 kB/177 kB 6%]
                                                         
0% [9 Packages store 0 B]
                         
Get:12 http://archive.ubuntu.com/ubuntu focal/universe amd64 Packages [11.3 MB]

0% [9 Packages store 0 B] [12 Packages 0 B/11.3 MB 0%]
                                                      
0% [12 Packages 1578 kB/11.3 MB 14%]
0% [10 Packages store 0 B] [12 Packages 1578 kB/11.3 MB 14%]
                                                            
0% [12 Packages 1717 kB/11.3 MB 15%]
0% [11 Packages store 0 B] [12 Packages 1717 kB/11.3 MB 15%]
40% [11 Packages store 0 B] [12 Packages 1974 kB/11.3 MB 17%]
                                                             
41% [12 Packages 2005 kB/11.3 MB 18%]
                                     
91% [Waiting for headers]
                         
Get:13 http://archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 Packages [21.6 kB]

91% [13 Packages 21.6 kB/21.6 kB 100%]
91% [12 Packages store 0 B] [13 Packages 21.6 kB/21.6 kB 100%]
                                                              
91% [12 Packages store 0 B]
                           
Get:14 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [303 kB]

91% [12 Packages store 0 B] [14 Packages 41.5 kB/303 kB 14%]
                                                            
92% [12 Packages store 0 B]
                           
Get:15 http://archive.ubuntu.com/ubuntu focal-updates/restricted amd64 Packages [88.7 kB]

93% [12 Packages store 0 B] [15 Packages 39.2 kB/88.7 kB 44%]
                                                             
93% [12 Packages store 0 B] [Waiting for headers]
                                                 
Get:16 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [703 kB]

93% [12 Packages store 0 B] [16 Packages 22.6 kB/703 kB 3%]
                                                           
97% [12 Packages store 0 B]
                           
Get:17 http://archive.ubuntu.com/ubuntu focal-backports/universe amd64 Packages [4277 B]

97% [12 Packages store 0 B] [17 Packages 4277 B/4277 B 100%]
                                                            
97% [12 Packages store 0 B]
97% [12 Packages store 0 B]
                           
97% [Working]
97% [13 Packages store 0 B]
                           
98% [Working]
98% [14 Packages store 0 B]
                           
98% [Working]
98% [15 Packages store 0 B]
                           
99% [Working]
99% [16 Packages store 0 B]
                           
99% [Working]
99% [17 Packages store 0 B]
                           
100% [Working]
              
Fetched 15.1 MB in 2s (8963 kB/s)

Reading package lists... 0%

Reading package lists... 0%

Reading package lists... 0%

Reading package lists... 9%

Reading package lists... 9%

Reading package lists... 9%

Reading package lists... 9%

Reading package lists... 87%

Reading package lists... 87%

Reading package lists... 89%

Reading package lists... 89%

Reading package lists... 93%

Reading package lists... 93%

Reading package lists... 94%

Reading package lists... 94%

Reading package lists... 96%

Reading package lists... 96%

Reading package lists... 96%

Reading package lists... 96%

Reading package lists... 96%

Reading package lists... 96%

Reading package lists... 98%

Reading package lists... 98%

Reading package lists... 99%

Reading package lists... 99%

Reading package lists... 99%

Reading package lists... 99%

Reading package lists... 99%

Reading package lists... 99%

Reading package lists... Done

Reading package lists... 0%

Reading package lists... 0%

Reading package lists... 0%

Reading package lists... 9%

Reading package lists... 9%

Reading package lists... 9%

Reading package lists... 9%

Reading package lists... 87%

Reading package lists... 87%

Reading package lists... 89%

Reading package lists... 89%

Reading package lists... 93%

Reading package lists... 93%

Reading package lists... 94%

Reading package lists... 94%

Reading package lists... 96%

Reading package lists... 96%

Reading package lists... 96%

Reading package lists... 96%

Reading package lists... 96%

Reading package lists... 96%

Reading package lists... 98%

Reading package lists... 98%

Reading package lists... 99%

Reading package lists... 99%

Reading package lists... 99%

Reading package lists... 99%

Reading package lists... 99%

Reading package lists... 99%

Reading package lists... Done

Building dependency tree... 0%

Building dependency tree... 0%

Building dependency tree... 50%

Building dependency tree... 50%

Building dependency tree... 65%

Building dependency tree       

Reading state information... 0%

Reading state information... 0%

Reading state information... Done
The following additional packages will be installed:
  alsa-topology-conf alsa-ucm-conf file libasound2 libasound2-data
  libcanberra0 libexpat1 libgpm2 libltdl7 libmagic-mgc libmagic1 libmpdec2
  libogg0 libpython3.8 libpython3.8-minimal libpython3.8-stdlib libreadline8
  libsqlite3-0 libssl1.1 libtdb1 libvorbis0a libvorbisfile3 mime-support
  readline-common sound-theme-freedesktop vim-common vim-runtime xxd xz-utils
Suggested packages:
  libasound2-plugins alsa-utils libcanberra-gtk0 libcanberra-pulse gpm
  readline-doc ctags vim-doc vim-scripts
The following NEW packages will be installed:
  alsa-topology-conf alsa-ucm-conf file libasound2 libasound2-data
  libcanberra0 libexpat1 libgpm2 libltdl7 libmagic-mgc libmagic1 libmpdec2
  libogg0 libpython3.8 libpython3.8-minimal libpython3.8-stdlib libreadline8
  libsqlite3-0 libssl1.1 libtdb1 libvorbis0a libvorbisfile3 mime-support
  readline-common sound-theme-freedesktop vim vim-common vim-runtime xxd
  xz-utils
0 upgraded, 30 newly installed, 0 to remove and 0 not upgraded.
Need to get 14.9 MB of archives.
After this operation, 70.4 MB of additional disk space will be used.

0% [Working]
            
Get:1 http://archive.ubuntu.com/ubuntu focal/main amd64 libmagic-mgc amd64 1:5.38-4 [218 kB]

0% [1 libmagic-mgc 1165 B/218 kB 1%]
                                    
2% [Working]
            
Get:2 http://archive.ubuntu.com/ubuntu focal/main amd64 libmagic1 amd64 1:5.38-4 [75.9 kB]

2% [2 libmagic1 1166 B/75.9 kB 2%]
                                  
3% [Waiting for headers]
                        
Get:3 http://archive.ubuntu.com/ubuntu focal/main amd64 file amd64 1:5.38-4 [23.3 kB]

3% [3 file 23.3 kB/23.3 kB 100%]
                                
4% [Working]
            
Get:4 http://archive.ubuntu.com/ubuntu focal/main amd64 libexpat1 amd64 2.2.9-1build1 [73.3 kB]

4% [4 libexpat1 9264 B/73.3 kB 13%]
                                   
5% [Working]
            
Get:5 http://archive.ubuntu.com/ubuntu focal/main amd64 libmpdec2 amd64 2.4.2-3 [81.1 kB]

5% [5 libmpdec2 58.9 kB/81.1 kB 73%]
                                    
6% [Working]
            
Get:6 http://archive.ubuntu.com/ubuntu focal/main amd64 libssl1.1 amd64 1.1.1f-1ubuntu2 [1318 kB]

6% [6 libssl1.1 50.9 kB/1318 kB 4%]
                                   
14% [Working]
             
Get:7 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libpython3.8-minimal amd64 3.8.2-1ubuntu1.2 [705 kB]

14% [7 libpython3.8-minimal 43.1 kB/705 kB 6%]
                                              
18% [Working]
             
Get:8 http://archive.ubuntu.com/ubuntu focal/main amd64 mime-support all 3.64ubuntu1 [30.6 kB]

18% [8 mime-support 30.6 kB/30.6 kB 100%]
                                         
19% [Working]
             
Get:9 http://archive.ubuntu.com/ubuntu focal/main amd64 readline-common all 8.0-4 [53.5 kB]

19% [9 readline-common 28.3 kB/53.5 kB 53%]
                                           
20% [Working]
             
Get:10 http://archive.ubuntu.com/ubuntu focal/main amd64 libreadline8 amd64 8.0-4 [131 kB]

20% [10 libreadline8 32.6 kB/131 kB 25%]
                                        
21% [Waiting for headers]
                         
Get:11 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libsqlite3-0 amd64 3.31.1-4ubuntu0.2 [549 kB]

21% [11 libsqlite3-0 39.9 kB/549 kB 7%]
                                       
25% [Waiting for headers]
                         
Get:12 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libpython3.8-stdlib amd64 3.8.2-1ubuntu1.2 [1665 kB]

25% [12 libpython3.8-stdlib 15.1 kB/1665 kB 1%]
                                               
34% [Waiting for headers]
                         
Get:13 http://archive.ubuntu.com/ubuntu focal/main amd64 xxd amd64 2:8.1.2269-1ubuntu5 [50.1 kB]

35% [13 xxd 28.2 kB/50.1 kB 56%]
                                
35% [Working]
             
Get:14 http://archive.ubuntu.com/ubuntu focal/main amd64 vim-common all 2:8.1.2269-1ubuntu5 [85.1 kB]

35% [14 vim-common 9703 B/85.1 kB 11%]
                                      
36% [Working]
             
Get:15 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 xz-utils amd64 5.2.4-1ubuntu1 [82.5 kB]

37% [15 xz-utils 34.4 kB/82.5 kB 42%]
                                     
38% [Working]
             
Get:16 http://archive.ubuntu.com/ubuntu focal/main amd64 alsa-topology-conf all 1.2.2-1 [7364 B]

38% [16 alsa-topology-conf 7364 B/7364 B 100%]
                                              
38% [Working]
             
Get:17 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 alsa-ucm-conf all 1.2.2-1ubuntu0.4 [25.4 kB]

38% [17 alsa-ucm-conf 23.8 kB/25.4 kB 93%]
                                          
39% [Working]
             
Get:18 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libasound2-data all 1.2.2-2.1ubuntu2 [20.1 kB]

39% [18 libasound2-data 0 B/20.1 kB 0%]
                                       
40% [Working]
             
Get:19 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libasound2 amd64 1.2.2-2.1ubuntu2 [335 kB]

40% [19 libasound2 39.7 kB/335 kB 12%]
                                      
42% [Waiting for headers]
                         
Get:20 http://archive.ubuntu.com/ubuntu focal/main amd64 libltdl7 amd64 2.4.6-14 [38.5 kB]

43% [20 libltdl7 35.8 kB/38.5 kB 93%]
                                     
43% [Working]
             
Get:21 http://archive.ubuntu.com/ubuntu focal/main amd64 libtdb1 amd64 1.4.2-3build1 [44.1 kB]

43% [21 libtdb1 0 B/44.1 kB 0%]
                               
44% [Working]
             
Get:22 http://archive.ubuntu.com/ubuntu focal/main amd64 libogg0 amd64 1.3.4-0ubuntu1 [24.0 kB]

44% [22 libogg0 2615 B/24.0 kB 11%]
                                   
45% [Waiting for headers]
                         
Get:23 http://archive.ubuntu.com/ubuntu focal/main amd64 libvorbis0a amd64 1.3.6-2ubuntu1 [87.0 kB]

45% [23 libvorbis0a 50.4 kB/87.0 kB 58%]
                                        
46% [Waiting for headers]
                         
Get:24 http://archive.ubuntu.com/ubuntu focal/main amd64 libvorbisfile3 amd64 1.3.6-2ubuntu1 [16.1 kB]

46% [24 libvorbisfile3 16.1 kB/16.1 kB 100%]
                                            
47% [Waiting for headers]
                         
Get:25 http://archive.ubuntu.com/ubuntu focal/main amd64 sound-theme-freedesktop all 0.8-2ubuntu1 [384 kB]

47% [25 sound-theme-freedesktop 9853 B/384 kB 3%]
                                                 
50% [Waiting for headers]
                         
Get:26 http://archive.ubuntu.com/ubuntu focal/main amd64 libcanberra0 amd64 0.30-7ubuntu1 [38.1 kB]

50% [26 libcanberra0 30.2 kB/38.1 kB 79%]
                                         
50% [Waiting for headers]
                         
Get:27 http://archive.ubuntu.com/ubuntu focal/main amd64 libgpm2 amd64 1.20.7-5 [15.1 kB]

50% [27 libgpm2 15.1 kB/15.1 kB 100%]
                                     
51% [Waiting for headers]
                         
Get:28 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libpython3.8 amd64 3.8.2-1ubuntu1.2 [1620 kB]

51% [28 libpython3.8 41.9 kB/1620 kB 3%]
                                        
61% [Waiting for headers]
                         
Get:29 http://archive.ubuntu.com/ubuntu focal/main amd64 vim-runtime all 2:8.1.2269-1ubuntu5 [5873 kB]

61% [29 vim-runtime 11.6 kB/5873 kB 0%]
                                       
93% [Waiting for headers]
                         
Get:30 http://archive.ubuntu.com/ubuntu focal/main amd64 vim amd64 2:8.1.2269-1ubuntu5 [1238 kB]

93% [30 vim 18.9 kB/1238 kB 2%]
                               
100% [Working]
              
Fetched 14.9 MB in 1s (17.2 MB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libmagic-mgc.
(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 4121 files and directories currently installed.)
Preparing to unpack .../00-libmagic-mgc_1%3a5.38-4_amd64.deb ...
Unpacking libmagic-mgc (1:5.38-4) ...
Selecting previously unselected package libmagic1:amd64.
Preparing to unpack .../01-libmagic1_1%3a5.38-4_amd64.deb ...
Unpacking libmagic1:amd64 (1:5.38-4) ...
Selecting previously unselected package file.
Preparing to unpack .../02-file_1%3a5.38-4_amd64.deb ...
Unpacking file (1:5.38-4) ...
Selecting previously unselected package libexpat1:amd64.
Preparing to unpack .../03-libexpat1_2.2.9-1build1_amd64.deb ...
Unpacking libexpat1:amd64 (2.2.9-1build1) ...
Selecting previously unselected package libmpdec2:amd64.
Preparing to unpack .../04-libmpdec2_2.4.2-3_amd64.deb ...
Unpacking libmpdec2:amd64 (2.4.2-3) ...
Selecting previously unselected package libssl1.1:amd64.
Preparing to unpack .../05-libssl1.1_1.1.1f-1ubuntu2_amd64.deb ...
Unpacking libssl1.1:amd64 (1.1.1f-1ubuntu2) ...
Selecting previously unselected package libpython3.8-minimal:amd64.
Preparing to unpack .../06-libpython3.8-minimal_3.8.2-1ubuntu1.2_amd64.deb ...
Unpacking libpython3.8-minimal:amd64 (3.8.2-1ubuntu1.2) ...
Selecting previously unselected package mime-support.
Preparing to unpack .../07-mime-support_3.64ubuntu1_all.deb ...
Unpacking mime-support (3.64ubuntu1) ...
Selecting previously unselected package readline-common.
Preparing to unpack .../08-readline-common_8.0-4_all.deb ...
Unpacking readline-common (8.0-4) ...
Selecting previously unselected package libreadline8:amd64.
Preparing to unpack .../09-libreadline8_8.0-4_amd64.deb ...
Unpacking libreadline8:amd64 (8.0-4) ...
Selecting previously unselected package libsqlite3-0:amd64.
Preparing to unpack .../10-libsqlite3-0_3.31.1-4ubuntu0.2_amd64.deb ...
Unpacking libsqlite3-0:amd64 (3.31.1-4ubuntu0.2) ...
Selecting previously unselected package libpython3.8-stdlib:amd64.
Preparing to unpack .../11-libpython3.8-stdlib_3.8.2-1ubuntu1.2_amd64.deb ...
Unpacking libpython3.8-stdlib:amd64 (3.8.2-1ubuntu1.2) ...
Selecting previously unselected package xxd.
Preparing to unpack .../12-xxd_2%3a8.1.2269-1ubuntu5_amd64.deb ...
Unpacking xxd (2:8.1.2269-1ubuntu5) ...
Selecting previously unselected package vim-common.
Preparing to unpack .../13-vim-common_2%3a8.1.2269-1ubuntu5_all.deb ...
Unpacking vim-common (2:8.1.2269-1ubuntu5) ...
Selecting previously unselected package xz-utils.
Preparing to unpack .../14-xz-utils_5.2.4-1ubuntu1_amd64.deb ...
Unpacking xz-utils (5.2.4-1ubuntu1) ...
Selecting previously unselected package alsa-topology-conf.
Preparing to unpack .../15-alsa-topology-conf_1.2.2-1_all.deb ...
Unpacking alsa-topology-conf (1.2.2-1) ...
Selecting previously unselected package alsa-ucm-conf.
Preparing to unpack .../16-alsa-ucm-conf_1.2.2-1ubuntu0.4_all.deb ...
Unpacking alsa-ucm-conf (1.2.2-1ubuntu0.4) ...
Selecting previously unselected package libasound2-data.
Preparing to unpack .../17-libasound2-data_1.2.2-2.1ubuntu2_all.deb ...
Unpacking libasound2-data (1.2.2-2.1ubuntu2) ...
Selecting previously unselected package libasound2:amd64.
Preparing to unpack .../18-libasound2_1.2.2-2.1ubuntu2_amd64.deb ...
Unpacking libasound2:amd64 (1.2.2-2.1ubuntu2) ...
Selecting previously unselected package libltdl7:amd64.
Preparing to unpack .../19-libltdl7_2.4.6-14_amd64.deb ...
Unpacking libltdl7:amd64 (2.4.6-14) ...
Selecting previously unselected package libtdb1:amd64.
Preparing to unpack .../20-libtdb1_1.4.2-3build1_amd64.deb ...
Unpacking libtdb1:amd64 (1.4.2-3build1) ...
Selecting previously unselected package libogg0:amd64.
Preparing to unpack .../21-libogg0_1.3.4-0ubuntu1_amd64.deb ...
Unpacking libogg0:amd64 (1.3.4-0ubuntu1) ...
Selecting previously unselected package libvorbis0a:amd64.
Preparing to unpack .../22-libvorbis0a_1.3.6-2ubuntu1_amd64.deb ...
Unpacking libvorbis0a:amd64 (1.3.6-2ubuntu1) ...
Selecting previously unselected package libvorbisfile3:amd64.
Preparing to unpack .../23-libvorbisfile3_1.3.6-2ubuntu1_amd64.deb ...
Unpacking libvorbisfile3:amd64 (1.3.6-2ubuntu1) ...
Selecting previously unselected package sound-theme-freedesktop.
Preparing to unpack .../24-sound-theme-freedesktop_0.8-2ubuntu1_all.deb ...
Unpacking sound-theme-freedesktop (0.8-2ubuntu1) ...
Selecting previously unselected package libcanberra0:amd64.
Preparing to unpack .../25-libcanberra0_0.30-7ubuntu1_amd64.deb ...
Unpacking libcanberra0:amd64 (0.30-7ubuntu1) ...
Selecting previously unselected package libgpm2:amd64.
Preparing to unpack .../26-libgpm2_1.20.7-5_amd64.deb ...
Unpacking libgpm2:amd64 (1.20.7-5) ...
Selecting previously unselected package libpython3.8:amd64.
Preparing to unpack .../27-libpython3.8_3.8.2-1ubuntu1.2_amd64.deb ...
Unpacking libpython3.8:amd64 (3.8.2-1ubuntu1.2) ...
Selecting previously unselected package vim-runtime.
Preparing to unpack .../28-vim-runtime_2%3a8.1.2269-1ubuntu5_all.deb ...
Adding 'diversion of /usr/share/vim/vim81/doc/help.txt to /usr/share/vim/vim81/doc/help.txt.vim-tiny by vim-runtime'
Adding 'diversion of /usr/share/vim/vim81/doc/tags to /usr/share/vim/vim81/doc/tags.vim-tiny by vim-runtime'
Unpacking vim-runtime (2:8.1.2269-1ubuntu5) ...
Selecting previously unselected package vim.
Preparing to unpack .../29-vim_2%3a8.1.2269-1ubuntu5_amd64.deb ...
Unpacking vim (2:8.1.2269-1ubuntu5) ...
Setting up libexpat1:amd64 (2.2.9-1build1) ...
Setting up libgpm2:amd64 (1.20.7-5) ...
Setting up libogg0:amd64 (1.3.4-0ubuntu1) ...
Setting up mime-support (3.64ubuntu1) ...
Setting up alsa-ucm-conf (1.2.2-1ubuntu0.4) ...
Setting up libmagic-mgc (1:5.38-4) ...
Setting up libtdb1:amd64 (1.4.2-3build1) ...
Setting up libssl1.1:amd64 (1.1.1f-1ubuntu2) ...
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.30.0 /usr/local/share/perl/5.30.0 /usr/lib/x86_64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
debconf: falling back to frontend: Teletype
Setting up libsqlite3-0:amd64 (3.31.1-4ubuntu0.2) ...
Setting up libmagic1:amd64 (1:5.38-4) ...
Setting up file (1:5.38-4) ...
Setting up xxd (2:8.1.2269-1ubuntu5) ...
Setting up libasound2-data (1.2.2-2.1ubuntu2) ...
Setting up vim-common (2:8.1.2269-1ubuntu5) ...
Setting up xz-utils (5.2.4-1ubuntu1) ...
update-alternatives: using /usr/bin/xz to provide /usr/bin/lzma (lzma) in auto mode
update-alternatives: warning: skip creation of /usr/share/man/man1/lzma.1.gz because associated file /usr/share/man/man1/xz.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/unlzma.1.gz because associated file /usr/share/man/man1/unxz.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/lzcat.1.gz because associated file /usr/share/man/man1/xzcat.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/lzmore.1.gz because associated file /usr/share/man/man1/xzmore.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/lzless.1.gz because associated file /usr/share/man/man1/xzless.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/lzdiff.1.gz because associated file /usr/share/man/man1/xzdiff.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/lzcmp.1.gz because associated file /usr/share/man/man1/xzcmp.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/lzgrep.1.gz because associated file /usr/share/man/man1/xzgrep.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/lzegrep.1.gz because associated file /usr/share/man/man1/xzegrep.1.gz (of link group lzma) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/lzfgrep.1.gz because associated file /usr/share/man/man1/xzfgrep.1.gz (of link group lzma) doesn't exist
Setting up libvorbis0a:amd64 (1.3.6-2ubuntu1) ...
Setting up libltdl7:amd64 (2.4.6-14) ...
Setting up alsa-topology-conf (1.2.2-1) ...
Setting up sound-theme-freedesktop (0.8-2ubuntu1) ...
Setting up libasound2:amd64 (1.2.2-2.1ubuntu2) ...
Setting up libmpdec2:amd64 (2.4.2-3) ...
Setting up vim-runtime (2:8.1.2269-1ubuntu5) ...
Setting up readline-common (8.0-4) ...
Setting up libpython3.8-minimal:amd64 (3.8.2-1ubuntu1.2) ...
Setting up libreadline8:amd64 (8.0-4) ...
Setting up libvorbisfile3:amd64 (1.3.6-2ubuntu1) ...
Setting up libpython3.8-stdlib:amd64 (3.8.2-1ubuntu1.2) ...
Setting up libcanberra0:amd64 (0.30-7ubuntu1) ...
Setting up libpython3.8:amd64 (3.8.2-1ubuntu1.2) ...
Setting up vim (2:8.1.2269-1ubuntu5) ...
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vim (vim) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vimdiff (vimdiff) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rvim (rvim) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rview (rview) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vi (vi) in auto mode
update-alternatives: warning: skip creation of /usr/share/man/da/man1/vi.1.gz because associated file /usr/share/man/da/man1/vim.1.gz (of link group vi) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/de/man1/vi.1.gz because associated file /usr/share/man/de/man1/vim.1.gz (of link group vi) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/fr/man1/vi.1.gz because associated file /usr/share/man/fr/man1/vim.1.gz (of link group vi) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/it/man1/vi.1.gz because associated file /usr/share/man/it/man1/vim.1.gz (of link group vi) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/ja/man1/vi.1.gz because associated file /usr/share/man/ja/man1/vim.1.gz (of link group vi) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/pl/man1/vi.1.gz because associated file /usr/share/man/pl/man1/vim.1.gz (of link group vi) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/ru/man1/vi.1.gz because associated file /usr/share/man/ru/man1/vim.1.gz (of link group vi) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/vi.1.gz because associated file /usr/share/man/man1/vim.1.gz (of link group vi) doesn't exist
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/view (view) in auto mode
update-alternatives: warning: skip creation of /usr/share/man/da/man1/view.1.gz because associated file /usr/share/man/da/man1/vim.1.gz (of link group view) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/de/man1/view.1.gz because associated file /usr/share/man/de/man1/vim.1.gz (of link group view) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/fr/man1/view.1.gz because associated file /usr/share/man/fr/man1/vim.1.gz (of link group view) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/it/man1/view.1.gz because associated file /usr/share/man/it/man1/vim.1.gz (of link group view) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/ja/man1/view.1.gz because associated file /usr/share/man/ja/man1/vim.1.gz (of link group view) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/pl/man1/view.1.gz because associated file /usr/share/man/pl/man1/vim.1.gz (of link group view) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/ru/man1/view.1.gz because associated file /usr/share/man/ru/man1/vim.1.gz (of link group view) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/view.1.gz because associated file /usr/share/man/man1/vim.1.gz (of link group view) doesn't exist
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/ex (ex) in auto mode
update-alternatives: warning: skip creation of /usr/share/man/da/man1/ex.1.gz because associated file /usr/share/man/da/man1/vim.1.gz (of link group ex) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/de/man1/ex.1.gz because associated file /usr/share/man/de/man1/vim.1.gz (of link group ex) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/fr/man1/ex.1.gz because associated file /usr/share/man/fr/man1/vim.1.gz (of link group ex) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/it/man1/ex.1.gz because associated file /usr/share/man/it/man1/vim.1.gz (of link group ex) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/ja/man1/ex.1.gz because associated file /usr/share/man/ja/man1/vim.1.gz (of link group ex) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/pl/man1/ex.1.gz because associated file /usr/share/man/pl/man1/vim.1.gz (of link group ex) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/ru/man1/ex.1.gz because associated file /usr/share/man/ru/man1/vim.1.gz (of link group ex) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/ex.1.gz because associated file /usr/share/man/man1/vim.1.gz (of link group ex) doesn't exist
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in auto mode
update-alternatives: warning: skip creation of /usr/share/man/da/man1/editor.1.gz because associated file /usr/share/man/da/man1/vim.1.gz (of link group editor) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/de/man1/editor.1.gz because associated file /usr/share/man/de/man1/vim.1.gz (of link group editor) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/fr/man1/editor.1.gz because associated file /usr/share/man/fr/man1/vim.1.gz (of link group editor) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/it/man1/editor.1.gz because associated file /usr/share/man/it/man1/vim.1.gz (of link group editor) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/ja/man1/editor.1.gz because associated file /usr/share/man/ja/man1/vim.1.gz (of link group editor) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/pl/man1/editor.1.gz because associated file /usr/share/man/pl/man1/vim.1.gz (of link group editor) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/ru/man1/editor.1.gz because associated file /usr/share/man/ru/man1/vim.1.gz (of link group editor) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/editor.1.gz because associated file /usr/share/man/man1/vim.1.gz (of link group editor) doesn't exist
Processing triggers for libc-bin (2.31-0ubuntu9.1) ...

This should not work on my Manjaro. apt-get is not a thing here. Well, the output is a little bit all over the place but we seem to have installed vim.

Building a container image

Now that we saw what an image is and what a container is. We can explore a bit inside a container to see it more clearly.

So, what can we do with containers. We can use the layering system and the docker created tooling to create them and distribute them.

Let's go back to our neofetch example.

I want to get an Ubuntu image, then install neofetch on it.

First step, create a Dockerfile in your current directory. It should look like this.

FROM ubuntu:20.04

RUN apt-get update && \
    apt-get install -y neofetch

This file has 2 commands:

FROM
Designates the base image to use. This is the base image we will be building upon. In our case, we chose Ubuntu:20.04. You can find the images on multiple platforms. To mention a few, we have Dockerhub, Quay.io and a few others. By default, this downloads from Dockerhub.
RUN
Designates the commands to run. Pretty simple. We are running a couple of commands that should be very familiar to any debian-base OS user.

Now that we have a Dockerfile, it has to be named specifically that, case-sensitive.

We can build the container.

podman build -t presentation:20.04 .
STEP 1: FROM ubuntu:20.04
STEP 2: RUN apt-get update &&     apt-get install -y neofetch
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [107 kB]
Get:2 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]
Get:3 http://security.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [75.9 kB]
Get:4 http://archive.ubuntu.com/ubuntu focal-updates InRelease [111 kB]
Get:5 http://archive.ubuntu.com/ubuntu focal-backports InRelease [98.3 kB]
Get:6 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages [112 kB]
Get:7 http://security.ubuntu.com/ubuntu focal-security/multiverse amd64 Packages [1169 B]
Get:8 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [367 kB]
Get:9 http://archive.ubuntu.com/ubuntu focal/multiverse amd64 Packages [177 kB]
Get:10 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages [1275 kB]
Get:11 http://archive.ubuntu.com/ubuntu focal/universe amd64 Packages [11.3 MB]
Get:12 http://archive.ubuntu.com/ubuntu focal/restricted amd64 Packages [33.4 kB]
Get:13 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [703 kB]
Get:14 http://archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 Packages [21.6 kB]
Get:15 http://archive.ubuntu.com/ubuntu focal-updates/restricted amd64 Packages [88.7 kB]
Get:16 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [303 kB]
Get:17 http://archive.ubuntu.com/ubuntu focal-backports/universe amd64 Packages [4277 B]
Fetched 15.1 MB in 2s (8964 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  chafa dbus fontconfig-config fonts-dejavu-core fonts-droid-fallback
  fonts-noto-mono fonts-urw-base35 ghostscript gsfonts imagemagick-6-common
  krb5-locales libapparmor1 libavahi-client3 libavahi-common-data
  libavahi-common3 libbsd0 libchafa0 libcups2 libdbus-1-3 libexpat1
  libfftw3-double3 libfontconfig1 libfreetype6 libglib2.0-0 libglib2.0-data
  libgomp1 libgs9 libgs9-common libgssapi-krb5-2 libicu66 libidn11 libijs-0.35
  libjbig0 libjbig2dec0 libjpeg-turbo8 libjpeg8 libk5crypto3 libkeyutils1
  libkrb5-3 libkrb5support0 liblcms2-2 liblqr-1-0 libltdl7
  libmagickcore-6.q16-6 libmagickwand-6.q16-6 libopenjp2-7 libpaper-utils
  libpaper1 libpng16-16 libssl1.1 libtiff5 libwebp6 libwebpmux3 libx11-6
  libx11-data libxau6 libxcb1 libxdmcp6 libxext6 libxml2 poppler-data
  shared-mime-info tzdata ucf xdg-user-dirs
Suggested packages:
  default-dbus-session-bus | dbus-session-bus fonts-noto fonts-freefont-otf
  | fonts-freefont-ttf fonts-texgyre ghostscript-x cups-common libfftw3-bin
  libfftw3-dev krb5-doc krb5-user liblcms2-utils libmagickcore-6.q16-6-extra
  poppler-utils fonts-japanese-mincho | fonts-ipafont-mincho
  fonts-japanese-gothic | fonts-ipafont-gothic fonts-arphic-ukai
  fonts-arphic-uming fonts-nanum
The following NEW packages will be installed:
  chafa dbus fontconfig-config fonts-dejavu-core fonts-droid-fallback
  fonts-noto-mono fonts-urw-base35 ghostscript gsfonts imagemagick-6-common
  krb5-locales libapparmor1 libavahi-client3 libavahi-common-data
  libavahi-common3 libbsd0 libchafa0 libcups2 libdbus-1-3 libexpat1
  libfftw3-double3 libfontconfig1 libfreetype6 libglib2.0-0 libglib2.0-data
  libgomp1 libgs9 libgs9-common libgssapi-krb5-2 libicu66 libidn11 libijs-0.35
  libjbig0 libjbig2dec0 libjpeg-turbo8 libjpeg8 libk5crypto3 libkeyutils1
  libkrb5-3 libkrb5support0 liblcms2-2 liblqr-1-0 libltdl7
  libmagickcore-6.q16-6 libmagickwand-6.q16-6 libopenjp2-7 libpaper-utils
  libpaper1 libpng16-16 libssl1.1 libtiff5 libwebp6 libwebpmux3 libx11-6
  libx11-data libxau6 libxcb1 libxdmcp6 libxext6 libxml2 neofetch poppler-data
  shared-mime-info tzdata ucf xdg-user-dirs
0 upgraded, 66 newly installed, 0 to remove and 0 not upgraded.
Need to get 36.1 MB of archives.
After this operation, 136 MB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu focal/main amd64 fonts-droid-fallback all 1:6.0.1r16-1.1 [1805 kB]
Get:2 http://archive.ubuntu.com/ubuntu focal/main amd64 libgomp1 amd64 10-20200411-0ubuntu1 [101 kB]
Get:3 http://archive.ubuntu.com/ubuntu focal/main amd64 libfftw3-double3 amd64 3.3.8-2ubuntu1 [728 kB]
Get:4 http://archive.ubuntu.com/ubuntu focal/main amd64 libexpat1 amd64 2.2.9-1build1 [73.3 kB]
Get:5 http://archive.ubuntu.com/ubuntu focal/main amd64 libpng16-16 amd64 1.6.37-2 [179 kB]
Get:6 http://archive.ubuntu.com/ubuntu focal/main amd64 libfreetype6 amd64 2.10.1-2 [341 kB]
Get:7 http://archive.ubuntu.com/ubuntu focal/main amd64 ucf all 3.0038+nmu1 [51.6 kB]
Get:8 http://archive.ubuntu.com/ubuntu focal/main amd64 fonts-dejavu-core all 2.37-1 [1041 kB]
Get:9 http://archive.ubuntu.com/ubuntu focal/main amd64 fontconfig-config all 2.13.1-2ubuntu3 [28.8 kB]
Get:10 http://archive.ubuntu.com/ubuntu focal/main amd64 libfontconfig1 amd64 2.13.1-2ubuntu3 [114 kB]
Get:11 http://archive.ubuntu.com/ubuntu focal/main amd64 libjbig0 amd64 2.1-3.1build1 [26.7 kB]
Get:12 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libjpeg-turbo8 amd64 2.0.3-0ubuntu1.20.04.1 [117 kB]
Get:13 http://archive.ubuntu.com/ubuntu focal/main amd64 libjpeg8 amd64 8c-2ubuntu8 [2194 B]
Get:14 http://archive.ubuntu.com/ubuntu focal/main amd64 liblcms2-2 amd64 2.9-4 [140 kB]
Get:15 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libglib2.0-0 amd64 2.64.3-1~ubuntu20.04.1 [1284 kB]
Get:16 http://archive.ubuntu.com/ubuntu focal/universe amd64 liblqr-1-0 amd64 0.4.2-2.1 [27.7 kB]
Get:17 http://archive.ubuntu.com/ubuntu focal/main amd64 libltdl7 amd64 2.4.6-14 [38.5 kB]
Get:18 http://archive.ubuntu.com/ubuntu focal/main amd64 libwebp6 amd64 0.6.1-2 [185 kB]
Get:19 http://archive.ubuntu.com/ubuntu focal/main amd64 libtiff5 amd64 4.1.0+git191117-2build1 [161 kB]
Get:20 http://archive.ubuntu.com/ubuntu focal/main amd64 libwebpmux3 amd64 0.6.1-2 [19.6 kB]
Get:21 http://archive.ubuntu.com/ubuntu focal/main amd64 libxau6 amd64 1:1.0.9-0ubuntu1 [7488 B]
Get:22 http://archive.ubuntu.com/ubuntu focal/main amd64 libbsd0 amd64 0.10.0-1 [45.4 kB]
Get:23 http://archive.ubuntu.com/ubuntu focal/main amd64 libxdmcp6 amd64 1:1.1.3-0ubuntu1 [10.6 kB]
Get:24 http://archive.ubuntu.com/ubuntu focal/main amd64 libxcb1 amd64 1.14-2 [44.7 kB]
Get:25 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libx11-data all 2:1.6.9-2ubuntu1.1 [113 kB]
Get:26 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libx11-6 amd64 2:1.6.9-2ubuntu1.1 [574 kB]
Get:27 http://archive.ubuntu.com/ubuntu focal/main amd64 libxext6 amd64 2:1.3.4-0ubuntu1 [29.1 kB]
Get:28 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 tzdata all 2020a-0ubuntu0.20.04 [293 kB]
Get:29 http://archive.ubuntu.com/ubuntu focal/main amd64 libicu66 amd64 66.1-2ubuntu2 [8520 kB]
Get:30 http://archive.ubuntu.com/ubuntu focal/main amd64 libxml2 amd64 2.9.10+dfsg-5 [640 kB]
Get:31 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 imagemagick-6-common all 8:6.9.10.23+dfsg-2.1ubuntu11.1 [60.9 kB]
Get:32 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 libmagickcore-6.q16-6 amd64 8:6.9.10.23+dfsg-2.1ubuntu11.1 [1644 kB]
Get:33 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 libmagickwand-6.q16-6 amd64 8:6.9.10.23+dfsg-2.1ubuntu11.1 [302 kB]
Get:34 http://archive.ubuntu.com/ubuntu focal/main amd64 poppler-data all 0.4.9-2 [1475 kB]
Get:35 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libapparmor1 amd64 2.13.3-7ubuntu5.1 [34.1 kB]
Get:36 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libdbus-1-3 amd64 1.12.16-2ubuntu2.1 [179 kB]
Get:37 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 dbus amd64 1.12.16-2ubuntu2.1 [151 kB]
Get:38 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libglib2.0-data all 2.64.3-1~ubuntu20.04.1 [5752 B]
Get:39 http://archive.ubuntu.com/ubuntu focal/main amd64 libssl1.1 amd64 1.1.1f-1ubuntu2 [1318 kB]
Get:40 http://archive.ubuntu.com/ubuntu focal/main amd64 shared-mime-info amd64 1.15-1 [430 kB]
Get:41 http://archive.ubuntu.com/ubuntu focal/main amd64 xdg-user-dirs amd64 0.17-2ubuntu1 [48.3 kB]
Get:42 http://archive.ubuntu.com/ubuntu focal/main amd64 krb5-locales all 1.17-6ubuntu4 [11.4 kB]
Get:43 http://archive.ubuntu.com/ubuntu focal/main amd64 libkrb5support0 amd64 1.17-6ubuntu4 [30.9 kB]
Get:44 http://archive.ubuntu.com/ubuntu focal/main amd64 libk5crypto3 amd64 1.17-6ubuntu4 [80.2 kB]
Get:45 http://archive.ubuntu.com/ubuntu focal/main amd64 libkeyutils1 amd64 1.6-6ubuntu1 [10.2 kB]
Get:46 http://archive.ubuntu.com/ubuntu focal/main amd64 libkrb5-3 amd64 1.17-6ubuntu4 [330 kB]
Get:47 http://archive.ubuntu.com/ubuntu focal/main amd64 libgssapi-krb5-2 amd64 1.17-6ubuntu4 [121 kB]
Get:48 http://archive.ubuntu.com/ubuntu focal/universe amd64 libchafa0 amd64 1.2.1-1 [42.1 kB]
Get:49 http://archive.ubuntu.com/ubuntu focal/universe amd64 chafa amd64 1.2.1-1 [29.7 kB]
Get:50 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 fonts-noto-mono all 20200323-1build1~ubuntu20.04.1 [80.6 kB]
Get:51 http://archive.ubuntu.com/ubuntu focal/main amd64 fonts-urw-base35 all 20170801.1-3 [6333 kB]
Get:52 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libgs9-common all 9.50~dfsg-5ubuntu4.2 [681 kB]
Get:53 http://archive.ubuntu.com/ubuntu focal/main amd64 libavahi-common-data amd64 0.7-4ubuntu7 [21.4 kB]
Get:54 http://archive.ubuntu.com/ubuntu focal/main amd64 libavahi-common3 amd64 0.7-4ubuntu7 [21.7 kB]
Get:55 http://archive.ubuntu.com/ubuntu focal/main amd64 libavahi-client3 amd64 0.7-4ubuntu7 [25.5 kB]
Get:56 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libcups2 amd64 2.3.1-9ubuntu1.1 [233 kB]
Get:57 http://archive.ubuntu.com/ubuntu focal/main amd64 libidn11 amd64 1.33-2.2ubuntu2 [46.2 kB]
Get:58 http://archive.ubuntu.com/ubuntu focal/main amd64 libijs-0.35 amd64 0.35-15 [15.7 kB]
Get:59 http://archive.ubuntu.com/ubuntu focal/main amd64 libjbig2dec0 amd64 0.18-1ubuntu1 [60.0 kB]
Get:60 http://archive.ubuntu.com/ubuntu focal/main amd64 libopenjp2-7 amd64 2.3.1-1ubuntu4 [141 kB]
Get:61 http://archive.ubuntu.com/ubuntu focal/main amd64 libpaper1 amd64 1.1.28 [13.0 kB]
Get:62 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libgs9 amd64 9.50~dfsg-5ubuntu4.2 [2172 kB]
Get:63 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 ghostscript amd64 9.50~dfsg-5ubuntu4.2 [51.6 kB]
Get:64 http://archive.ubuntu.com/ubuntu focal/universe amd64 gsfonts all 1:8.11+urwcyr1.0.7~pre44-4.4 [3120 kB]
Get:65 http://archive.ubuntu.com/ubuntu focal/main amd64 libpaper-utils amd64 1.1.28 [8400 B]
Get:66 http://archive.ubuntu.com/ubuntu focal/universe amd64 neofetch all 7.0.0-1 [77.5 kB]
Fetched 36.1 MB in 2s (19.1 MB/s)
Selecting previously unselected package fonts-droid-fallback.
(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 4121 files and directories currently installed.)
Preparing to unpack .../00-fonts-droid-fallback_1%3a6.0.1r16-1.1_all.deb ...
Unpacking fonts-droid-fallback (1:6.0.1r16-1.1) ...
Selecting previously unselected package libgomp1:amd64.
Preparing to unpack .../01-libgomp1_10-20200411-0ubuntu1_amd64.deb ...
Unpacking libgomp1:amd64 (10-20200411-0ubuntu1) ...
Selecting previously unselected package libfftw3-double3:amd64.
Preparing to unpack .../02-libfftw3-double3_3.3.8-2ubuntu1_amd64.deb ...
Unpacking libfftw3-double3:amd64 (3.3.8-2ubuntu1) ...
Selecting previously unselected package libexpat1:amd64.
Preparing to unpack .../03-libexpat1_2.2.9-1build1_amd64.deb ...
Unpacking libexpat1:amd64 (2.2.9-1build1) ...
Selecting previously unselected package libpng16-16:amd64.
Preparing to unpack .../04-libpng16-16_1.6.37-2_amd64.deb ...
Unpacking libpng16-16:amd64 (1.6.37-2) ...
Selecting previously unselected package libfreetype6:amd64.
Preparing to unpack .../05-libfreetype6_2.10.1-2_amd64.deb ...
Unpacking libfreetype6:amd64 (2.10.1-2) ...
Selecting previously unselected package ucf.
Preparing to unpack .../06-ucf_3.0038+nmu1_all.deb ...
Moving old data out of the way
Unpacking ucf (3.0038+nmu1) ...
Selecting previously unselected package fonts-dejavu-core.
Preparing to unpack .../07-fonts-dejavu-core_2.37-1_all.deb ...
Unpacking fonts-dejavu-core (2.37-1) ...
Selecting previously unselected package fontconfig-config.
Preparing to unpack .../08-fontconfig-config_2.13.1-2ubuntu3_all.deb ...
Unpacking fontconfig-config (2.13.1-2ubuntu3) ...
Selecting previously unselected package libfontconfig1:amd64.
Preparing to unpack .../09-libfontconfig1_2.13.1-2ubuntu3_amd64.deb ...
Unpacking libfontconfig1:amd64 (2.13.1-2ubuntu3) ...
Selecting previously unselected package libjbig0:amd64.
Preparing to unpack .../10-libjbig0_2.1-3.1build1_amd64.deb ...
Unpacking libjbig0:amd64 (2.1-3.1build1) ...
Selecting previously unselected package libjpeg-turbo8:amd64.
Preparing to unpack .../11-libjpeg-turbo8_2.0.3-0ubuntu1.20.04.1_amd64.deb ...
Unpacking libjpeg-turbo8:amd64 (2.0.3-0ubuntu1.20.04.1) ...
Selecting previously unselected package libjpeg8:amd64.
Preparing to unpack .../12-libjpeg8_8c-2ubuntu8_amd64.deb ...
Unpacking libjpeg8:amd64 (8c-2ubuntu8) ...
Selecting previously unselected package liblcms2-2:amd64.
Preparing to unpack .../13-liblcms2-2_2.9-4_amd64.deb ...
Unpacking liblcms2-2:amd64 (2.9-4) ...
Selecting previously unselected package libglib2.0-0:amd64.
Preparing to unpack .../14-libglib2.0-0_2.64.3-1~ubuntu20.04.1_amd64.deb ...
Unpacking libglib2.0-0:amd64 (2.64.3-1~ubuntu20.04.1) ...
Selecting previously unselected package liblqr-1-0:amd64.
Preparing to unpack .../15-liblqr-1-0_0.4.2-2.1_amd64.deb ...
Unpacking liblqr-1-0:amd64 (0.4.2-2.1) ...
Selecting previously unselected package libltdl7:amd64.
Preparing to unpack .../16-libltdl7_2.4.6-14_amd64.deb ...
Unpacking libltdl7:amd64 (2.4.6-14) ...
Selecting previously unselected package libwebp6:amd64.
Preparing to unpack .../17-libwebp6_0.6.1-2_amd64.deb ...
Unpacking libwebp6:amd64 (0.6.1-2) ...
Selecting previously unselected package libtiff5:amd64.
Preparing to unpack .../18-libtiff5_4.1.0+git191117-2build1_amd64.deb ...
Unpacking libtiff5:amd64 (4.1.0+git191117-2build1) ...
Selecting previously unselected package libwebpmux3:amd64.
Preparing to unpack .../19-libwebpmux3_0.6.1-2_amd64.deb ...
Unpacking libwebpmux3:amd64 (0.6.1-2) ...
Selecting previously unselected package libxau6:amd64.
Preparing to unpack .../20-libxau6_1%3a1.0.9-0ubuntu1_amd64.deb ...
Unpacking libxau6:amd64 (1:1.0.9-0ubuntu1) ...
Selecting previously unselected package libbsd0:amd64.
Preparing to unpack .../21-libbsd0_0.10.0-1_amd64.deb ...
Unpacking libbsd0:amd64 (0.10.0-1) ...
Selecting previously unselected package libxdmcp6:amd64.
Preparing to unpack .../22-libxdmcp6_1%3a1.1.3-0ubuntu1_amd64.deb ...
Unpacking libxdmcp6:amd64 (1:1.1.3-0ubuntu1) ...
Selecting previously unselected package libxcb1:amd64.
Preparing to unpack .../23-libxcb1_1.14-2_amd64.deb ...
Unpacking libxcb1:amd64 (1.14-2) ...
Selecting previously unselected package libx11-data.
Preparing to unpack .../24-libx11-data_2%3a1.6.9-2ubuntu1.1_all.deb ...
Unpacking libx11-data (2:1.6.9-2ubuntu1.1) ...
Selecting previously unselected package libx11-6:amd64.
Preparing to unpack .../25-libx11-6_2%3a1.6.9-2ubuntu1.1_amd64.deb ...
Unpacking libx11-6:amd64 (2:1.6.9-2ubuntu1.1) ...
Selecting previously unselected package libxext6:amd64.
Preparing to unpack .../26-libxext6_2%3a1.3.4-0ubuntu1_amd64.deb ...
Unpacking libxext6:amd64 (2:1.3.4-0ubuntu1) ...
Selecting previously unselected package tzdata.
Preparing to unpack .../27-tzdata_2020a-0ubuntu0.20.04_all.deb ...
Unpacking tzdata (2020a-0ubuntu0.20.04) ...
Selecting previously unselected package libicu66:amd64.
Preparing to unpack .../28-libicu66_66.1-2ubuntu2_amd64.deb ...
Unpacking libicu66:amd64 (66.1-2ubuntu2) ...
Selecting previously unselected package libxml2:amd64.
Preparing to unpack .../29-libxml2_2.9.10+dfsg-5_amd64.deb ...
Unpacking libxml2:amd64 (2.9.10+dfsg-5) ...
Selecting previously unselected package imagemagick-6-common.
Preparing to unpack .../30-imagemagick-6-common_8%3a6.9.10.23+dfsg-2.1ubuntu11.1_all.deb ...
Unpacking imagemagick-6-common (8:6.9.10.23+dfsg-2.1ubuntu11.1) ...
Selecting previously unselected package libmagickcore-6.q16-6:amd64.
Preparing to unpack .../31-libmagickcore-6.q16-6_8%3a6.9.10.23+dfsg-2.1ubuntu11.1_amd64.deb ...
Unpacking libmagickcore-6.q16-6:amd64 (8:6.9.10.23+dfsg-2.1ubuntu11.1) ...
Selecting previously unselected package libmagickwand-6.q16-6:amd64.
Preparing to unpack .../32-libmagickwand-6.q16-6_8%3a6.9.10.23+dfsg-2.1ubuntu11.1_amd64.deb ...
Unpacking libmagickwand-6.q16-6:amd64 (8:6.9.10.23+dfsg-2.1ubuntu11.1) ...
Selecting previously unselected package poppler-data.
Preparing to unpack .../33-poppler-data_0.4.9-2_all.deb ...
Unpacking poppler-data (0.4.9-2) ...
Selecting previously unselected package libapparmor1:amd64.
Preparing to unpack .../34-libapparmor1_2.13.3-7ubuntu5.1_amd64.deb ...
Unpacking libapparmor1:amd64 (2.13.3-7ubuntu5.1) ...
Selecting previously unselected package libdbus-1-3:amd64.
Preparing to unpack .../35-libdbus-1-3_1.12.16-2ubuntu2.1_amd64.deb ...
Unpacking libdbus-1-3:amd64 (1.12.16-2ubuntu2.1) ...
Selecting previously unselected package dbus.
Preparing to unpack .../36-dbus_1.12.16-2ubuntu2.1_amd64.deb ...
Unpacking dbus (1.12.16-2ubuntu2.1) ...
Selecting previously unselected package libglib2.0-data.
Preparing to unpack .../37-libglib2.0-data_2.64.3-1~ubuntu20.04.1_all.deb ...
Unpacking libglib2.0-data (2.64.3-1~ubuntu20.04.1) ...
Selecting previously unselected package libssl1.1:amd64.
Preparing to unpack .../38-libssl1.1_1.1.1f-1ubuntu2_amd64.deb ...
Unpacking libssl1.1:amd64 (1.1.1f-1ubuntu2) ...
Selecting previously unselected package shared-mime-info.
Preparing to unpack .../39-shared-mime-info_1.15-1_amd64.deb ...
Unpacking shared-mime-info (1.15-1) ...
Selecting previously unselected package xdg-user-dirs.
Preparing to unpack .../40-xdg-user-dirs_0.17-2ubuntu1_amd64.deb ...
Unpacking xdg-user-dirs (0.17-2ubuntu1) ...
Selecting previously unselected package krb5-locales.
Preparing to unpack .../41-krb5-locales_1.17-6ubuntu4_all.deb ...
Unpacking krb5-locales (1.17-6ubuntu4) ...
Selecting previously unselected package libkrb5support0:amd64.
Preparing to unpack .../42-libkrb5support0_1.17-6ubuntu4_amd64.deb ...
Unpacking libkrb5support0:amd64 (1.17-6ubuntu4) ...
Selecting previously unselected package libk5crypto3:amd64.
Preparing to unpack .../43-libk5crypto3_1.17-6ubuntu4_amd64.deb ...
Unpacking libk5crypto3:amd64 (1.17-6ubuntu4) ...
Selecting previously unselected package libkeyutils1:amd64.
Preparing to unpack .../44-libkeyutils1_1.6-6ubuntu1_amd64.deb ...
Unpacking libkeyutils1:amd64 (1.6-6ubuntu1) ...
Selecting previously unselected package libkrb5-3:amd64.
Preparing to unpack .../45-libkrb5-3_1.17-6ubuntu4_amd64.deb ...
Unpacking libkrb5-3:amd64 (1.17-6ubuntu4) ...
Selecting previously unselected package libgssapi-krb5-2:amd64.
Preparing to unpack .../46-libgssapi-krb5-2_1.17-6ubuntu4_amd64.deb ...
Unpacking libgssapi-krb5-2:amd64 (1.17-6ubuntu4) ...
Selecting previously unselected package libchafa0:amd64.
Preparing to unpack .../47-libchafa0_1.2.1-1_amd64.deb ...
Unpacking libchafa0:amd64 (1.2.1-1) ...
Selecting previously unselected package chafa.
Preparing to unpack .../48-chafa_1.2.1-1_amd64.deb ...
Unpacking chafa (1.2.1-1) ...
Selecting previously unselected package fonts-noto-mono.
Preparing to unpack .../49-fonts-noto-mono_20200323-1build1~ubuntu20.04.1_all.deb ...
Unpacking fonts-noto-mono (20200323-1build1~ubuntu20.04.1) ...
Selecting previously unselected package fonts-urw-base35.
Preparing to unpack .../50-fonts-urw-base35_20170801.1-3_all.deb ...
Unpacking fonts-urw-base35 (20170801.1-3) ...
Selecting previously unselected package libgs9-common.
Preparing to unpack .../51-libgs9-common_9.50~dfsg-5ubuntu4.2_all.deb ...
Unpacking libgs9-common (9.50~dfsg-5ubuntu4.2) ...
Selecting previously unselected package libavahi-common-data:amd64.
Preparing to unpack .../52-libavahi-common-data_0.7-4ubuntu7_amd64.deb ...
Unpacking libavahi-common-data:amd64 (0.7-4ubuntu7) ...
Selecting previously unselected package libavahi-common3:amd64.
Preparing to unpack .../53-libavahi-common3_0.7-4ubuntu7_amd64.deb ...
Unpacking libavahi-common3:amd64 (0.7-4ubuntu7) ...
Selecting previously unselected package libavahi-client3:amd64.
Preparing to unpack .../54-libavahi-client3_0.7-4ubuntu7_amd64.deb ...
Unpacking libavahi-client3:amd64 (0.7-4ubuntu7) ...
Selecting previously unselected package libcups2:amd64.
Preparing to unpack .../55-libcups2_2.3.1-9ubuntu1.1_amd64.deb ...
Unpacking libcups2:amd64 (2.3.1-9ubuntu1.1) ...
Selecting previously unselected package libidn11:amd64.
Preparing to unpack .../56-libidn11_1.33-2.2ubuntu2_amd64.deb ...
Unpacking libidn11:amd64 (1.33-2.2ubuntu2) ...
Selecting previously unselected package libijs-0.35:amd64.
Preparing to unpack .../57-libijs-0.35_0.35-15_amd64.deb ...
Unpacking libijs-0.35:amd64 (0.35-15) ...
Selecting previously unselected package libjbig2dec0:amd64.
Preparing to unpack .../58-libjbig2dec0_0.18-1ubuntu1_amd64.deb ...
Unpacking libjbig2dec0:amd64 (0.18-1ubuntu1) ...
Selecting previously unselected package libopenjp2-7:amd64.
Preparing to unpack .../59-libopenjp2-7_2.3.1-1ubuntu4_amd64.deb ...
Unpacking libopenjp2-7:amd64 (2.3.1-1ubuntu4) ...
Selecting previously unselected package libpaper1:amd64.
Preparing to unpack .../60-libpaper1_1.1.28_amd64.deb ...
Unpacking libpaper1:amd64 (1.1.28) ...
Selecting previously unselected package libgs9:amd64.
Preparing to unpack .../61-libgs9_9.50~dfsg-5ubuntu4.2_amd64.deb ...
Unpacking libgs9:amd64 (9.50~dfsg-5ubuntu4.2) ...
Selecting previously unselected package ghostscript.
Preparing to unpack .../62-ghostscript_9.50~dfsg-5ubuntu4.2_amd64.deb ...
Unpacking ghostscript (9.50~dfsg-5ubuntu4.2) ...
Selecting previously unselected package gsfonts.
Preparing to unpack .../63-gsfonts_1%3a8.11+urwcyr1.0.7~pre44-4.4_all.deb ...
Unpacking gsfonts (1:8.11+urwcyr1.0.7~pre44-4.4) ...
Selecting previously unselected package libpaper-utils.
Preparing to unpack .../64-libpaper-utils_1.1.28_amd64.deb ...
Unpacking libpaper-utils (1.1.28) ...
Selecting previously unselected package neofetch.
Preparing to unpack .../65-neofetch_7.0.0-1_all.deb ...
Unpacking neofetch (7.0.0-1) ...
Setting up libexpat1:amd64 (2.2.9-1build1) ...
Setting up liblcms2-2:amd64 (2.9-4) ...
Setting up libxau6:amd64 (1:1.0.9-0ubuntu1) ...
Setting up imagemagick-6-common (8:6.9.10.23+dfsg-2.1ubuntu11.1) ...
Setting up libkeyutils1:amd64 (1.6-6ubuntu1) ...
Setting up libapparmor1:amd64 (2.13.3-7ubuntu5.1) ...
Setting up fonts-noto-mono (20200323-1build1~ubuntu20.04.1) ...
Setting up xdg-user-dirs (0.17-2ubuntu1) ...
Setting up libglib2.0-0:amd64 (2.64.3-1~ubuntu20.04.1) ...
No schema files found: doing nothing.
Setting up libssl1.1:amd64 (1.1.1f-1ubuntu2) ...
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.30.0 /usr/local/share/perl/5.30.0 /usr/lib/x86_64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
debconf: falling back to frontend: Teletype
Setting up libijs-0.35:amd64 (0.35-15) ...
Setting up krb5-locales (1.17-6ubuntu4) ...
Setting up fonts-urw-base35 (20170801.1-3) ...
Setting up libgomp1:amd64 (10-20200411-0ubuntu1) ...
Setting up libjbig0:amd64 (2.1-3.1build1) ...
Setting up neofetch (7.0.0-1) ...
Setting up poppler-data (0.4.9-2) ...
Setting up libkrb5support0:amd64 (1.17-6ubuntu4) ...
Setting up libchafa0:amd64 (1.2.1-1) ...
Setting up tzdata (2020a-0ubuntu0.20.04) ...
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.30.0 /usr/local/share/perl/5.30.0 /usr/lib/x86_64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
debconf: falling back to frontend: Teletype
Configuring tzdata
------------------

Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.

  1. Africa      4. Australia  7. Atlantic  10. Pacific  13. Etc
  2. America     5. Arctic     8. Europe    11. SystemV
  3. Antarctica  6. Asia       9. Indian    12. US
Geographic area: 
Use of uninitialized value $_[1] in join or string at /usr/share/perl5/Debconf/DbDriver/Stack.pm line 111.

Current default time zone: '/UTC'
Local time is now:      Fri Oct  2 17:28:44 UTC 2020.
Universal Time is now:  Fri Oct  2 17:28:44 UTC 2020.
Run 'dpkg-reconfigure tzdata' if you wish to change it.

Use of uninitialized value $val in substitution (s///) at /usr/share/perl5/Debconf/Format/822.pm line 83, <GEN6> line 4.
Use of uninitialized value $val in concatenation (.) or string at /usr/share/perl5/Debconf/Format/822.pm line 84, <GEN6> line 4.
Setting up libglib2.0-data (2.64.3-1~ubuntu20.04.1) ...
Setting up libx11-data (2:1.6.9-2ubuntu1.1) ...
Setting up libjbig2dec0:amd64 (0.18-1ubuntu1) ...
Setting up libidn11:amd64 (1.33-2.2ubuntu2) ...
Setting up gsfonts (1:8.11+urwcyr1.0.7~pre44-4.4) ...
Setting up libavahi-common-data:amd64 (0.7-4ubuntu7) ...
Setting up libdbus-1-3:amd64 (1.12.16-2ubuntu2.1) ...
Setting up dbus (1.12.16-2ubuntu2.1) ...
Setting up libpng16-16:amd64 (1.6.37-2) ...
Setting up libwebp6:amd64 (0.6.1-2) ...
Setting up fonts-dejavu-core (2.37-1) ...
Setting up ucf (3.0038+nmu1) ...
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.30.0 /usr/local/share/perl/5.30.0 /usr/lib/x86_64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
debconf: falling back to frontend: Teletype
Setting up libk5crypto3:amd64 (1.17-6ubuntu4) ...
Setting up libjpeg-turbo8:amd64 (2.0.3-0ubuntu1.20.04.1) ...
Setting up libltdl7:amd64 (2.4.6-14) ...
Setting up libfftw3-double3:amd64 (3.3.8-2ubuntu1) ...
Setting up liblqr-1-0:amd64 (0.4.2-2.1) ...
Setting up libopenjp2-7:amd64 (2.3.1-1ubuntu4) ...
Setting up libkrb5-3:amd64 (1.17-6ubuntu4) ...
Setting up fonts-droid-fallback (1:6.0.1r16-1.1) ...
Setting up libwebpmux3:amd64 (0.6.1-2) ...
Setting up libbsd0:amd64 (0.10.0-1) ...
Setting up libjpeg8:amd64 (8c-2ubuntu8) ...
Setting up libgs9-common (9.50~dfsg-5ubuntu4.2) ...
Setting up libpaper1:amd64 (1.1.28) ...
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.30.0 /usr/local/share/perl/5.30.0 /usr/lib/x86_64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
debconf: falling back to frontend: Teletype

Creating config file /etc/papersize with new version
Setting up libxdmcp6:amd64 (1:1.1.3-0ubuntu1) ...
Setting up libxcb1:amd64 (1.14-2) ...
Setting up fontconfig-config (2.13.1-2ubuntu3) ...
Setting up libicu66:amd64 (66.1-2ubuntu2) ...
Setting up libavahi-common3:amd64 (0.7-4ubuntu7) ...
Setting up libpaper-utils (1.1.28) ...
Setting up libfreetype6:amd64 (2.10.1-2) ...
Setting up libgssapi-krb5-2:amd64 (1.17-6ubuntu4) ...
Setting up libx11-6:amd64 (2:1.6.9-2ubuntu1.1) ...
Setting up libtiff5:amd64 (4.1.0+git191117-2build1) ...
Setting up libfontconfig1:amd64 (2.13.1-2ubuntu3) ...
Setting up libxml2:amd64 (2.9.10+dfsg-5) ...
Setting up libavahi-client3:amd64 (0.7-4ubuntu7) ...
Setting up libxext6:amd64 (2:1.3.4-0ubuntu1) ...
Setting up libmagickcore-6.q16-6:amd64 (8:6.9.10.23+dfsg-2.1ubuntu11.1) ...
Setting up shared-mime-info (1.15-1) ...
Setting up libcups2:amd64 (2.3.1-9ubuntu1.1) ...
Setting up libmagickwand-6.q16-6:amd64 (8:6.9.10.23+dfsg-2.1ubuntu11.1) ...
Setting up libgs9:amd64 (9.50~dfsg-5ubuntu4.2) ...
Setting up chafa (1.2.1-1) ...
Setting up ghostscript (9.50~dfsg-5ubuntu4.2) ...
Processing triggers for libc-bin (2.31-0ubuntu9.1) ...
STEP 3: COMMIT presentation:20.04
--> 460a4869c3e
460a4869c3e5bd60cb96ec7882a099651f9c9cce76e671426a00aa48a99ff622

NOTE: You might need sudo to run this command.

As you can see, we just successfully built the container. We also got a hash as a name for it.

If you were careful, I used the && command instead of using multiple RUN. You can use as many RUN commands ase you like. But be careful, each one of those commands creates a layer. The more layers you create, the more time they require to download*/*upload. It might not seem to be a lot of time to download a few extra layer on one system. But once we mention container orchestration platforms, it makes a big difference.

Let's examine the build a bit more and see what we got.

STEP 1: FROM ubuntu:20.04
STEP 2: RUN apt-get update &&     apt-get install -y neofetch

The first step was to download the base image so we could use it, then we added a layer which insatlled neofetch. If we list our images.

podman images

We can see that we have localhost/presentation. If we examine the ID, we can see that it is the same as the one given to us at the end of the build.

Running our container

Now that we created a brand-spanking-new image, we can run it.

podman images
REPOSITORY                TAG     IMAGE ID      CREATED        SIZE
localhost/presentation    20.04   460a4869c3e5  9 minutes ago  237 MB
docker.io/library/ubuntu  20.04   9140108b62dc  6 days ago     75.3 MB

First we list our images. Then we choose which one to run.

podman run -it presentation:20.04 neofetch
[?25l[?7l            .-/+oossssoo+/-.
        `:+ssssssssssssssssss+:`
      -+ssssssssssssssssssyyssss+-
    .ossssssssssssssssssdMMMNysssso.
   /ssssssssssshdmmNNmmyNMMMMhssssss/
  +ssssssssshmydMMMMMMMNddddyssssssss+
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/
.ssssssssdMMMNhsssssssssshNMMMdssssssss.
+sssshhhyNMMNyssssssssssssyNMMMysssssss+
ossyNMMMNyMMhsssssssssssssshmmmhssssssso
ossyNMMMNyMMhsssssssssssssshmmmhssssssso
+sssshhhyNMMNyssssssssssssyNMMMysssssss+
.ssssssssdMMMNhsssssssssshNMMMdssssssss.
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
  +sssssssssdmydMMMMMMMMddddyssssssss+
   /ssssssssssshdmNNNNmyNMMMMhssssss/
    .ossssssssssssssssssdMMMNysssso.
      -+sssssssssssssssssyyyssss+-
        `:+ssssssssssssssssss+:`
            .-/+oossssoo+/-.
root@bdc3a60e7393 
----------------- 
OS: Ubuntu 20.04.1 LTS focal x86_64 
Host: XPS 13 9350 
Kernel: 5.8.6-1-MANJARO 
Uptime: 1 day, 5 hours, 12 mins 
Packages: 158 (dpkg) 
Shell: bash 5.0.17 
Resolution: 1920x1080 
CPU: Intel i7-6560U (4) @ 3.200GHz 
Memory: 4019MiB / 15856MiB 

                        
                        







[?25h[?7h

neofetch is installed in that container, because the image has it.

We can also build an image based on something else, maybe Fedora ?

I looked in Dockerhub (Fedora) and found the following image.

FROM fedora:32

RUN dnf install -y neofetch

Container Orchestration Platforms Overview

Final section, buzzwords.

Who's all heard of one of these: Kubernetes, Kind, K3s, Nomad, Cattle, Rancher, OpenShift or Mesosphere ?

These are what called Container Orchestration platform.

The limitation of a container, per say, is that it is limited to the Kernel it is running on. But, what if you wanted to manage multiple machines and make them only run containers, what do you do ?

For virtualization technology, there are hypervisors. For containers, you have Container Orchestration platforms.

They are, simply, a way to manage containers across a cluster of nodes at the same time. A way to specify which container you want to run, and how. But you don't necessarily care where. As long as the cluster keeps a certain number of your containers alive, you're good to go !

In a nutshell, that's what all of these aim to do. Manage containers across more than one machine and balance across them.

They deploy their own DNS containers, their own API, their own everything. It is a lot more complexity on top of the system, but you are trying to do complex things.

Questions ?

Any questions ?