Einführung von Docker Engine in Linux von Grund auf neu

Einführung

Führen Sie die Docker Engine in ein handgemachtes Linux-Betriebssystem ein, das auf der Basis von Linux From Scratch erstellt wurde. Da Linux From Scratch ein System ist, das unter Verwendung von Quellcode von Grund auf neu erstellt wurde, bleibt keine andere Wahl, als Docker von Grund auf neu zu erstellen. Ziel ist es, Docker vor allem zu verstehen. Es ist nicht auf den praktischen Einsatz von Docker ausgerichtet.

Da der Text ein Linux-Betriebssystem verwendet, das auf Linux From Scratch basiert, ist die Wiederherstellung der Kernelquelle eine wichtige Aufgabe. Wenn Sie nicht beabsichtigen, Linux From Scratch zu verwenden, scheint dies nicht in Zusammenhang zu stehen. Nach dem Erstellen der Kernelquelle wird jedoch die Vorgehensweise zum Installieren der Docker-Binärdatei und zum Festlegen der Umgebung angezeigt. Ich denke, dass Docker in großen Linux-Distributionen gepackt ist, aber wenn Sie eine Distribution verwenden, die dies nicht tut, denke ich, dass das im Text beschriebene Verfahren hilfreich sein kann, da Sie die Docker-Binärdatei verwenden werden. Ich bin.

Annahme

Um Docker Engine aus dem Quellcode zu erstellen, benötigen Sie Docker selbst. Daher installieren wir zunächst die offiziell bereitgestellte Docker Engine-Binärdatei.

Wenn Sie der Linux From Scratch-Methode folgen, um beim Erstellen aus dem Quellcode zu bleiben, erstellen Sie mit Docker-Quellcode. Das Erstellen einer Betriebsumgebung für Docker Engine-Binärdateien kann jedoch eine schwierige Aufgabe sein. Sobald diese Umgebung erstellt ist, funktioniert Docker außerdem, sodass ersichtlich ist, dass der Zweck vorerst erreicht wurde. In diesem Artikel wird erläutert, wie Sie eine Umgebung mithilfe von Docker-Binärdateien erstellen.

Obwohl dies aus persönlichen Gründen nicht unbedingt erforderlich ist, müssen alle Schritte auf einem Linux From Scratch-System ausgeführt werden, das auf VMware Workstation basiert. Der Grund dafür ist einfach, dass es keinen freien Linux-Computer gab. Es enthält keine spezifischen Informationen zum virtuellen VMware-Image, sodass Sie es als reine Linux-Betriebssystemoperation betrachten können.

Der PC und jede Software verwenden:

Artikel Inhalt
Notebook Windows 7, 64bit, amd, Speicher 4GB (relativ schlecht)
VMware Workstation VMware Workstaion 10.0.7 build-2844087 (ziemlich alt)
Linux From Scratch NeuesteSVN-SystemversionSVN-20200528(linux-5.6.15、gcc-10.1.0、systemd-245), erstellt als virtuelles Image auf VMware. 64bit, Speicher 1.5GB
Beyond Linux From Scratch SVNoben-InstallierteverschiedeneWerkzeugeauf20200528(HauptwerkzeugewerdenimfolgendenVerfahrenerklärt)
Docker Neueste Docker Engine-Binärdatei: docker-19.03.10

Verfahren

1. Erstellen Sie den Linux-Kernel neu

1.1. Überblick über die Wiederherstellung des Kernels

Wenn Sie Linux From Scratch ohne nachzudenken erstellt haben, verfügen Sie wahrscheinlich nicht über genügend Linux-Kerneleinstellungen für Ihre Docker-Umgebung. Dies liegt daran, dass einige der Standardeinstellungen in der Kernelquelle keine integrierten Einstellungen oder Moduleinstellungen sind und viele für die Docker-Umgebung erforderlich sind.

Um den Linux-Kernel neu zu erstellen, müssen Sie das "Host-System" verwenden, auf dem Sie Linux From Scratch erneut erstellt haben. Dies bedeutet, dass Sie sich erneut vom "Host-System" aus anmelden und den Befehl "chroot" verwenden, um den Linux-Kernel in der Linux From Scratch-Umgebung neu zu erstellen.

