GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Kurzanleitung zu Docker Utilities, Daemon und seinen anderen Funktionen

Einführung

Docker spielt eine sehr wichtige Rolle sowohl als Verpackungsformat für die Anwendungen als auch als vereinheitlichende Schnittstelle und Methodik, die es dem Anwendungsteam/den Anwendungsteams ermöglicht, die Container-Images im Docker-Format zu besitzen (Hinweis:Es wird davon ausgegangen, dass alle Abhängigkeiten eingeschlossen sind). Dies hat Docker zu einem der führenden Anbieter von Microservices gemacht und Microservices-basierte Anpassung und Nutzung.

Viele der Docker- und Docker-basierten Dienstprogramme helfen uns, die Effizienz der Skalierbarkeit und Leistung zu steigern, indem sie den Anwendungsbedarf durch Dockerized verkleinern Behälter. In vielen Fällen werden Abhängigkeiten auf Systemebene auf das Nötigste reduziert, was dazu beiträgt, die Speichernutzung in MB (Megabytes) zu reduzieren.

All diese Aspekte haben dazu beigetragen, Docker zu einem der führenden containerbasierten Dienstprogramme zu machen. Docker verfügt über viele Befehlszeilenprogramme und -funktionen. Docker Daemon kann viele dieser zusätzlichen Funktionen bereitstellen, was die Docker-Konfiguration vereinfacht.

Lesen Sie auch:So installieren Sie Docker (Community Edition) unter Ubuntu 16.04/18.04 LTS

Ich hoffe, der Leser/Benutzer dieses Artikels weiß, wie man Docker-Container in einer bestimmten Linux-Umgebung ausgliedert. Davon ausgehend werden einige der folgenden Einrichtungen beschrieben,

Einige dieser Einrichtungen können für die folgenden Funktionen verwendet werden,

  • Überprüfen Sie die Docker-Serverinformationen
  • Docker-Images und -Updates herunterladen
  • Container inspizieren
  • Protokolle anzeigen und überwachen
  • Verschiedene Statistiken und Details überwachen

1) So überprüfen Sie die aktuelle Docker-Version

Die Kenntnis der Docker-Version ist einer der sehr wichtigen Aspekte, da abhängig davon viele der versionsbasierten Entscheidungen getroffen werden.

[email protected]:~$ sudo docker version
Client:
 Version:           18.09.5
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        e8ff056
 Built:             Thu Apr 11 04:43:57 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.5
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       e8ff056
  Built:            Thu Apr 11 04:10:53 2019
  OS/Arch:          linux/amd64
  Experimental:     false
[email protected]:~$

Diese obige Ausgabe stellt sowohl die Server- als auch die Client-API-Versionen als identisch bereit, und die Betriebssystem- und Architekturversion sollten ebenfalls identisch sein. Bei Abweichungen zwischen client- und serverbasierten Versionen schlägt die Client-Server-Kommunikation fehl. Man muss sich vergewissern, was die unterstützenden Versionen sind und entsprechende Entscheidungen treffen.

2) Erfassen und Analysieren von Serverinformationen

Mit docker info können wir auch die folgenden Informationen finden. Einige der nützlichen Informationen, die wir sammeln können, sind etwa, welcher Server als Backend läuft, welche Kernel-Version es ist, welches Betriebssystem und Docker-Root-Verzeichnis usw.

[email protected]:~$ sudo docker info
Containers: 2
 Running: 1
 Paused: 0
 Stopped: 1
Images: 4
Server Version: 18.09.5
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 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: bb71b10fd8f58240ca47fbb579b9d1028eea7c84
runc version: 2b18fe1d885ee5083ef9f0838fee39b62d653e30
init version: fec3683
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.15.0-20-generic
Operating System: Ubuntu 18.04 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.947GiB
Name: linuxtechi
ID: VRUY:AWXX:7JWE:YWU7:X4QW:TNKE:6H26:PNRR:QFGI:XYRQ:QUXF:MTXC
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): 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 swap limit support
[email protected]:~$

