Heim > Artikel > Betrieb und Instandhaltung > Wie baut man ein sicheres und zuverlässiges Docker-Image-Warehouse auf einem Linux-Server auf?
Wie baut man ein sicheres und zuverlässiges Docker-Image-Warehouse auf einem Linux-Server auf?
Mit der rasanten Entwicklung der Containertechnologie ist Docker zu einem gängigen Werkzeug zum Erstellen und Verwalten von Containeranwendungen geworden. In praktischen Anwendungen ist jedoch die Einrichtung eines sicheren und zuverlässigen Docker-Image-Warehouses ein wichtiges Thema. In diesem Artikel wird erläutert, wie Sie ein sicheres und zuverlässiges Docker-Image-Warehouse auf einem Linux-Server einrichten, und Codebeispiele als Referenz bereitgestellt.
Zuerst müssen Sie Docker auf dem Linux-Server installieren. Es kann über den folgenden Befehl installiert werden:
$ sudo apt-get update $ sudo apt-get install docker-ce
Führen Sie nach Abschluss der Installation den folgenden Befehl aus, um zu überprüfen, ob die Installation erfolgreich ist:
$ docker version
Als nächstes müssen Sie Docker konfigurieren Bildlager. Sie können wählen, ob Sie das offizielle Registry-Image von Docker oder Open-Source-Images von Drittanbietern wie Harbor, Nexus usw. verwenden möchten.
Am Beispiel des offiziellen Docker-Registrierungsimages können Sie einen Registrierungscontainer mit dem folgenden Befehl starten:
$ docker run -d -p 5000:5000 --name registry registry:latest
Nachdem der Startvorgang abgeschlossen ist, können Sie mit dem folgenden Befehl überprüfen, ob die Registrierung ordnungsgemäß funktioniert:
$ curl http://localhost:5000/v2/_catalog
If Es wird ein leeres Array []
zurückgegeben, das anzeigt, dass die Registrierung erfolgreich ausgeführt wurde. []
,说明Registry已经成功运行。
为了保证镜像仓库的安全,需要添加认证和授权功能。可以使用Nginx作为反向代理服务器,并使用Basic Auth认证方式。
首先,安装Nginx:
$ sudo apt-get install nginx
然后,创建一个用于存放认证信息的密码文件:
$ sudo sh -c "echo -n 'admin:' >> /etc/nginx/.htpasswd" $ sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd"
创建完成后,需要编辑Nginx配置文件/etc/nginx/sites-available/default
,添加如下内容:
server { listen 80; server_name <your-domain-name>; location / { proxy_pass http://localhost:5000; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; } }
替换454b098903dd34fa7086458fb3f097b6
为你的域名。
保存配置文件并重启Nginx:
$ sudo systemctl restart nginx
为了保证通信的安全性,可以使用HTTPS协议进行通信。需要先为镜像仓库生成自签名证书。
首先,安装OpenSSL:
$ sudo apt-get install openssl
然后,生成私钥和自签名证书:
$ sudo openssl req -newkey rsa:2048 -nodes -keyout registry.key -x509 -days 365 -out registry.crt
生成的registry.key
为私钥文件,registry.crt
为自签名证书文件。
接下来,编辑Nginx配置文件/etc/nginx/sites-available/default
,添加如下内容:
server { listen 443 ssl; server_name <your-domain-name>; ssl_certificate /path/to/registry.crt; ssl_certificate_key /path/to/registry.key; location / { proxy_pass http://localhost:5000; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; } }
替换454b098903dd34fa7086458fb3f097b6
$ sudo systemctl restart nginx
Dann erstellen Sie eine Passwortdatei zum Speichern der Authentifizierungsinformationen:
$ sudo vi /etc/docker/daemon.json
Nach der Erstellung müssen Sie die Nginx-Konfigurationsdatei /etc/nginx/sites-available/default bearbeiten. code>, fügen Sie Folgendes hinzu:
{ "insecure-registries": ["<your-domain-name>:5000"] }
Ersetzen Sie 454b098903dd34fa7086458fb3f097b6
durch Ihren Domainnamen.
Speichern Sie die Konfigurationsdatei und starten Sie Nginx neu:
$ sudo systemctl restart docker
HTTPS-Unterstützung konfigurieren
🎜🎜Um die Sicherheit der Kommunikation zu gewährleisten, können Sie das HTTPS-Protokoll für die Kommunikation verwenden. Sie müssen zunächst ein selbstsigniertes Zertifikat für das Image Warehouse generieren. 🎜🎜Installieren Sie zunächst OpenSSL: 🎜$ docker tag image <your-domain-name>:5000/image $ docker push <your-domain-name>:5000/image $ docker pull <your-domain-name>:5000/image🎜Dann generieren Sie den privaten Schlüssel und das selbstsignierte Zertifikat: 🎜rrreee🎜Der generierte
registry.key
ist die private Schlüsseldatei registry.crt Es handelt sich um eine selbstsignierte Zertifikatsdatei. 🎜🎜Bearbeiten Sie als Nächstes die Nginx-Konfigurationsdatei <code>/etc/nginx/sites-available/default
und fügen Sie den folgenden Inhalt hinzu: 🎜rrreee🎜Ersetzen Sie 454b098903dd34fa7086458fb3f097b6
für Ihren Domainnamen. 🎜🎜Speichern Sie die Konfigurationsdatei und starten Sie Nginx neu: 🎜rrreee🎜🎜Verwenden Sie den Docker-Client, um mit dem Image-Repository zu interagieren.🎜🎜🎜Verwenden Sie abschließend den Docker-Client, um mit dem Image-Repository zu interagieren. Zuerst müssen Sie ein vertrauenswürdiges Repository für Docker konfigurieren: 🎜rrreee🎜Fügen Sie den folgenden Inhalt in der Konfigurationsdatei hinzu: 🎜rrreee🎜Speichern Sie die Konfigurationsdatei und starten Sie den Docker-Dienst neu: 🎜rrreee🎜Jetzt können Sie mit dem Docker-Client interagieren Das Bild-Repository, zum Beispiel, pushen und ziehen Sie das Bild: 🎜rrreee🎜Das Obige sind alle Schritte und Codebeispiele, um ein sicheres und zuverlässiges Docker-Image-Warehouse auf dem Linux-Server einzurichten. Wenn Sie diese Schritte befolgen, können Sie ein sicheres und zuverlässiges Docker-Image-Warehouse aufbauen, um die Zuverlässigkeit und Sicherheit von Containeranwendungen zu gewährleisten. 🎜
Das obige ist der detaillierte Inhalt vonWie baut man ein sicheres und zuverlässiges Docker-Image-Warehouse auf einem Linux-Server auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!