Der Weg, um den Linux-Kernel neu zu erstellen, besteht sicherlich darin, das ursprüngliche "Host-System" zu verwenden, aber ich denke nicht, dass es erneut notwendig sein wird, zu prüfen, ob das "Host-System" tatsächlich einfach vorbereitet werden kann. Sie haben es vielleicht schon weggeworfen.

Dieses Thema ist ziemlich realistisch, aber ziemlich nervig. Vielleicht ist der schnellste Weg, Linux von Grund auf neu zu erstellen. Da der Schwerpunkt auf dem Erstellen einer Docker-Umgebung liegt, werden hier keine detaillierten Informationen zum Wiederherstellen des Kernels angezeigt. Im Folgenden wird das Einstellungsmenü für Kerneloptionen während der Neuerstellung erläutert.

1.2 Überprüfen Sie die erforderlichen Kerneloptionen

Der offizielle Docker-Github verfügt über ein Skript, das die erforderlichen Kerneleinstellungen überprüft. Es heißt check-config.sh. Laden Sie dies herunter und führen Sie es aus.

# wget https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh
# sh ./check-config.sh

Die Ausgabe sieht folgendermaßen aus:

warning: /proc/config.gz does not exist, searching other paths for kernel config ...
info: reading kernel config from /boot/config-5.6.15 ...