Alle oben genannten Informationen basieren auf der Einrichtung des Docker-Daemons, der zugrunde liegenden Betriebssystemversion und dem Dateisystemtyp. All dies kann mit dem folgenden Befehlssatz erfasst werden,

Führen Sie den folgenden Befehl aus, um den Betriebssystemnamen, seine Version und den Codenamen zu erhalten

[email protected]:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04 LTS"
[email protected]:~$

oder

[email protected]:~$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04 LTS"
NAME="Ubuntu"
VERSION="18.04 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
[email protected]:~$

Führen Sie den folgenden Befehl aus, um die Dateisystemdetails abzurufen:

[email protected]:~$ mount | grep "^/dev"
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
[email protected]:~$

3) Docker-Daemon

Der Docker-Daemon spielt eine sehr entscheidende Rolle in der gesamten Docker-Umgebung.

Ohne einen geeigneten Daemon ist das gesamte Docker-System nutzlos. Man kann den Daemon-Status mit dem folgenden Befehl überprüfen,

Hinweis :- Vorausgesetzt, die ordnungsgemäße Docker-Installation wurde durchgeführt

[email protected]:~$ sudo service docker status

Wenn der Docker-Dienst ausgeführt wird, sollte die Ausgabe des obigen Befehls in etwa so aussehen:

Falls der Docker-Dienst nicht läuft, verwenden Sie den folgenden Befehl, um ihn zu starten

[email protected]:~$ sudo systemctl start docker
or
[email protected]:~$ sudo service docker start
[email protected]:~$

Verwenden Sie unten „docker ps ”-Befehl, um die laufenden Container aufzulisten

[email protected]:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[email protected]:~$

Um alle laufenden und gestoppten Container aufzulisten, verwenden Sie „docker ps -a

[email protected]:~$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
497e6733d760        ubuntu              "bash"              19 minutes ago      Exited (0) 2 minutes ago                        goofy_morse
0862fe109f96        hello-world         "/hello"            19 minutes ago      Exited (0) 19 minutes ago                       vibrant_shannon
[email protected]:~$

Das Standard-Stammverzeichnis von Docker ist „/var/lib/docker“

[email protected]:~$ sudo ls -l /var/lib/docker
total 48
drwx------  2 root root 4096 Apr 14 07:00 builder
drwx------  4 root root 4096 Apr 14 07:00 buildkit
drwx------  4 root root 4096 Apr 14 07:09 containers
drwx------  3 root root 4096 Apr 14 07:00 image
drwxr-x---  3 root root 4096 Apr 14 07:00 network
drwx------ 16 root root 4096 Apr 14 07:27 overlay2
drwx------  4 root root 4096 Apr 14 07:00 plugins
drwx------  2 root root 4096 Apr 14 07:27 runtimes
drwx------  2 root root 4096 Apr 14 07:00 swarm
drwx------  2 root root 4096 Apr 14 07:27 tmp
drwx------  2 root root 4096 Apr 14 07:00 trust
drwx------  2 root root 4096 Apr 14 07:00 volumes
[email protected]:~$

Wenn der Docker-Daemon nicht gestartet wird, kann er mit dem folgenden Befehl aufgerufen werden:

[email protected]:~$ sudo dockerd

Ausgabe von obigem dockerd Der Befehl sieht in etwa so aus:

Lesen Sie auch:So installieren Sie Docker unter CentOS 7

4) Docker-Container-Image herunterladen und Container untersuchen

[email protected]:~$ sudo docker pull ubuntu:latest
Using default tag: latest
latest: Pulling from library/ubuntu
898c46f3b1a1: Pull complete
63366dfa0a50: Pull complete
041d4cd74a92: Pull complete
6e1bee0f8701: Pull complete
Digest: sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8
Status: Downloaded newer image for ubuntu:latest
[email protected]:~$
latest: Pulling from library/ubuntu898c46f3b1a1: Pull complete
63366dfa0a50: Pull complete
041d4cd74a92: Pull complete6e1bee0f8701: Pull complete
Digest: sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8Status: Downloaded newer image for ubuntu:latest

