Bonjour à tous!
Je veux vraiment commencer le sujet tout de suite, mais il vaut mieux raconter un peu mon histoire:
Entrée
Je suis un programmeur avec une expérience dans le développement d'applications frontales à une seule page, scala / java et nodejs sur le serveur.
Depuis un certain temps (cela fait exactement deux ou trois ans), j'étais d'avis que le docker est une manne céleste et un outil très cool en général, et absolument tous les développeurs devraient pouvoir l'utiliser. Et de cela, il s'ensuit que chaque développeur devrait avoir un docker sur la machine locale. Qu'en est-il de mon avis, vous regardez à travers les postes vacants qui sont affichés sur le même hh. À chaque seconde, il est fait mention de docker et si vous en êtes propriétaire - ce sera votre avantage concurrentiel;)
Sur mon chemin, j'ai rencontré de nombreuses personnes, avec leurs différentes attitudes envers docker et son écosystème. Certains ont dit que c'est une chose pratique qui garantit la multiplateforme. Le deuxième ne comprenait pas pourquoi ils devaient courir dans des conteneurs et à quoi en profiter, le troisième s'en fichait du tout et ils ne fumaient pas (je viens d'écrire le code et je suis rentré chez moi - je les envie, d'ailleurs :))
Raisons d'utilisation
Pourquoi ai-je utilisé Docker? Probablement pour les raisons suivantes:
- lancement de base de données, 99% des applications les utilisent
- lancer nginx pour distribuer le frontend et le proxy au backend
- vous pouvez emballer l'application dans une image docker, donc mon application fonctionnera où que se trouve docker, le problème de distribution est résolu immédiatement
- découverte de service prête à l'emploi, vous pouvez faire des microservices, chaque conteneur (connecté à un réseau commun) peut facilement atteindre un autre par alias, très pratique
- c'est amusant de créer un conteneur et de "jouer" dedans.
Ce que je n'ai toujours PAS aimé avec Docker:
- pour que mon application fonctionne, un docker lui-même est nécessaire sur le serveur. Et pourquoi ai-je besoin de cela si mes applications fonctionnent sur jre ou nodejs et que leur environnement est déjà sur le serveur?
- () , docker , - registry https, docker cli https. … , ,
docker save
scp … . "" , docker-compose
. . . . Docker-compose
, . , . .- , Dockerfile , , , dockerhub , -
docker-compose
. , docker , HR : " docker " - docker : postgresql, kafka, redis. , , . , . , docker, , - ?
- . , docker volume data container
deprecated
? , uid gid id , , , root. volume
, /usr/*
uid gid . , : " ?"
, docker- : , , Makefile, docker . docker-compose, docker. docker-compose up
, , build
, . , — . docker.
Ansible
( ), DevOps , , docker. :
- docker iptables ( daemon.json)
- docker
- docker daemon , ,
- docker
- docker , Ansible
— Ansible. - , . ! : Ansible docker , , ., , ! — Makefile docker-compose , yaml . loop
, when
, etc.
Docker
ssh . , "" . , , VirtualBox. ( ), , . , , docker .
postgresql:
ssh -L 9000:localhost:5432 user@example.com
. , postgresql, c docker . docker, . — ssh !
, SSH — VPN! OpenVPN VPN, . !
, AWS, GoogleCloud , , ! , , . , gcloud, , .
localhost Alpine docker . - , .
: virtualbox. docker .
docker
, , docker . Docker docker . docker docker .
-, docker ?
— , docker , . , dockerhub ? , nginx, 100500 . nginx, docker nginx .
tgz, - docker, Dockerfile tgz, , tgz. , docker , , tgz . docker
: docker registry, S3 google drive/dropbox
Docker CI
, , . , , . - , ( — ).
docker CI . — docker ? , Ansible , nodejs, php, jdk, ssh . , ?
, , docker . CI docker :
- docker . dockerfile.
- 90%, - ssh , , docker .
- , . , , — .
docker ( — , xD ). java , . nodejs , nvm.
docker , ( , ). "" , . , , CI, . DevOps .
docker , . . , .
docker : docker
- docker, :
- docker
- , Dockefile docker-compose
PS:
, , !