Installieren Sie Docker unter Ubuntu und richten Sie die Remoteverbindung mit tls ein

Installieren Sie Docker unter Ubuntu und richten Sie die Remoteverbindung mit tls ein

Ich habe den gleichen Artikel in [hier] geschrieben (https://ttis.croud.jp/?uuid=72cb3eef-3aa9-4c2d-8390-690a2f1c69d7).

1. 1. Installieren Sie Docker

Führen Sie den folgenden Befehl aus, um Docker unter Ubuntu zu installieren Ich versuche alles mit einer Kopie zu machen, damit es keinen Ärger gibt

sudo apt -y install apt-transport-https ca-certificates software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" && \
sudo apt install -y docker-ce

2. Docker-Starteinstellungen

Startet automatisch beim Start des Betriebssystems und vor Ort

sudo systemctl enable docker
sudo systemctl start docker

3. 3. Funktionsprüfung

Standardmäßig benötigen Sie Root-Rechte, um eine Verbindung zu Docker herzustellen

sudo docker ps

4. Stellen Sie Docker allgemeinen Benutzern zur Verfügung

Nachdem Sie den folgenden Befehl ausgeführt haben, können Sie ihn verwenden, indem Sie sich erneut anmelden.

sudo echo usermod -aG docker `logname`

Bestätigung

docker ps

5. Verbindung durch tls

Von hier aus wird es ein schwieriger Teil sein Ich muss ein Oleore-Zertifikat erstellen und es an den Server und den Client verteilen, aber es kostet viel Zeit und Mühe, dies zu tun. Es ist zu ärgerlich, deshalb habe ich ein Skript erstellt, das alle Eingaben in der Mitte überspringt, sodass es mit einem Befehl endet

5.1 Zertifikat erstellen

Überprüfen Sie hier die Befehlsbeschreibung https://github.com/SoraKumo001/docker-tls

Erstellen Sie ein Zertifikat für die Remoteverbindung

curl -s https://raw.githubusercontent.com/SoraKumo001/docker-tls/master/docker-tls.sh | \
sudo bash

Wenn Sie den Hostnamen beim Herstellen einer Verbindung korrekt festlegen möchten, geben Sie den Domänennamen und die IP wie folgt an

curl -s https://raw.githubusercontent.com/SoraKumo001/docker-tls/master/docker-tls.sh | \
sudo bash -s DNS:host.example.com,IP:10.1.1.1

5.1.1 Generierte Datei

--Privat Schlüssel /etc/docker/certs/private-key.pem

--Datei für Docker-Daemon /etc/docker/certs/ca.pem /etc/docker/certs/server-key.pem /etc/docker/certs/server-cert.pem

--Client-Datei ~/.docker/ca.pem ~/.docker/cert.pem ~/.docker/key.pem

Kopieren Sie für eine Remoteverbindung in einer Windows- oder Mac-Umgebung die Clientdatei in den Ordner .docker im Benutzerverzeichnis.

5.1.2 In Bezug auf private Schlüssel

Das automatische Zertifikatgenerierungsskript dient zur Wiederverwendung privater Schlüssel Wenn Sie das Zertifikat erneut ausstellen, müssen Sie das Zertifikat des Clients nicht neu verteilen. Wenn Sie ein Zertifikat mit dem vorhandenen privaten Schlüssel erstellen, der an denselben Speicherort auf einem anderen Server kopiert wurde, können Sie mit derselben Clientdatei eine Verbindung zu mehreren Servern herstellen.

Wenn Sie ein vollständiges Remake benötigen, löschen Sie den privaten Schlüssel bitte manuell

5.2 Serviceeinstellungen ändern

ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/certs/ca.pem --tlscert=/etc/docker/certs/server-cert.pem --tlskey=/etc/docker/certs/server-key.pem -H tcp://0.0.0.0 -H fd:// --containerd=/run/containerd/containerd.sock

--Wenn es schwierig ist, manuell zu bearbeiten Das Umschreiben wird durch Einfügen des folgenden Befehls abgeschlossen

sudo sed -i "s/^ExecStart=.*/ExecStart=\/usr\/bin\/dockerd \
--tlsverify --tlscacert=\/etc\/docker\/certs\/ca.pem \
--tlscert=\/etc\/docker\/certs\/server-cert.pem \
--tlskey=\/etc\/docker\/certs\/server-key.pem \
-H tcp:\/\/0.0.0.0 -H fd:\/\/ \
--containerd=\/run\/containerd\/containerd.sock/" \
/lib/systemd/system/docker.service

5.3 Service-Updates

sudo systemctl daemon-reload && sudo systemctl restart docker

5.4 Bestätigung der Verbindung durch tls

In den bisherigen Diensteinstellungen ist eine tls-Verbindung erforderlich, wenn eine Verbindung durch Adressierung mit -H hergestellt wird. Daher können Sie nur dann eine Verbindung herstellen, wenn Sie --tls angeben. Wenn Sie --tlsverify festlegen, wird der Domänenname beim Herstellen einer Verbindung überprüft.

docker --tls -H localhost ps
docker --tlsverify -H localhost ps

5.5 Fernübertragung von Docker-Bildern

Docker-Befehle können Docker-Images weiterleiten, sodass Sie Bilder remote übertragen können, ohne Docker Hub zu durchlaufen. Gehen Sie dazu wie folgt vor:

Docker speichern Bildnamen(Es können mehrere angegeben werden) | docker --tls -H Servername laden

Nützlich zum Übertragen lokal erstellter Images oder CI / CD-Builds Dies macht es einfach, kleine bereitzustellen

5.6 Beim Herstellen einer Verbindung von Docker-Compose

Bitte beachten Sie, dass Sie nur dann eine Verbindung herstellen können, wenn sie mit dem beim Erstellen des Zertifikats angegebenen Hostnamen übereinstimmt.

docker-compose --tlsverify -H Hostname:2375 oder weniger Normaler Befehl

6. Zusammenfassung

Sobald Sie das Zertifikat ausgestellt haben, können Sie Docker problemlos aus der Ferne bedienen. Wenn Sie danach einen Container senden und verschieben, können Sie fast alles tun Achten Sie jedoch auf Fehler wie das Einfügen und Veröffentlichen eines Zertifikats in ein öffentliches Repository. Veröffentlichen schafft Bedauern

Recommended Posts

Installieren Sie Docker unter Ubuntu und richten Sie die Remoteverbindung mit tls ein
Installieren Sie Docker unter Ubuntu Server 20.04
Richten Sie ansible-playbook unter Ubuntu 20.04 ein
Installieren Sie Ubuntu 20.04 in der virtuellen Box unter Windows 10 und erstellen Sie eine Entwicklungsumgebung mit Docker
Installieren Sie Docker und Docker-Compose in kürzester Zeit auf Ubuntu
Richten Sie Django mit PostgreSQL und Gunicorn auf ECS unter Ubuntu 16.04 ein
Installieren Sie JDK und JRE unter Ubuntu 16.10
Installieren Sie Docker und Docker-Compose unter Alpine Linux
Richten Sie die Docker-Registrierung lokal unter CentOS 7 ein
Erstellen und installieren Sie Wireshark Development Release (3.3.1) unter Ubuntu
Installieren Sie Docker auf Raspberry Pi 4 und Raspberry Pi OS 64bit
Richten Sie unter Ubuntu 20.04 einen SSH-Server ein, nämlich WSL2
Installationsanweisungen für Docker unter Ubuntu18.04 unter WSL2 und VSCode
Installieren Sie pyqt5 auf Ubuntu
SSH in Ubuntu auf der VirtualBox Ihres Mac und tun Sie dies, bis Sie Docker installieren
Installieren Sie Docker auf Manjaro
Installieren Sie Ruby unter Ubuntu 20.04
Installieren Sie Java und Maven mit Brew auf einem neuen Mac
Ich habe versucht, YOLO v4 unter Ubuntu und ROS zu verwenden
Installieren Sie rbenv mit apt auf Ubuntu und setzen Sie Ruby
Richten Sie einen MineCraft Paper-Server mit Ubuntu 20.04.1 LTS ② Update ein
Konfigurationsskript für die Verwendung von Docker in einer Proxy-Umgebung unter Ubuntu 20.04.1
Installieren Sie Docker auf Raspberry Pi
Installieren Sie Docker unter Windows 10 PRO
Installieren Sie OpenJDK7 (JAVA) unter Ubuntu 14.04
Oracle Java 8 unter Docker Ubuntu
Installieren Sie den zabbix agent (5.0) unter Ubuntu 18.04
Installieren von MAV Proxy unter Ubuntu 18.04
Richten Sie GitLab mit Docker ein
Richten Sie Gitolite unter CentOS 7 ein
Installieren Sie Java unter WSL Ubuntu 18.04
Installieren Sie Ubuntu Desktop 20.10 auf RaspberryPi4
Installieren Sie Docker auf AWS EC2
Installieren Sie WordPress 5.5 unter Ubuntu 20.04 LTS
Installieren Sie Ubuntu Server 20.04 auf Btrfs
Hinweis: Installieren Sie PostgreSQL 9.5 unter Ubuntu 18.04
So installieren und verwenden Sie Composer auf einer ECS-Instanz unter Ubuntu 16.04
Stellen Sie Laravel mit Docker auf EC2 unter AWS bereit (SSH-Verbindung ~ Docke-Compose-Installation)
Installieren Sie Docker und Docker-Compose unter Raspeye 4, Linux (Debian) bzw. Windows 10
Richten Sie mit Bitnamis AMI ganz einfach einen Jenkins-Server in AWS ein
So installieren und konfigurieren Sie das Überwachungstool "Graphite" unter Ubuntu
Installieren Sie Ubuntu20.04 auf RaspberryPi 4 und erstellen Sie Kubernetes, um den Container auszuführen
Richten Sie eine Wordpress Docker-Umgebung ein, ohne das Worpdress-Image zu verwenden
Installieren Sie Ubuntu Server 20.04 in VirtualBox auf einem Mac und stellen Sie eine SSH-Verbindung her
Signieren und Validieren mit java.security.Provider
Animation mit MatchedGeometryEffect und @Namespace
So installieren und konfigurieren Sie das Überwachungstool "Graphite" unter Ubuntu
Installieren Sie openjdk8 auf dem Docker-Image (Debian).