Das Beispiel zum Starten eines Containers wird unten gezeigt

[email protected]:~$ sudo docker run -d -t ubuntu /bin/bash
58c023f0f5689ff08b858221ca10c985936a8c9dd91d08e84213009facb64724
[email protected]:~$
[email protected]:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
58c023f0f568        ubuntu              "/bin/bash"         27 seconds ago      Up 26 seconds                           boring_dijkstra
[email protected]:~$

Untersuchen wir diesen Container mit dem folgenden Befehl:

[email protected]:~$ sudo docker inspect 58c023f0f568
[
    {
        "Id": "58c023f0f5689ff08b858221ca10c985936a8c9dd91d08e84213009facb64724",
        "Created": "2019-04-14T06:55:26.289022884Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 15538,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2019-04-14T06:55:27.142274111Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:94e814e2efa8845d95b2112d54497fbad173e45121ce9255b93401392f538499",
        "ResolvConfPath": "/var/lib/docker/containers/58c023f0f5689ff08b858221ca10c985936a8c9dd91d08e84213009facb64724/resolv.conf",
………………………………………………

Hinweis:- Die vollständige Ausgabe dieses Befehls wird hier nicht angezeigt, da die Ausgabe zu groß ist

5) Gehen Sie in das laufende Container-Image

Wie man weiß, verwendete Docker ursprünglich alles, was auf dem LXC-Backend basierte, der lxc-attach-Befehl von Linux wurde für einige Zeit verwendet. Aber sobald Docker als eigenständiges Paket erstellt wurde und mit der Verwendung von „libcontainer “ als Standard-Backend wurde die Verwendung des Befehls „docker exec“ populär

Der folgende Satz von Befehlen erklärt, wie man sich über die Befehlszeile beim Container anmeldet,

:~$ sudo docker  exec -t  

[email protected]:~$ sudo docker  exec -t 58c023f0f568 ls -a
.   .dockerenv  boot  etc   lib    media  opt   root  sbin  sys  usr
..  bin         dev   home  lib64  mnt    proc  run   srv   tmp  var
[email protected]:~$ sudo docker  exec -t 58c023f0f568 ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 06:55 pts/0    00:00:00 /bin/bash
root        20     0  0 07:17 pts/1    00:00:00 ps -ef
[email protected]:~$

Die alternative Möglichkeit, Befehle innerhalb des Containers auszuführen, besteht darin, sich zuerst mit „Docker Attach“ beim Container anzumelden ” und dann Befehle ausführen

:~$ sudo Docker Attach

[email protected]:~$ sudo docker attach 58c023f0f568
[email protected]:/#

Es gibt einige Situationen, in denen Sie einen Container starten und ein Volume daran anhängen möchten, und wenn wir den Container verlassen, sollte er automatisch gelöscht werden, das Beispiel ist unten gezeigt

[email protected]:~$ sudo docker run -it --rm -v /usr/local/bin:/target jpetazzo/nsenter bash
[email protected]:/src# df -h /target/
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        18G  5.6G   12G  34% /target
[email protected]:/src# exit
exit
[email protected]:~$

Überprüfen Sie nun, ob Docker automatisch entfernt wird oder nicht, wenn wir den Container verlassen, führen Sie „docker ps“

aus
[email protected]:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
58c023f0f568        ubuntu              "/bin/bash"         About an hour ago   Up About an hour                        boring_dijkstra
[email protected]:~$

6) Docker-Überwachung

Verwenden Sie „Docker-Statistiken ”-Befehl zum Anzeigen der Ressourcenauslastung aller Container,

