[LINUX] Tragen Sie einen Docker-Container

Überblick

Verwenden Sie einen USB-Speicher, um eine Umgebung zu erstellen, in der Sie den Docker-Container überall dort ausführen können, wo Sie einen Windows-PC ohne Administratorrechte haben.

Über USB-Speicher

Wenn Sie keine schnelle USB3.0-kompatible auswählen, wird diese durch die Schreibgeschwindigkeit beeinträchtigt und der Vorgang verlangsamt sich.

Ich denke, dass es schmerzhaft ist, wenn der Wert des zufälligen Schreibens (rechts unten zwei) von CrystalDiskMark 1,0 nicht überschreitet (* Es gibt individuelle Unterschiede in der Erfahrung)

Ich verwende übrigens U3-MAX2 / 32K I-O DATA.

Wenn Sie es etwas sperrig machen können, können Sie eine tragbare SSD verwenden, und es sollte kein Problem mit der Geschwindigkeit geben, es sei denn, es handelt sich um ein defektes Produkt.

Bei USB-Speichern mit bis zu 32 GB wird diese im Anfangszustand im Allgemeinen mit FAT32 formatiert. FAT32 ist jedoch auf bis zu 4 GB pro Datei begrenzt, und der aus 1 Datei bestehende virtuelle Speicher wird bald leer und es tritt ein Schreibfehler auf. Daher ist eine Neuformatierung mit NTFS oder exFAT erforderlich.

Aufgrund seiner Natur schreibt es auch viel, seien Sie also bereit, es jederzeit zu brechen.

Installation der Virtualisierungssoftware

Qemu

Docker funktioniert nur unter (64-Bit) Linux. Sie müssen also Linux mit Virtualisierungssoftware ausführen und Qemu für die Virtualisierungssoftware verwenden.

Qemu ist nicht sehr schnell zu emulieren, kann jedoch gestartet werden, ohne verschiedene Beschleuniger zu aktivieren, für die Administratorrechte erforderlich sind. Mit anderen Worten, wenn es Ihnen nichts ausmacht, langsam zu sein, können Sie es ohne Administratorrechte starten.

WSL2 und andere Virtualisierungssoftware erfordern Administratorrechte und können nicht portabel betrieben werden. Für Portable-Virtual Box, die für tragbare Vorgänge vorgesehen ist, sind Administratorrechte erforderlich.

Es ist schwierig, eine Desktop-Umgebung wie Gnome ohne Beschleuniger auszuführen, aber es funktioniert wie in einer CUI-Umgebung (Befehlszeilenumgebung). (* Es gibt individuelle Erfahrungsunterschiede) Im Docker-Bereich wird der größte Teil der Benutzeroberfläche im Wesentlichen vom Webbrowser verwaltet, sodass dies kein großes Problem darstellt.

Der Punkt, dass es einen 64-Bit-PC sogar auf einem 32-Bit-PC / Betriebssystem emulieren kann, ist ebenfalls hoch.

Herunterladen und installieren

