Hallo allerseits!
Ich möchte das Thema wirklich sofort beginnen, aber es ist besser, ein wenig über meine Geschichte zu erzählen:
Eintrag
Ich bin ein Programmierer mit Erfahrung in der Entwicklung von Frontend-Anwendungen für eine Seite, Scala / Java und NodeJS auf dem Server.
Seit geraumer Zeit (es sind genau ein paar - drei Jahre vergangen) war ich der Meinung, dass Docker ein Manna vom Himmel und ein sehr cooles Tool im Allgemeinen ist und absolut jeder Entwickler in der Lage sein sollte, es zu verwenden. Daraus folgt, dass jeder Entwickler Docker auf dem lokalen Computer haben sollte. Worum geht es meiner Meinung nach? Sie sehen sich die offenen Stellen an, die auf derselben hh ausgeschrieben sind. In jeder Sekunde wird Docker erwähnt und wenn Sie es besitzen, ist dies Ihr Wettbewerbsvorteil;)
Auf meinem Weg traf ich viele Menschen mit ihren unterschiedlichen Einstellungen gegenüber Docker und seinem Ökosystem. Einige sagten, dass dies eine bequeme Sache ist, die plattformübergreifend garantiert. Der zweite verstand nicht, warum sie in Containern laufen sollten und was davon profitierte, der dritte kümmerte sich überhaupt nicht darum und sie dampften nicht (schrieb einfach den Code und ging nach Hause - ich beneide sie übrigens :))
Gründe für die Verwendung
Warum habe ich Docker verwendet? Wahrscheinlich aus folgenden Gründen:
- Datenbankstart, 99% der Anwendungen verwenden sie
- Starten Sie nginx, um Frontend und Proxy an Backend zu verteilen
- Sie können die Anwendung in ein Docker-Image packen, sodass meine Anwendung überall dort funktioniert, wo Docker ist. Das Verteilungsproblem ist sofort gelöst
- Bei der sofortigen Erkennung von Diensten können Sie Microservices durchführen. Jeder Container (der mit einem gemeinsamen Netzwerk verbunden ist) kann über einen Alias problemlos einen anderen erreichen, was sehr praktisch ist
- Es macht Spaß, einen Container zu erstellen und darin herumzuspielen.
Was mir an Docker immer NICHT gefallen hat:
- Damit meine Anwendung funktioniert, wird Docker selbst auf dem Server benötigt. Und warum brauche ich das, wenn meine Anwendungen auf jre oder nodejs ausgeführt werden und sich die Umgebung für sie bereits auf dem Server befindet?
- () , 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:
, , !