RĂ©glage du serveur
Installation de Docker Engine sur le serveur
La surcharge de docker sous Linux est minime. Docker sur Mac fonctionne dans une machine virtuelle Linux, tandis que sous Linux, il utilise directement le noyau de l'hĂŽte. Vous pouvez en savoir plus ici .
Puisqu'un petit ping est important pour nous, il est logique d'acheter un hébergement à Moscou, mais il n'y a pas beaucoup de différence.
Total: Linux, Moscou, les caractéristiques dépendent de vos besoins.
Il y a juste un tarif prĂȘt Ă l'emploi bon marchĂ© pour cela sur ruvds.com . Aussi sur ruvds.com, il est possible de commander une configuration immĂ©diatement avec Docker CE Ă bord. Une bagatelle, mais agrĂ©able.
Recherchez le mot de passe et connectez-vous dans l'interface Web de votre hébergement et connectez-vous.
Ensuite, installez Docker. Il y a une excellente instruction ici , ci-dessous je vais briĂšvement en donner les commandes (si soudainement vous ne l'avez pas
sudo
, n'oubliez pas de l'installer apt-get install sudo
par dessous su
):
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
VĂ©rifions le travail de docker:
docker run hello-world
Générer des clés
Vous devez d'abord générer des clés SSL. Vous pouvez suivre le chemin facile et difficile. Pour obtenir des instructions sur le chemin physique (canonique), consultez la documentation Docker . Mais les bonnes personnes ont tout mis dans un conteneur <10 Mo.
CrĂ©ons un dossier pour le dĂ©but, oĂč nous allons tout stocker. Les dossiers peuvent ĂȘtre n'importe quoi. Le premier (
/etc/docker/ssl
) stocke les clés secrÚtes, le second ( ~/.docker
) les clés d'accÚs.
sudo mkdir -p /etc/docker/ssl
mkdir -p ~/.docker
Commençons par créer des certificats client et CA dans le dossier local
docker run --rm -v ~/.docker:/certs \
paulczar/omgwtfssl
Créons des certificats de serveur à l'aide de l'autorité de certification générée ci-dessus. Indiquez ici, séparées par des virgules, les adresses IP par lesquelles vous accéderez au serveur. Dans notre cas, n'oubliez pas de spécifier l'IP de votre serveur là -bas!
sudo cp ~/.docker/ca.pem /etc/docker/ssl/ca.pem
chown -R $USER ~/.docker
docker run --rm -v /etc/docker/ssl:/server \
-v ~/.docker:/certs \
-e SSL_IP=127.0.0.1,172.17.8.101,YOUR_IP \
-e SSL_DNS=docker.local -e SSL_KEY=/server/key.pem \
-e SSL_CERT=/server/cert.pem paulczar/omgwtfssl
Configuration du démon docker
La tùche principale à ce stade est de pousser les arguments de ligne de commande avec les paramÚtres dont nous avons besoin lors du démarrage de docker. Comment vous le faites n'est pas important, sur Ubuntu vous pouvez le faire comme ceci:
1. Modifiez le fichier avec
/etc/default/docker
votre éditeur préféré
nano /etc/default/docker
Et ajoutez la variable `DOCKER_OPTS` à la fin. N'oubliez pas d'y insérer votre adresse IP externe
DOCKER_OPTS="-H=YOUR_IP:2376 -H unix:///var/run/docker.sock --tlsverify --tlscacert=/etc/docker/ssl/ca.pem --tlscert=/etc/docker/ssl/cert.pem --tlskey=/etc/docker/ssl/key.pem"
2. Ajoutez des arguments pour démarrer le service. Sur Ubuntu, le fichier de paramÚtres de démarrage est
/lib/systemd/system/docker.service
. Ajoutez une ligne Ă la sous-section [Service]
:
EnvironmentFile=/etc/default/docker
Et nous changeons la commande de lancement cĂŽte Ă cĂŽte:
ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS
Oui, le point 1 Ă©tait facultatif, les arguments de commande pouvaient ĂȘtre insĂ©rĂ©s ici, mais il y en a beaucoup et il n'est pas pratique d'avoir une commande volumineuse Ă exĂ©cuter dans le fichier de service.
3. Redémarrez le démon
sudo systemctl daemon-reload
sudo systemctl restart docker
4. Vérifiez dans les journaux du démon que tout fonctionne:
journalctl -u docker.service -f
5. Essayons de nous connecter via tls:
export DOCKER_HOST=tcp://YOUR_IP:2376
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=~/.docker
docker info
Travail!
Configuration sur le client
Avant de commencer à configurer les clients, vous devez télécharger le dossier des certificats sur votre ordinateur. Vous pouvez le faire de n'importe quelle maniÚre pratique. Par exemple, via `scp`:
Sur une machine distante:
mkdir /tmp/cert-for-docker && cp -v ~/.docker/{ca,cert,key}.pem /tmp/cert-for-docker
Sur la machine locale:
scp -r root@YOUR_IP:/tmp/cert-for-docker ~/.docker
Ensuite, utilisez ce dossier pour configurer votre client docker.
CLI de Mac OS
Ici, le paramĂštre se rĂ©sume au fait que vous devez enregistrer les variables dans votre environnement et tout fonctionnera. Cependant, la question se pose: «OĂč puis-je trouver un client nu? Nous n'avons pas besoin du client poids lourd officiel de 2 Go fourni avec Docker Engine, n'est-ce pas? "
Il y a une solution! Modern Docker a longtemps été divisé en parties client et serveur. Vous pouvez télécharger des binaires client séparés compilés pour macos. L'instruction officielle est ici , mais je vais donner un court extrait ici:
1. Téléchargez les derniers binaires ou ceux correspondant à votre serveur (vous pouvez les extraire avec une commande
docker info
) à partir du lien et décompressez
2. Copiez les binaires dans le dossier
/usr/local/bin/
pour travailler globalement:
sudo cp docker/docker /usr/local/bin/
3. Nous nous enregistrons dans
~/.bashrc
ou les ~/.zshrc
variables d'environnement nécessaires. N'oubliez pas d'insérer votre adresse IP et le chemin d'accÚs au dossier avec les certificats :
export DOCKER_HOST=tcp://YOUR_IP:2376
export DOCKER_CERT_PATH=PATH_TO_CERT
export DOCKER_TLS_VERIFY=1
4. Redémarrez l'ordinateur (Schaub bien sûr), vérifiez:
docker info
docker run hello-world
Beauté!
IDE Jetbrains (PyCharm, IDEA, Android Studio, etc.)
Les studios Jetbrains prennent en charge docker via tls hors de la boßte. Ce paramÚtre est situé dans
Preference->Build, Execution, Deployment->Docker->+
. Vous devez y sélectionner TCP socket
et saisir vos coordonnées. Cependant, il y a un hic.
Si tout est fait comme prévu, une erreur apparaßtra:
RĂ©ponse d'erreur du dĂ©mon: le client a envoyĂ© une requĂȘte HTTP Ă un serveur HTTPS.Ou
erreurs jolies informations d'impression
Connexion impossible: Ă©tat 400: le client a envoyĂ© une requĂȘte HTTP Ă un serveur HTTPSIl est nĂ©cessaire de prescrire explicitement Ă notre studio le protocole que nous utilisons
https
:
VOTRE_IP : 2376Tout devrait bien fonctionner par la suite.
Bonus (Portainer)
Afin de suivre efficacement les conteneurs en cours d'exĂ©cution et dĂ©jĂ utilisĂ©s, j'ai installĂ© Portainer sur ce serveur. Il doit ĂȘtre placĂ© sur deux lignes:
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
AprĂšs cela, une
YOUR_IP:9000
belle interface Web s'accrochera et vous pourrez voir les conteneurs en cours d'exécution et tués. Tu te souviens comment nous avons commencé hello-world
? Il est ici et vous pouvez le nettoyer directement depuis l'interface.
Portainer lui-mĂȘme peut ĂȘtre connectĂ© Ă n'importe quelle machine Docker et gĂ©rer les conteneurs Docker de toutes vos machines Ă partir d'un seul endroit. La mĂ©trique (Grafana + Prometheus + Alertes) peut ĂȘtre dĂ©finie tout aussi facilement avec deux commandes (n'oubliez pas d'installer
gi
et docker-compose
):
git clone https://github.com/stefanprodan/dockprom && cd dockprom
ADMIN_USER=admin ADMIN_PASSWORD=admin docker-compose up -d
Uniquement pour le stockage, vous devez passer
sum(node_filesystem_free_bytes{fstype="aufs"})
Ă sum(node_filesystem_free_bytes{fstype="ext4"})
Conclusion
Quand j'ai achetĂ© un ordinateur portable, je ne me suis pas laissĂ© aller dans l'espoir qu'il me suffirait pour n'importe quelle tĂąche, d'autant plus que cela me suffirait pour le dĂ©veloppement Java / Android. Mais j'ai Ă©tĂ© agrĂ©ablement surpris, jusqu'Ă prĂ©sent tous mes projets, personnels et juste open-source, volent dans l'IDE. Cependant, j'ai rĂ©alisĂ© que malgrĂ© tout mon amour pour cette machine Ă Ă©crire, cela ne supprimerait pas Docker. J'ai Ă©tĂ© trĂšs heureux de le configurer une fois sur un serveur docker distant. Pendant le processus de dĂ©veloppement, il est absolument imperceptible que le serveur ne soit pas local. Je ne ressens aucune restriction, câest tout de mĂȘme de faire fonctionner Docker sans Internet avant que cela nâait pas de sens. En gĂ©nĂ©ral, je suis trĂšs satisfait. -1 raison d'acheter un ordinateur portable puissant et lourd.
De plus, les frais généraux de Docker pour Linux sont minimes, vous pouvez donc louer une voiture pour 240 roubles par mois auprÚs de RuVDS en Fédération de Russie (et avec une réduction en utilisant le code promotionnel HABR-10% et encore moins) et ne vous inquiétez pas du ping et de l'impact des applications serveur sur l'interface utilisateur. De plus, il existe une adresse IP externe (la possibilité d'afficher les clients et de conserver le sable de développement), un VPN privé et une fiabilité de premier ordre. Dans l'ensemble, je suis satisfait.
Ressources:
- Article de 2016 sur la personnalisation pour CoreOS
- API Docker Remote sans chiffrement
- Site Docker et toutes les ressources liĂ©es Ă l'article lui-mĂȘme