Installez Docker sur Ubuntu et configurez la connexion à distance à l'aide de tls

Installez Docker sur Ubuntu et configurez la connexion à distance à l'aide de tls

J'ai écrit le même article dans ici

1. 1. Installer Docker

Exécutez la commande suivante pour installer Docker sur Ubuntu J'essaye de tout faire avec un seul exemplaire pour qu'il n'y ait pas de soucis

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. Paramètres de démarrage de Docker

Démarre automatiquement au démarrage du système d'exploitation et démarre sur place

sudo systemctl enable docker
sudo systemctl start docker

3. 3. Contrôle de fonctionnement

Par défaut, vous avez besoin des privilèges root pour vous connecter à Docker

sudo docker ps

4. Rendre Docker disponible pour les utilisateurs généraux

Après avoir exécuté la commande suivante, vous pouvez l'utiliser en vous reconnectant.

sudo echo usermod -aG docker `logname`

Confirmation

docker ps

5. Connexion par tls

De là, ce sera une partie gênante J'ai besoin de créer un certificat OLEORE et de le distribuer au serveur et au client, mais cela prend beaucoup de temps et d'efforts pour le faire. C'est trop ennuyeux, j'ai donc créé un script qui ignore toutes les entrées du milieu pour qu'il se termine par une commande

5.1 Créer un certificat

Vérifiez ici pour la description de la commande https://github.com/SoraKumo001/docker-tls

Créez un certificat pour vous connecter à distance

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

Si vous souhaitez définir correctement le nom d'hôte lors de la connexion, spécifiez le nom de domaine et l'adresse IP comme suit

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 Fichier généré

--Clé privée /etc/docker/certs/private-key.pem

--Fichier pour le démon Docker /etc/docker/certs/ca.pem /etc/docker/certs/server-key.pem /etc/docker/certs/server-cert.pem

--Fichier client ~/.docker/ca.pem ~/.docker/cert.pem ~/.docker/key.pem

Pour une connexion à distance dans un environnement Windows ou Mac, copiez le fichier client dans le dossier .docker du répertoire utilisateur.

5.1.2 Concernant les clés privées

Le script de génération automatique de certificat est conçu pour réutiliser les clés privées Donc, si vous réémettez le certificat, vous n'avez pas à redistribuer le certificat du client. De plus, si vous créez un certificat avec la clé privée existante copiée au même emplacement sur un autre serveur, vous pouvez vous connecter à plusieurs serveurs avec le même fichier client.

Si vous avez besoin d'un remake complet, veuillez effacer la clé privée manuellement

5.2 Modifier les paramètres de service

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
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 Mises à jour du service

sudo systemctl daemon-reload && sudo systemctl restart docker

5.4 Confirmation de connexion par tls

Dans les paramètres de service jusqu'à présent, une connexion tls est requise lors de la connexion en adressant à l'aide de -H. Par conséquent, vous ne pouvez pas vous connecter sauf si vous spécifiez --tls. Si vous définissez --tlsverify, le nom de domaine sera vérifié lors de la connexion.

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

5.5 Transfert à distance des images Docker

Les commandes Docker ont la capacité de diriger des images Docker, vous pouvez donc transférer des images à distance sans passer par Docker Hub en procédant comme suit:

docker enregistrer le nom de l'image(Plusieurs peuvent être spécifiés) | docker --tls -Chargement du nom du serveur H

Utile pour transférer des images créées localement ou des builds CI / CD Si vous en avez un petit, vous pouvez facilement le déployer avec celui-ci.

5.6 Lors de la connexion depuis docker-compose

Veuillez noter que vous ne pourrez pas vous connecter à moins qu'il ne corresponde au nom d'hôte spécifié lors de la création du certificat.

docker-compose --tlsverify -H nom d'hôte:2375 ou moins Commande normale

6. Sommaire

Une fois que vous avez émis le certificat, vous pourrez facilement utiliser Docker à distance. Après cela, si vous envoyez un conteneur et le déplacez, vous pourrez presque tout faire Cependant, faites attention aux erreurs telles que placer un certificat dans un référentiel public et le publier. La publication crée le regret

Recommended Posts

Installez Docker sur Ubuntu et configurez la connexion à distance à l'aide de tls
Installez Docker sur Ubuntu Server 20.04
Configurer ansible-playbook sur Ubuntu 20.04
Installez Ubuntu 20.04 dans la boîte virtuelle sur Windows10 et créez un environnement de développement à l'aide de docker
Installez docker et docker-compose sur ubuntu dans les plus brefs délais
Configurer Django sur Ubuntu 16.04 avec PostgreSQL et Gunicorn sur ECS
Installez JDK et JRE sur Ubuntu 16.10
Installez docker et docker-compose sur Alpine Linux
Configurer le registre Docker localement sur CentOS 7
Construire et installer la version de développement Wireshark (3.3.1) sur Ubuntu
Installez Docker sur Raspberry Pi 4 et Raspberry Pi OS 64 bits
Configurer un serveur SSH sur Ubuntu 20.04, qui est WSL2
Docker sur Ubuntu18.04 sur WSL2 et instructions d'installation de VSCode
Installez pyqt5 sur ubuntu
SSH dans Ubuntu sur VirtualBox de votre Mac et faites-le jusqu'à ce que vous installiez Docker
Installez Docker sur Manjaro
Installez Ruby sur Ubuntu 20.04
Installez java et maven sur un nouveau mac en utilisant brew
J'ai essayé d'utiliser YOLO v4 sur Ubuntu et ROS
Installez rbenv avec apt sur ubuntu et mettez ruby
Configurer un serveur MineCraft Paper avec Ubuntu 20.04.1 LTS ② Mise à jour
Script de configuration pour l'utilisation de docker dans un environnement proxy sur ubuntu 20.04.1
Installez Docker sur Raspberry Pi
Installez Docker sur Windows 10 PRO
Installez OpenJDK7 (JAVA) sur ubuntu 14.04
Oracle Java 8 sur Docker Ubuntu
Installez l'agent zabbix (5.0) sur Ubuntu 18.04
Installation du proxy MAV sur Ubuntu 18.04
Configurer GitLab avec docker
Configurer Gitolite sur CentOS 7
Installez Java sur WSL Ubuntu 18.04
Installez Ubuntu Desktop 20.10 sur RaspberryPi4
Installer docker sur AWS EC2
Installez WordPress 5.5 sur Ubuntu 20.04 LTS
Installez Ubuntu Server 20.04 sur Btrfs
Remarque: installez PostgreSQL 9.5 sur Ubuntu 18.04
Comment installer et utiliser Composer sur une instance ECS sur Ubuntu 16.04
Déployer laravel à l'aide de docker sur EC2 sur AWS ③ (connexion SSH ~ installation Docke-compose)
Installez Docker et docker-compose sur Raspeye 4, Linux (Debian) et Windows 10, respectivement
Configurez facilement un serveur Jenkins sur AWS à l'aide de l'AMI de Bitnami
Comment installer et configurer l'outil de surveillance "Graphite" sur Ubuntu
Installez Ubuntu20.04 sur RaspberryPi 4 et compilez Kubernetes pour exécuter le conteneur
Configurer un environnement Wordpress Docker sans utiliser l'image Worpdress
Installez Ubuntu Server 20.04 dans VirtualBox sur Mac et établissez une connexion SSH
Signature et validation à l'aide de java.security.Provider
Animation utilisant matchedGeometryEffect et @Namespace
Comment installer et configurer l'outil de surveillance "Graphite" sur Ubuntu
Installez openjdk8 sur l'image Docker (Debian)