From 32c8a373fdf692d728341a7d01206175c2b3e078 Mon Sep 17 00:00:00 2001 From: Elia el Lazkani Date: Fri, 2 Oct 2020 20:08:22 +0200 Subject: [PATCH] Second commit --- Dockerfile.fedora | 3 + Dockerfile.ubuntu | 4 + presentation.org | 1142 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1149 insertions(+) create mode 100644 Dockerfile.fedora create mode 100644 Dockerfile.ubuntu create mode 100644 presentation.org diff --git a/Dockerfile.fedora b/Dockerfile.fedora new file mode 100644 index 0000000..3861402 --- /dev/null +++ b/Dockerfile.fedora @@ -0,0 +1,3 @@ +FROM fedora:32 + +RUN dnf install -y neofetch diff --git a/Dockerfile.ubuntu b/Dockerfile.ubuntu new file mode 100644 index 0000000..8a75e51 --- /dev/null +++ b/Dockerfile.ubuntu @@ -0,0 +1,4 @@ +FROM ubuntu:20.04 + +RUN apt-get update && \ + apt-get install -y neofetch diff --git a/presentation.org b/presentation.org new file mode 100644 index 0000000..7faee1c --- /dev/null +++ b/presentation.org @@ -0,0 +1,1142 @@ +#+TITLE: Linux Containers +#+AUTHOR: Elia el Lazkani + +* 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 :: [[https://gitea.project42.io/Elia][Project42:@Elia]] +- Gitlab :: [[https://gilab.com/elazkani][@elazkani]] +- Github :: [[https://github.com/elazkani][@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* + /[[https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/jails.html][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 + /[[http://linux-vserver.org/Welcome_to_Linux-VServer.org][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 + /[[https://openvz.org/][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 /[[https://lkml.org/lkml/2006/10/20/251][Generic Process Containers]]/ lands in Linux + This was renamed thereafter to /[[https://en.wikipedia.org/wiki/Cgroups][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 [[https://www.redhat.com/en/blog/history-containers][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. + +#+BEGIN_SRC bash +man 7 cgroups +#+END_SRC + +This should open the ~man~ pages for =cgroups=. + +#+BEGIN_QUOTE +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). +#+END_QUOTE + +* 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= + +#+BEGIN_SRC bash +man 7 namespaces +#+END_SRC + +#+BEGIN_QUOTE +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. +#+END_QUOTE + +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. + +#+BEGIN_SRC bash :results output +lsb_release -a +#+END_SRC + +#+RESULTS: +: 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. + +#+BEGIN_SRC bash :results output +uname -a +#+END_SRC + +#+RESULTS: +: 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= + +#+BEGIN_SRC bash :results output +neofetch +#+END_SRC + +#+RESULTS: + +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. + +#+BEGIN_SRC bash :dir /sudo:: :results output +podman pull ubuntu:20.04 +#+END_SRC + +#+RESULTS: +: 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. + +#+BEGIN_SRC bash :dir /sudo:: :results output +podman images +#+END_SRC + +#+RESULTS: +: 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 [[docker.io]]. + +* What's a container then ? + + +A container is nothing but an instance of an image. + +Let's list our containers. + +#+BEGIN_SRC bash :dir /sudo:: :results output +podman ps -a +#+END_SRC + +#+RESULTS: +: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES + +We have none. Let's start one. + +#+BEGIN_SRC bash :dir /sudo:: :results output +podman run -it ubuntu:20.04 uname -a +#+END_SRC + +#+RESULTS: +: 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 ? + +#+BEGIN_SRC bash :dir /sudo:: :results output +podman run -it ubuntu:20.04 hostname -f +#+END_SRC + +#+RESULTS: +: 04b762cd25e3 + +#+BEGIN_SRC bash +hostname -f +#+END_SRC + +#+RESULTS: +: the-manj + +They have different /hostnames/. + +Let's see if it's *really* ~Ubuntu~. + +#+BEGIN_SRC bash :dir /sudo:: :results output +podman run -it ubuntu:20.04 bash -c 'apt-get update && apt-get install -y vim' +#+END_SRC + +#+RESULTS: +#+begin_example + 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) ... +#+end_example + +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. + +#+BEGIN_SRC dockerfile :tangle Dockerfile.ubuntu +FROM ubuntu:20.04 + +RUN apt-get update && \ + apt-get install -y neofetch +#+END_SRC + +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. + +#+BEGIN_SRC bash :dir (concat "/sudo::" (expand-file-name ".")) :results output +podman build -t presentation:20.04 . +#+END_SRC + +#+RESULTS: +#+begin_example +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, line 4. +Use of uninitialized value $val in concatenation (.) or string at /usr/share/perl5/Debconf/Format/822.pm line 84, 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 +#+end_example + +_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. + +#+BEGIN_EXAMPLE +STEP 1: FROM ubuntu:20.04 +STEP 2: RUN apt-get update && apt-get install -y neofetch +#+END_EXAMPLE + +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*. + +#+BEGIN_SRC bash :dir /sudo:: :results output +podman images +#+END_SRC + +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. + +#+BEGIN_SRC bash :dir /sudo:: :results output +podman images +#+END_SRC + +#+RESULTS: +: 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. + +#+BEGIN_SRC bash :dir /sudo:: :results output +podman run -it presentation:20.04 neofetch +#+END_SRC + +#+RESULTS: +#+begin_example +[?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 +#+end_example + +=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 [[https://hub.docker.com/_/fedora/][Dockerhub (Fedora)]] and found the following image. + +#+BEGIN_SRC dockerfile :tangle Dockerfile.fedora +FROM fedora:32 + +RUN dnf install -y neofetch +#+END_SRC + +* 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 ?