[email protected]:~$ sudo docker stats
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
58c023f0f568        boring_dijkstra     0.00%               1.059MiB / 1.947GiB   0.05%               4.75kB / 0B         4.74MB / 0B         1
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
58c023f0f568        boring_dijkstra     0.00%               1.059MiB / 1.947GiB   0.05%               4.75kB / 0B         4.74MB / 0B         1
[email protected]:~$

7) Docker-Ereignisse

Oft ist die Erfassung von Docker-Ereignissen von entscheidender Bedeutung, da dies Informationen zu verschiedenen Docker-Operationen und -Ereignissen liefert, die stattfinden. Unten ist der Schnappschuss davon.

[email protected]:~$ sudo docker events
2019-04-14T09:29:07.636990738+01:00 image pull wordpress:latest (name=wordpress)
2019-04-14T09:29:46.936676431+01:00 volume create 36187e0a44d277439fea0df2446fc44987fa814c52744091929e5c81bd8134e5 (driver=local)
2019-04-14T09:29:46.998798935+01:00 container create b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058 (image=wordpress, name=friendly_heisenberg)
2019-04-14T09:29:47.000202026+01:00 container attach b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058 (image=wordpress, name=friendly_heisenberg)
2019-04-14T09:29:47.209257002+01:00 network connect 18dd93c3c6fc9ce51a98f7d2359b319db251efcae6b991157965ef727a580702 (container=b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058, name=bridge, type=bridge)
2019-04-14T09:29:47.239846902+01:00 volume mount 36187e0a44d277439fea0df2446fc44987fa814c52744091929e5c81bd8134e5 (container=b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058, destination=/var/www/html, driver=local, propagation=, read/write=true)
2019-04-14T09:29:47.942997316+01:00 container start b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058 (image=wordpress, name=friendly_heisenberg)
2019-04-14T09:29:47.944521098+01:00 container resize b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058 (height=39, image=wordpress, name=friendly_heisenberg, width=130)
2019-04-14T09:29:59.829378089+01:00 container die b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058 (exitCode=0, image=wordpress, name=friendly_heisenberg)
2019-04-14T09:30:00.147435896+01:00 network disconnect 18dd93c3c6fc9ce51a98f7d2359b319db251efcae6b991157965ef727a580702 (container=b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058, name=bridge, type=bridge)
2019-04-14T09:30:00.845336887+01:00 volume unmount 36187e0a44d277439fea0df2446fc44987fa814c52744091929e5c81bd8134e5 (container=b97f6a565c518eb1464cf81e6e09db1acfd84a0fdcbaea94255f1f182d79c058, driver=local)
………………
Schlussfolgerung

Die Kombination all dieser Befehle und Dienstprogramme ist sehr wichtig, um Docker und Container zu einer erfolgreichen Microservices-basierten Umgebung zu machen. Da viele Microservice-Architekturen diese Art von Dienstprogrammen benötigen, um sie für den täglichen Gebrauch zu debuggen, zu verstehen und mehr darüber zu erfahren, hoffe ich, dass dieser Artikel in solchen Fällen eine Rolle spielen wird.

Lesen Sie auch:So installieren und verwenden Sie docker-compose zum Bereitstellen von Containern in CentOS 7


Docker
  1. So installieren Sie Docker und Docker Compose unter Debian 11

  2. PostgreSQL in Docker ausführen, eine schnelle und praktische Anleitung

  3. So führen Sie Jupiter, Keras, Tensorflow und andere ML-Bibliotheken in Docker aus

  4. Eine Kurzanleitung zur Verwendung von Docker Compose

  5. Leitfaden für das Upgrade auf MongoDB 5.0 und Rocket.Chat 4.0 auf Docker

Linux Mint 20.1 „Ulyssa“ Review- und Upgrade-Leitfaden

So überprüfen Sie Ubuntu-Versionsdetails und andere Systeminformationen

Stellen Sie NGINX auf Docker bereit und erhöhen Sie die Serverkapazitäten

So überprüfen Sie die Ubuntu-Version – schnelle und einfache Methoden

.NET Core und Docker

.NET und Docker