Von Offizielle Website Windows-Version von Qemu ([32-Bit-Version](https: // qemu) Laden Sie .weilnetz.de / w32 /) oder 64-Bit-Version herunter.

Es scheint, dass die Windows-Version von Qemu nur im Installationsformat verteilt wird, für das Administratorrechte erforderlich sind. Daher Universal Extractor 2 ([direkter Link], der die Dekomprimierung des Installationsprogramms unterstützt ](Https://github.com/Bioruebe/UniExtract2/releases/download/v2.0.0-rc.2/UniExtractRC2.zip) zum Entpacken auf den USB-Speicher.

Sie können es übrigens auch verwenden, indem Sie mit Administratorrechten installieren und die installierte Datei auf einen USB-Speicher kopieren.

Linux-Installation

Alpine Linux

Installieren Sie nach der Installation (Kopieren) von Qemu auf dem USB-Speicher Linux auf dem virtuellen PC.

Die zu installierende Linux-Distribution kann alles sein, was 64-Bit unterstützt und Docker installieren kann.

Ich persönlich empfehle Alpine Linux. Die Installation ist explosiv. Wenn Sie versuchen, eine häufig verwendete Linux-Distribution wie Debian von Grund auf neu zu installieren, müssen Sie auch bei minimaler Konfiguration auf dem bereits langsamen Qemu einige Stunden vorbereitet sein. Die Installation ist jedoch in wenigen Minuten abgeschlossen.

Alpine Linux ist eine Distribution, die keine Angst vor Missverständnissen hat und auf Gewichtsreduzierung auf Kosten der Kompatibilität ausgerichtet ist. Aufgrund ihrer geringen Größe wird sie häufig als Grundlage für das offizielle Image von Docker verwendet und häufig im Docker-Bereich verwendet. ..

Es gibt einige Kompatibilitätsprobleme, z. B. dass die in anderen Linux-Distributionen verwendete Software nicht verwendet werden kann. Wenn Sie jedoch Alpine Linux selbst als Docker-Host betreiben und die Software grundsätzlich als Docker-Container ausführen, ist dies ein Problem. Es wird nicht sein.

ISO-Download

Auf der offiziellen Website befindet sich eine ISO-Download-Seite. Laden Sie daher die x86_64-Version herunter.

Standard (124M) ist in Ordnung, aber wir empfehlen das kleinere Virtual (40M) für virtuelle PCs.

Beim Herunterladen hat es einen langen Dateinamen wie alpine-virt-3.12.0-x86_64.iso. Wenn Sie ihn also in alpine.iso ändern, wird der Rest einfacher.

Installation

Im Gegensatz zu anderen Virtualisierungssoftware verfügt Qemu über einen Mechanismus zum Festlegen und Starten aller Elemente über die Befehlszeile (obwohl es verschiedene Frontends für die Ausführung mit der GUI gibt).

Erstellen einer virtuellen Speicherdatei

> qemu-img create -f qcow2 linux.qcow2 20G

Die letzten 20 G sind die maximale Kapazität der virtuellen Speicherdatei. Ändern Sie sie daher entsprechend Ihrer Umgebung. Anstatt plötzlich die volle Kapazität von 20 G zu sichern, wird die Größe nach Bedarf erhöht, bis die maximale Kapazität erreicht ist.

Booten Sie mit der ISO-Datei als Bootdiskette

In der Dokumentation zu den Qemu-Optionen habe ich Folgendes festgelegt:

> qemu-system-x86_64.exe -display sdl -rtc clock=vm,base=utc -smp 2 -boot d -m 2048 -net nic,model=virtio -hda linux.qcow2 -cdrom alpine.iso

Wenn alles gut geht, sollte ein Fenster geöffnet werden und Linux starten. Das Booten kann eine Minute bis einige Minuten dauern.

Installation

Wenn der Startvorgang abgeschlossen ist, wird der Anmeldebildschirm der Konsole angezeigt. Sie können sich jedoch ohne Kennwort anmelden, indem Sie root eingeben und die Eingabetaste drücken.

localhost login: root

Nach dem Einloggen

# setup-alpine

Starten Sie die Installation mit. In der Befehlszeile werden Ihnen einige Fragen gestellt. Wenn Sie diese beantworten, wird die Installation gestartet.

Den spezifischen Inhalt finden Sie unter hier. Da es lang ist, werde ich es weglassen.

Nach der Installation

# poweroff

Herunterfahren mit.

Linux Boot / Einstellungen

Anlaufen

> qemu-system-x86_64.exe -display sdl -rtc clock=vm,base=utc -smp 2 -m 2048 -net nic,model=virtio -net user,hostfwd=tcp::22-:22,hostfwd=tcp::2375-:2375,hostfwd=tcp::9000-:9000 -hda linux.qcow2

Ich laufe so (bis auf einige).

Stellen Sie über den im Teil "-net user, hostfwd = tcp :: 22-: 22, hostfwd = tcp :: 2375-: 2375, hostfwd = tcp :: 9000-: 9000" angegebenen Port eine Verbindung zum Server unter Linux in Qemu her. Sie werden es schaffen. Es scheint Portweiterleitung genannt zu werden. (* Dies ist eine lokale Verbindung desselben PCs, und die Verbindung von einem externen PC kann nicht hergestellt werden, da dies auf die Windows-Firewall, den Router usw. zurückzuführen ist und Administratorrechte erforderlich sind.)

In diesem Fall können Sie mit localhost: 22 beispielsweise eine Verbindung zu dem Server herstellen, der Port 22 unter Linux in Qemu anstelle des Windows-Hosts überwacht.

Hier werden 22 für SSH, 2375 für Docker CLI und 9000 für Portainer zugewiesen. Wie oben erwähnt, können Sie mehrere Ports öffnen, indem Sie eine Verbindung herstellen. Beachten Sie jedoch, dass Qemu selbst nicht mit einem Fehler startet, wenn Sie einen Port angeben, der bereits auf einem anderen Server wartet.

Übrigens ist es auch effektiv, um den Server auf dem Docker-Container zu verbinden. Mit anderen Worten, wenn Sie das Abhören von Port 9000 beim Starten von Qemu aktivieren, können Sie eine Verbindung zu einem Docker-Container herstellen, der durch Abhören von Port 9000 auf einem Linux-Host von einem Windows-Host auf Port 9000 aus gestartet wird (verwirrend ...).

Das Booten von Linux dauert je nach Umgebung etwa 1 bis 2 Minuten. Ich bin mir nicht sicher, ob es langsam ist oder so, aber es kann ein Engpass sein, da es im tragbaren Betrieb wiederholt gestartet und gestoppt wird.

SSH-Einstellungen

Wenn der Anmeldebildschirm wie während der Installation angezeigt wird, melden Sie sich mit der während der Installation festgelegten Root-ID und dem Kennwort an.

Im Qemu-Fenster kann ich keine Befehle kopieren und einfügen, was unpraktisch ist. Daher werde ich SSH aktivieren.

Alpine Linux hat von Anfang an einen SSH-Server (wenn Sie zum Zeitpunkt der Installation in der SSH-Frage keinen beantwortet haben), aber die Spezifikationen des SSH-Servers erlauben es Ihnen nicht, sich so wie er ist als Root-Benutzer anzumelden Fügen Sie schnell eine Konfigurationsdatei hinzu, damit Sie sich als root anmelden können.

# echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

Wenn Sie ohne Passwort arbeiten möchten, geben Sie auch Folgendes ein.

# echo "PermitEmptyPasswords yes" >> /etc/ssh/sshd_config

Fahren Sie nach dem Ändern der Konfigurationsdatei Qemu herunter und starten Sie es neu oder starten Sie den SSH-Server neu.

# service sshd restart

Verbindung

Neuere Windows 10 verfügt standardmäßig über einen Opeh SSH-Client. Wenn Sie ihn jedoch unverändert verwenden, wird im Benutzerordner ein .ssh-Ordner erstellt, der nicht portierbar ist. Lesen Sie daher die Einstellungsdatei nicht wie unten gezeigt und überprüfen Sie den Schlüssel nicht Beginnen Sie mit der Option, die KnownHosts-Datei nicht zu verlassen.

> ssh -F /dev/null -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@localhost

Telnet-Verbindung zu Qemu

Wenn Sie nicht in einem ungeschützten Zustand wie den obigen SSH-Servereinstellungen arbeiten möchten, können Sie die Konsole mit Telnet anzeigen, anstatt ein Fenster mit "-display sdl" zu öffnen.

> qemu-system-x86_64.exe -display none -serial telnet:localhost:4321,server,nowait -rtc clock=vm,base=utc -smp 2 -m 2048 -net nic,model=virtio -net user,hostfwd=tcp::22-:22,hostfwd=tcp::2375-:2375,hostfwd=tcp::9000-:9000 -hda linux.qcow2

Nachdem Sie Qemu gestartet haben, stellen Sie über Telnet eine Verbindung zu Port 4321 her, und die Konsole wird angezeigt.

Da der Telnet-Client in Windows 10 nicht standardmäßig gestartet wird, Tera Term oder Putty Telnet-kompatible Terminalsoftware (beide haben tragbare Versionen) wie apps / internet / putty_portable) ist erforderlich.

Beide sind sehr praktisch, da Sie Befehle kopieren und einfügen können.

Wenn Sie dies immer aktivieren, können Sie eine Verbindung herstellen, wenn Sie den Port kennen und er sich nicht wesentlich von der obigen Einstellung auf dem SSH-Server unterscheidet. Aktivieren Sie ihn daher nur bei Bedarf.

Es ist sicher, es als Verbindung zu verwenden, bis die richtigen SSH-Servereinstellungen abgeschlossen sind.

Wenn Sie sorgfältig darüber nachdenken, verfügt TeraTerm über eine Makrofunktion, und es scheint, dass Sie Linux automatisch mit Makros betreiben können, solange Sie eine Verbindung zu Telnet herstellen können. Wenn Sie es also mit einer Batchdatei kombinieren, können Sie die gesamte Arbeit dieses Artikels automatisieren ... → Fertig

Docker-Installation

Alpine Linux hat einen eigenen Paketmanager namens apk, aber Docker kann im Ausgangszustand nicht installiert werden. Bearbeiten Sie daher / etc / apk / repositories mit vi usw., damit es installiert werden kann.

Im Ausgangszustand wird das Community-Repository in der zweiten Zeile mit # auskommentiert, aber # gelöscht, um es zu aktivieren.

/etc/apk/repositories


#/media/cdrom/apks
http://dl-cdn.alpinelinux.org/alpine/v3.12/main
http://dl-cdn.alpinelinux.org/alpine/v3.12/community
#http://dl-cdn.alpinelinux.org/alpine/edge/main
#http://dl-cdn.alpinelinux.org/alpine/edge/community
#http://dl-cdn.alpinelinux.org/alpine/edge/testing

Installieren Sie nach dem Speichern Docker und Docker-Compose-Paket mit apk

# apk update
# apk add docker docker-compose

Starten Sie nach Abschluss der Installation Docker.

# service docker start

Stellen Sie ein, dass es beim Start automatisch startet.

# rc-update add docker boot

Wenn Sie sehen möchten, ob es funktioniert, laden Sie (wahrscheinlich) das dafür bereitgestellte Hallo-Welt-Image herunter und führen Sie es als Container aus.

# docker run --rm hello-world

Wenn alles gut geht, sollten Sie Folgendes sehen.

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202
Status: Downloaded newer image for hello-world:latest

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/

Containerbetrieb mit Docker CLI für Windows

Sie können den Docker in Qemu auch von einem Windows-Host aus mit der Windows-Version der Docker-CLI bedienen.

Ich kann nichts sagen, weil ich es nicht verwendet habe, aber ich denke, es wird wahrscheinlich wie eine Windows-Version von Docker (Docker Tookbox oder Docker für Windows) sein, die Docker unter Linux mit Virtualisierungssoftware betreibt.

Die Docker-CLI scheint im Grunde genommen selbst erstellt, aber [integrierte Binärdatei](https://github.com/StefanScherer/docker-cli- Es gibt Leute, die Builder / Releases veröffentlicht haben. Wenn Sie also Probleme beim Erstellen haben, bitte.

Docker Compose verfügt über eine offizielle vorgefertigte Binärdatei. Verwenden Sie diese. Bitte benennen Sie es später in docker-compose.exe um.

Wie erwartet können Sie keine Verbindung herstellen, ohne etwas festzulegen. Erstellen Sie daher die folgende Datei /etc/docker/daemon.json, damit Sie von einem Windows-Host aus eine Verbindung herstellen können. Qemu muss auch seine Startoptionen ändern, damit eine Verbindung zu Port 2375 hergestellt werden kann.

/etc/docker/daemon.json


{"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]}

Starten Sie Docker nach dem Erstellen der Datei neu

# service docker restart

Übergeben Sie unter Windows den Pfad zu der zuvor heruntergeladenen Exe und legen Sie die Umgebungsvariable für die Verbindung mit localhost fest: 2375.

> set DOCKER_HOST=localhost:2375

Probieren Sie es aus, um zu sehen, ob es mit Docker ps funktioniert. Wenn es gut geht, wird es so aussehen.

> docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                          NAMES
5b07a88001c9        portainer/portainer   "/portainer"             5 days ago          Up 9 minutes        0.0.0.0:9000->9000/tcp                         portainer

Um ehrlich zu sein, ist es wenig sinnvoll, Docker nur über die Windows-Befehlszeile zu bedienen. Es ist besser, direkt von Linux über SSH oder Telnet zu arbeiten.

Wenn Sie gezwungen sind, nach Verdiensten zu suchen, ist es dann möglich, Docker zu betreiben und remote einen Container aus Visual Studio Code zu entwickeln, der unter Windows über die Docker-Erweiterung und die Remote-Container-Erweiterung ausgeführt wird? Es gibt eine Möglichkeit, einen SSH-Server einzurichten und remote mit SSH zu entwickeln, sodass dies auch ein heikler Ort ist.

Installation von Portainer

Wenn Sie Schwierigkeiten haben, alle Docker-Container über die Befehlszeile zu verwalten, empfehlen wir Portainer, mit dem Sie Docker-Container in einem Webbrowser verwalten können.

Wenn Sie Docker installiert haben, wird die Installation mit einer Zeile des folgenden Befehls abgeschlossen.

# docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

Greifen Sie nach Abschluss der Installation mit einem Webbrowser auf http: // localhost: 9000 zu. Der Portainer-Anmeldebildschirm sollte angezeigt werden.

Die Grundeinstellungen finden Sie unter hier.

Sicherheit

In diesem Fall funktioniert der Root-Vorgang nur, während Qemu mit dem an den PC angeschlossenen USB-Speicher ausgeführt wird. In der Regel ist nur eine lokale Verbindung möglich. Daher spielt dies keine große Rolle, ist jedoch im Grunde ein Vorgang, der nicht ausgeführt werden sollte. Denken Sie daran, dass es gibt. Achten Sie auch darauf, Ihren USB-Speicher nicht zu verlieren oder zu stehlen.

schließlich

Dies vervollständigt die Umgebung für das Tragen des Docker-Containers mit einem USB-Speicher. Empfohlen für diejenigen, die keinen PC haben, den sie frei verwalten können.

Recommended Posts

Tragen Sie einen Docker-Container
Führen Sie Matplotlib auf einem Docker-Container aus
So löschen Sie einen Docker-Container
Führen Sie matplotlib in einem Windows Docker-Container aus
Verwenden Sie die Kaggle-API in einem Docker-Container
Probieren Sie den interaktiven Python-Modus in einem Docker-Container aus
Starten Sie Django auf einem Docker-Container mit Docker-Compose Up
Erstellen Sie einen Docker-Container und speichern Sie PNG vor Altair
[Django] Erstellen Sie mit PyCharm schnell eine Entwicklungsumgebung für Django-Container (Docker)
Generieren Sie ein Docker-Image mit Fabric
Erstellen Sie einen DI-Container mit Python
Erstellen eines Flask-Servers mit Docker
Erstellen Sie eine Deb-Datei mit Docker
Stellen Sie die Django-Anwendung mit Docker bereit
Starten Sie den Docker-Container, wenn Sie Pytest ausführen
Erstellen Sie ein Docker-Container-Image mit JRE8 / JDK8 unter Amazon Linux
Ich habe einen Docker-Container erstellt, um JUMAN ++, KNP, Python (für pyKNP) zu verwenden.
Führen Sie Python-Dateien in einem Docker-Container auf einem Remote-Raspbian über PyCharm aus
Hinweise zum Einrichten eines Docker-Containers für die Verwendung von JUMAN ++, KNP, Python
So machen Sie den Containernamen in Docker als Subdomain zugänglich
Richten Sie mit Docker einen Samba-Server ein
Holen Sie sich mit Docker eine lokale Umgebung für DynamoDB
Lassen Sie uns mit Docker eine dynamische Site kratzen
Erstellen Sie eine Python-GUI-App in Docker (PySimpleGUI).
Erstellen Sie einen Webdienst mit Docker + Flask
Verwenden Sie WebDAV in einer Portable Docker-Umgebung
[Linux] Aufbau einer Docker-Umgebung mit Amazon Linux 2
So führen Sie eine Django-Anwendung auf einem Docker-Container aus (Entwicklungs- und Produktionsumgebung)