Generally Necessary:
- cgroup hierarchy: nonexistent??
    (see https://github.com/tianon/cgroupfs-mount)
- CONFIG_NAMESPACES: enabled
- CONFIG_NET_NS: enabled
- CONFIG_PID_NS: enabled
- CONFIG_IPC_NS: enabled
- CONFIG_UTS_NS: enabled
- CONFIG_CGROUPS: enabled
- CONFIG_CGROUP_CPUACCT: enabled
- CONFIG_CGROUP_DEVICE: missing
- CONFIG_CGROUP_FREEZER: enabled
- CONFIG_CGROUP_SCHED: enabled
- CONFIG_CPUSETS: enabled
- CONFIG_MEMCG: missing
- CONFIG_KEYS: enabled
- CONFIG_VETH: missing
- CONFIG_BRIDGE: missing
- CONFIG_BRIDGE_NETFILTER: missing
- CONFIG_NF_NAT_IPV4: missing
- CONFIG_IP_NF_FILTER: enabled
- CONFIG_IP_NF_TARGET_MASQUERADE: missing
- CONFIG_NETFILTER_XT_MATCH_ADDRTYPE: missing
- CONFIG_NETFILTER_XT_MATCH_CONNTRACK: enabled
- CONFIG_NETFILTER_XT_MATCH_IPVS: missing
- CONFIG_IP_NF_NAT: missing
- CONFIG_NF_NAT: enabled
- CONFIG_NF_NAT_NEEDED: missing
- CONFIG_POSIX_MQUEUE: enabled

Optional Features:
- CONFIG_USER_NS: missing
- CONFIG_SECCOMP: enabled

(Folgendes wird weggelassen)

Die hier gezeigten Kerneloptionen unter "Allgemein erforderlich" sind in der Docker-Umgebung erforderlich. Wenn es "aktiviert" ist, ist es derzeit aktiviert, und wenn es "fehlt", bedeutet dies, dass das entsprechende Kernelmodul nicht vorhanden ist. Übrigens, wenn Sie den Linux-Kernel in Linux From Scratch Build mit den Standardeinstellungen erstellen, sollten Sie viele "fehlende" sehen. Das Vorhandensein von "fehlt" ermöglicht Docker mit einigen Ausnahmen nicht zu arbeiten.

Die unter "Optionale Funktionen" aufgeführten Kerneloptionen sind buchstäblich optional und erstellen Einstellungen nach Bedarf. Lassen Sie es uns in Zukunft nach Bedarf bauen.

Beachten Sie, dass in der nächsten Zeile von "Allgemein erforderlich" oben die Hierarchie "-cgroup: nicht vorhanden ??" angezeigt wird. Dies bedeutet, dass die cgroup-Bereitstellung nicht vorhanden oder nicht ordnungsgemäß bereitgestellt ist. Wenn Sie danach cgroup mount-Einstellungen vornehmen, ändert sich diese Anzeige wie folgt. Wir werden fortfahren, um ein solches Ausgabeergebnis zu erhalten.

Generally Necessary:
- cgroup hierarchy: properly mounted [/sys/fs/cgroup]
1.3. Zurücksetzen der Kerneloptionen

Führt den Prozess der Neuerstellung des Linux-Kernels durch. Dies bedeutet, dass Sie den Linux-Kernel-Build (http://www.linuxfromscratch.org/lfs/view/systemd/chapter08/kernel.html) erneut im Linux From Scratch-Buch ausführen. Aktivieren Sie dann während des Vorgangs im Optionseinstellungsmenü, wenn make menuconfig ausgeführt wird, die unten gezeigten erforderlichen Optionen und führen Sie die Linux-Kernelinstallation durch.

Unten sind die Kernel-Einstellungen aufgeführt, die ich vorgenommen habe. Wenn Sie diese zumindest nicht festlegen, funktioniert die Docker-Umgebung nicht. Es kann aufgrund der Historie des Prozesses durch Ausprobieren zu Fehlern oder Mängeln kommen. Sobald ich es bemerke, werde ich Korrekturen vornehmen.

 <Kernel-Einstellungselemente>                                                       <Optionsname>
     General setup  --->
       [*] Control Group support  --->                                  CONFIG_CGROUPS
       [*]   Memory controller (NEW)                                    CONFIG_MEMCG
       [*]     Swap controller (NEW)                                    CONFIG_MEMCG_SWAP
       [*]       Swap controller enabled by default (NEW)               CONFIG_MEMCG_SWAP_ENABLED
       [*]   CPU controller  --->                                       
       [*]     Group scheduling for SCHED_OTHER                         CONFIG_CGROUP_SCHED
       [*]       CPU bandwidth provisioning for FAIR_GROUP_SCHED        CONFIG_CFS_BANDWIDTH
       [*]   IO controller (NEW)                                        CONFIG_BLK_CGROUP
       [*]   PIDs controller (NEW)                                      CONFIG_CGROUP_PIDS
       [*]   Device controller (NEW)                                    CONFIG_CGROUP_DEVICE
 [*] Networking support  --->                                           CONFIG_NET
       Networking options  --->
       [*] Network packet filtering framework (Netfilter)  --->         CONFIG_NETFILTER
       [*]   Advanced netfilter configuration                           CONFIG_NETFILTER_ADVANCED
       <M>     Bridged IP/ARP packets filtering (NEW)                   CONFIG_BRIDGE_NETFILTER
             Core Netfilter Configuration  --->
                 <M> LOG target support                                 CONFIG_NETFILTER_XT_TARGET_LOG
                 *** Xtables matches ***
                 <M>   "addrtype" address type match support            CONFIG_NETFILTER_XT_MATCH_ADDRTYPE
             IP: Netfilter Configuration  --->
                 <*>   Packet filtering                                 CONFIG_IP_NF_FILTER
                 <M>   iptables NAT support                             CONFIG_IP_NF_NAT
                 <M>     MASQUERADE target support (NEW)                CONFIG_IP_NF_TARGET_MASQUERADE
       <M> 802.1d Ethernet Bridging                                     CONFIG_BRIDGE
   Device Drivers  --->
     [*] Network device support  --->                                   
     [*]   Network core driver support                                  CONFIG_NET_CORE
         <*>     Virtual ethernet pair device                           CONFIG_VETH
   File systems  --->
     <*> Overlay filesystem support                                     CONFIG_OVERLAY_FS

(Linux-5.6.15 Kernel-Einstellungsmenü)

Die integrierte Einstellung "* "und die Modul-Build-Einstellung" M "interessieren mich nicht wirklich. Wenn möglich, wählen Sie "*" für diejenigen, die eingebaut werden können, und wählen Sie " M "für diejenigen, die dies nicht können.

1.4. Bestätigung der Kerneloptionen

Starten Sie das System basierend auf diesem neuen Linux-Kernel neu, nachdem Sie den Linux-Kernel erstellt haben. Versuchen Sie dann erneut, die obige check-config.sh auszuführen. Der größte Teil der Ausgabe sollte "aktiviert" sein, anstatt "zu fehlen".

2. Einführung von Werkzeugen

Die Systemanforderungen für die Bereitstellung von Docker-Binärdateien sind im Abschnitt Voraussetzungen der offiziellen Dokumentation Docker Engine von Binärdateien installieren beschrieben. Das Folgende ist eine einfache Übersetzung davon.

Sogar auf dem gerade von Linux From Scratch erstellten System sind bereits procps und xz installiert. Für 64-Bit und Kernel 3.10 und höher haben Sie keine andere Wahl, als es zu wählen. Alles was Sie hier brauchen ist Git und Iptables. Die cgroup-Hierarchie ist ein großes Thema, daher werde ich es später erklären.

2.1. Make-ca etc.

Bevor Sie mit der Installation von "git" und "iptables" beginnen, installieren Sie das wahrscheinlich erforderliche "make-ca". Die oben gezeigten Systemanforderungen sind möglicherweise zu offensichtlich und nicht spezifiziert. Für Linux From Scratch, das alles von Grund auf neu erstellt, gibt es keine Software, die Sie erhalten können, ohne sie selbst zu erstellen und zu installieren.

"P11-Kit" muss "make-ca" enthalten, und "wget" ist während der Installation von "make-ca" erforderlich. Da wget für etwas verwendet wird, werden wir es hier vorstellen. make-ca, p11-kit und wget werden alle im Abschnitt Beyond Linux From Scratch angezeigt. Installieren Sie das Gerät gemäß dem angegebenen Installationsverfahren.

2.2. git Git von Beyond Linux From Scratch Folgen Sie zur Installation der Seite git.html). Abhängige Pakete sollten [cURL] sein (http://www.linuxfromscratch.org/blfs/view/systemd/basicnet/curl.html). Die Version ist die neueste Version von "git-2.27.0" zum Zeitpunkt des Schreibens des Textes.

2.3. iptables Iptables von Beyond Linux From Scratch Installation gemäß der Seite von iptables.html). Abhängige Pakete sind nicht enthalten (da dies problematisch ist). Die Version ist die neueste "iptables-1.8.4" zum Zeitpunkt des Schreibens des Textes.

Die iptables-Konfigurationsdatei / etc / systemd / scripts / iptables verwendet die Einstellungen, die im Abschnitt Persönliche Firewall auf der obigen Seite angezeigt werden. Fügen Sie nach Bedarf Einstellungen hinzu.

3. Beziehen und installieren Sie Docker-Binärdateien

3.1. Erhalten und Installieren von Docker-Binärdateien

Auf der Seite Statische Binärdateien installieren (https://docs.docker.com/engine/install/binaries/) der Docker-Dokumentation befindet sich eine binäre Download-URL https://download.docker.com/linux/static/stable/ Es ist abgebildet. Da Unterverzeichnisse für jede Architektur vorbereitet werden, finden Sie hier [docker-19.03.10.tgz] unter x86_64 (https://download.docker.com/linux/static/stable/x86_64/docker-19.03). Download 10.tgz). Alle nachfolgenden Operationen werden als Root-Benutzer ausgeführt. (Referenz: Offizielles Dokument Statische Binärdateien installieren)

# wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.10.tgz

Dieser Tarball wird mit Binärmodulen in einem Verzeichnis namens "Docker" archiviert.

# tar tf docker-19.03.10.tgz
docker/
docker/ctr
docker/docker
docker/containerd
docker/docker-proxy
docker/runc
docker/docker-init
docker/containerd-shim
docker/dockerd

Daher installieren wir den Tarball nach dem Dekomprimieren (Dekomprimieren) wie folgt in / usr / bin. (Referenz: Offizielles Dokument Statische Binärdateien installieren)

# tar xf docker-19.03.10.tgz
# cp -p docker/* /usr/bin
3.2 Beziehen und Installieren des Docker-Dienstes für systemd

Der obige binäre Tarball enthält nicht die Dienstkonfigurationsdateien "docker.service", "docker.socket" für systemd. Holen Sie sie sich also vom offiziellen Github und verschieben Sie sie in das Verzeichnis "/ lib / systemd / system", das die systemd-Dienste enthält. (Referenz: Offizielles Dokument Control Docker mit systemd> Erstellen Sie die systemd-Einheitendateien manuell)

# wget https://raw.githubusercontent.com/moby/moby/master/contrib/init/systemd/docker.service
# wget https://raw.githubusercontent.com/moby/moby/master/contrib/init/systemd/docker.socket
# cp docker.{service,socket} /lib/systemd/system

4. Verschiedene Einstellungen

4.1. Generieren der Gruppe "Docker"

Erstellen Sie eine Gruppe "Docker". (Referenz: Offizielles Dokument Schritte nach der Installation für Linux)

# groupadd docker

4.2. Einstellungen in Bezug auf systemd

systemd 243 oder höher? Darüber hinaus scheint es, dass v2 als Standard für cgroup übernommen wird, und es scheint, dass verschiedene Funktionen von Docker nicht funktionieren, wenn es als v2 belassen wird. (Ich habe die Quelle der Informationen vergessen, die ich erhalten habe, daher werde ich sie später hinzufügen.)

Um dies zu lösen, fügen Sie "systemd.unified_cgroup_hierarchy = 0" als Startoption für "/ boot / grub / grub.cfg" hinzu.

systemd.unified_cgroup_hierarchy=0

Andere Websites haben eine Lösung zum Ausführen von "Updated-Grub" gezeigt, indem diese Beschreibung überall zu "GRUB_CMDLINE_LINUX_DEFAULT" hinzugefügt wurde. Dies gilt jedoch auch. Da Linux From Scratch "GRUB_CMDLINE_LINUX_DEFAULT" nicht verwendet, geben Sie es direkt in "grub.cfg" an.

Als konkretes Beispiel lautet die / boot / grub / grub.cfg des Autors wie folgt.

# cat /boot/grub/grub.cfg
# Begin /boot/grub/grub.cfg
set default=0
set timeout=5

insmod ext2
set root=(hd0,1)

menuentry "GNU/Linux, Linux 5.6.15-lfs-20200528-systemd" {
        linux   /vmlinuz-5.6.15-lfs-20200528-systemd root=/dev/sda3 ro net.ifnames=0 biosdevname=0 systemd.unified_cgroup_hierarchy=0
}

Ich habe systemd.unified_cgroup_hierarchy = 0 am Ende der linux-Zeile hinzugefügt. Übrigens, da ich "/ boot" verwende, das auf einer dedizierten Partition gemountet ist, sollte die obige "Linux" -Zeile als "linux / vmlinux ..." anstelle von "linux / boot / vmlinux ..." beschrieben werden. Ich bin.

Starten Sie das System nach der Korrektur neu.

4.3. Cgroup Mount

Stellen Sie den Mount für c group (Kontrollgruppe) ein. Fügen Sie der Datei / etc / fstab die folgende Beschreibung hinzu und hängen Sie sie ein. (Referenz: Docker's Github-Ausgabe Nr. 2683)

# echo "cgroup /sys/fs/cgroup cgroup defaults 0 0" >> /etc/fstab
# mount -a

Versuchen Sie zur Bestätigung Folgendes: Dies ist die erste Überprüfung, um festzustellen, ob das Kernelmodul generiert wurde.

# less /proc/cgroups
#subsys_name    hierarchy       num_cgroups     enabled
cpuset  4       1       1
cpu     3       1       1
cpuacct 3       1       1
blkio   5       1       1
memory  2       42      1
devices 6       29      1
freezer 7       1       1

Die Ausgabe sollte ungefähr so aussehen wie oben. Wichtig hierbei ist, dass es Zeilen für "Speicher" und "Geräte" gibt. Wenn Sie dies nicht sehen, bedeutet dies, dass die oben genannten Linux-Kerneloptionen nicht ordnungsgemäß erstellt wurden.

Dann machen Sie folgendes: Dies ist eine Überprüfung, um festzustellen, ob die cgroup ordnungsgemäß bereitgestellt ist.

# mount | grep ^cgroup
cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)

Sie können sehen, dass jede Gruppe (z. B. "CPU" und "Geräte") vorhanden ist und unter "/ sys / fs / cgroup" bereitgestellt wird.

5. Funktionsprüfung

5.1. Bestätigung des Starts des Docker-Daemons

Überprüfen Sie zunächst den Start des Docker-Dämons.

Es ist in Ordnung, den systemd-Dienst "docker.service" auszuführen, aber es ist bequemer, "dockerd" direkt auszuführen, da Sie direkt eine Fehlermeldung erhalten. Führen Sie den Befehl "dockerd" wie folgt aus. (Referenz: Offizielles Dokument Statische Binärdateien installieren)

# dockerd &

Wenn ein Fehler auftritt, wird in der letzten Zeile der Ausgabe eine Meldung ähnlich der folgenden angezeigt:

failed to start daemon: Error XXXXXXXXXX

Wenn es keine solche Fehlermeldung gibt, scheint es, dass es vorerst normal gestartet wurde.

5.2. Bestätigung durch "Docker Info"

Versuchen Sie, "Docker Info" auszuführen.

# docker info

Ich habe folgende Ausgabe erhalten:

Client:
 Debug Mode: false

Server:
 Containers: 5
  Running: 0
  Paused: 0
  Stopped: 5
 Images: 0
 Server Version: 19.03.10
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
 init version: fec3683
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 5.6.15
 Operating System: Linux From Scratch 20200528-systemd
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 1.432GiB
 Name: DockerOnLFS
 ID: PMIG:ONBA:YGH6:XMWF:GFGH:EW66:2GBR:A2E4:4D5X:TBWT:M2BL:KRVE
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
 Product License: Community Engine

WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support

5.3. Bestätigung durch "Docker Run Hello-World"

Versuchen Sie, "Docker Run Hello-World" auszuführen. (Referenz: Offizielles Dokument Statische Binärdateien installieren)

# docker run hello-world

Ich habe folgende Ausgabe erhalten:

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
Status: Downloaded newer image for hello-world:latest
INFO[2020-06-08T10:56:23.077433898+09:00] shim containerd-shim started
                  address="/containerd-shim/moby/fa9173d0b26b33c1075296abd578df5c0c088a61f5683214d60bbf5d1f12fa47/shim.sock" debug=false pid=504

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

INFO[2020-06-08T10:56:24.864625786+09:00] shim reaped
                                   id=fa9173d0b26b33c1075296abd578df5c0c088a61f5683214d60bbf5d1f12fa47
INFO[2020-06-08T10:56:24.874963601+09:00] ignoring event
                                module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"

Danach habe ich versucht, die offizielle Dokumentation Tutorial Teil 2 auszuführen. Es funktioniert gut.

6. Systemeinstellungen

6.1. Den Docker-Prozess beenden

Beenden Sie den Dockerd-Prozess, den Sie in den obigen Schritten ausgeführt haben.

# kill -SIGKILL $(pidof dockerd)
6.2 Starten Sie "docker.service"

Starten Sie "docker.service". (Referenz: Offizielles Dokument Docker mit System steuern> Docker-Daemon starten)

# systemctl start docker.service

Wenn es keine Fehler gibt, sollte es keine Fehler und keine Ausgabe geben.

Führen Sie bei Bedarf systemctl enable docker.service aus, damit dieser Dienst beim Systemstart automatisch gestartet wird. (Referenz: Offizielles Dokument [Schritte nach der Installation für Linux> Docker so konfigurieren, dass es beim Booten startet](https://docs.docker.com/engine/install/linux-postinstall/#configure-docker-to-start-on- boot)))

# systemctl enable docker.service
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.

Überprüfen Sie den Status des Dienstes für alle Fälle.

# systemctl status docker.service
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset:
 enabled)
     Active: active (running) since Mon 2020-06-08 11:27:52 JST; 9min ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 269 (dockerd)
      Tasks: 27 (limit: 1755)
     Memory: 98.5M
     CGroup: /system.slice/docker.service
             tq269 /usr/bin/dockerd -H fd://
             mq284 containerd --config /var/run/docker/containerd/containerd.toml --log-level info

08. Juni 11:27:50 DockerOnLFS dockerd[269]: time="2020-06-08T11:27:50.415279942+09:00" level=warning msg="Your kernel does not support cgroup blkio throttle.write_bps_device"
08. Juni 11:27:50 DockerOnLFS dockerd[269]: time="2020-06-08T11:27:50.415333378+09:00" level=warning msg="Your kernel does not support cgroup blkio throttle.read_iops_device"
08. Juni 11:27:50 DockerOnLFS dockerd[269]: time="2020-06-08T11:27:50.415385780+09:00" level=warning msg="Your kernel does not support cgroup blkio throttle.write_iops_device"
08. Juni 11:27:50 DockerOnLFS dockerd[269]: time="2020-06-08T11:27:50.438407022+09:00" level=info msg="Loading containers: start."
08. Juni 11:27:51 DockerOnLFS dockerd[269]: time="2020-06-08T11:27:51.864165833+09:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
08. Juni 11:27:51 DockerOnLFS dockerd[269]: time="2020-06-08T11:27:51.957543814+09:00" level=info msg="Loading containers: done."
08. Juni 11:27:52 DockerOnLFS dockerd[269]: time="2020-06-08T11:27:52.591932252+09:00" level=info msg="Docker daemon" commit=9424aea graphdriver(s)=overlay2 version=19.03.10
08. Juni 11:27:52 DockerOnLFS dockerd[269]: time="2020-06-08T11:27:52.663437436+09:00" level=info msg="Daemon has completed initialization"
08. Juni 11:27:52 DockerOnLFS systemd[1]: Started Docker Application Container Engine.
08. Juni 11:27:52 DockerOnLFS dockerd[269]: time="2020-06-08T11:27:52.950638271+09:00" level=info msg="API listen on /run/docker.sock"

DockerOnLFS ist übrigens der Hostname.

Außerdem werden Warnmeldungen wie "Ihr Kernel unterstützt cgroup blkio throttle.write_bps_device" nicht angezeigt, da das entsprechende Kernelmodul nicht erstellt wurde. Im Moment verstehe ich nicht, dass Docker funktioniert und was diese Module sind, also werde ich es in Zukunft verstehen und es vorerst einfach ignorieren.

Das ist alles für den Text.

Recommended Posts

Einführung von Docker Engine in Linux von Grund auf neu
Einführung von Amplify in Amazon Linux 2 AMI
[Linux] Übergang vom Einschalten zum PC-Start
So bedienen Sie Linux von der Konsole aus
Einführung eines japanischen Eingabesystems in Serene Linux
[Amazon Linux] Wechsel von der Python 2-Serie zur Python 3-Serie
Wiedereinführung in Docker
Deep Learning von Grund auf neu ① Kapitel 6 "Lerntechniken"
Summe von 1 bis 10
So bedienen Sie Linux von außen Vorgehensweise
Wie man gut mit Linux-Befehlen aus Python umgeht
[Linux] Einführung in Linux
Es kann keine Verbindung zu MySQL über die Docker-Umgebung (Debian) hergestellt werden.
Sichern Sie mit rsync von QNAP auf Linux
So "cache-fähiger" Zugriff auf FPGA-Speicher von Linux
Kopieren von Dateien direkt von Amazon EC2 (Amazon Linux) nach S3
Einführung einer Desktop-Umgebung in Arch Linux (LightDM + Xfce4)
Ich habe versucht, Dropout zu erklären
Lassen Sie Code Day68 von vorne beginnen "709. In Kleinbuchstaben"
[Amazon Linux 2] Wechsel von der Authentifizierung mit öffentlichem Schlüssel zur Kennwortauthentifizierung
ODBC-Zugriff auf SQL Server von Linux mit Python
Einführung in WebPay von Flask
Deep Learning von Grund auf neu
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
Führen Sie serverspec in Linux ein
Übergang von WSL1 zu WSL2
Django Memo # 1 von Grund auf neu
Linux-Befehle zum Erinnern
Von der Bearbeitung bis zur Ausführung
Eine Geschichte über das Erstellen eines UNIX / Linux-kompatiblen Betriebssystems von Grund auf neu
[Linux] Kopieren Sie Daten mit einem Shell-Skript von Linux nach Windows
[Linux] Komprimieren Sie Ordner und übertragen Sie Dateien von Remote zu Local
Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"
Einführung in Kaggles Docker Image unter Windows zum Erstellen einer Umgebung
Linux-Skript zum Konvertieren von Markdown-Dateien vom JupyterLab-Format in das Qiita-Format
Vom Umgebungsaufbau bis zum Einsatz für Kolben + Heroku mit Docker
Bereitstellen von Django + Reagieren Sie von Grund auf auf GKE (1) Backend-Entwicklung - Nginx + Django
Bereitstellen von Django + Reagieren Sie von Grund auf auf GKE: Inhaltsverzeichnis
Stellen Sie über PPTP eine Verbindung zu KUINS-III (Kyoto University VPN) von Linux her
Immerhin die Geschichte der Rückkehr von Linux zu Windows
Ich habe versucht, Perceptron Teil 1 [Deep Learning von Grund auf neu] zu implementieren.
Stellen Sie mit IKEv2 eine Verbindung zu KUINS-III (VPN der Universität Kyoto) von Linux her