Hola a todos!
Realmente quiero comenzar el tema de inmediato, pero es mejor contar un poco sobre mi historia:
Entrada
Soy un programador con experiencia en el desarrollo de aplicaciones frontend de una sola página, scala / java y nodejs en el servidor.
Durante bastante tiempo (han pasado exactamente un par, tres años), opiné que Docker es maná del cielo y una herramienta genial en general, y absolutamente todos los desarrolladores deberían poder usarlo. Y de esto se deduce que cada desarrollador debe tener docker en la máquina local. De qué se trata mi opinión, usted mira a través de las vacantes que se publican en el mismo hh. En cada segundo hay una mención sobre Docker y, si lo posee, esta será su ventaja competitiva;)
En mi camino, me encontré con muchas personas, con sus diferentes actitudes hacia Docker y su ecosistema. Algunos dijeron que esto es algo conveniente que garantiza multiplataforma. El segundo no entendía por qué deberían ejecutarse en contenedores y qué beneficio de esto, al tercero no le importó en absoluto y no se vaporizaron (solo escribí el código y volví a casa; por cierto, los envidio :))
Razones para su uso
¿Por qué usé docker? Probablemente por las siguientes razones:
- lanzamiento de la base de datos, el 99% de las aplicaciones las usan
- Inicie nginx para distribuir frontend y proxy para backend
- puede empaquetar la aplicación en una imagen acoplable, por lo que mi aplicación funcionará donde sea que esté, el problema de distribución se resuelve de inmediato
- servicio de descubrimiento listo para usar, puede hacer microservicios, cada contenedor (conectado a una red común) puede llegar fácilmente a otro por alias, muy conveniente
- es divertido crear un contenedor y "jugar" en él.
Lo que NO siempre me gustó de Docker:
- Para que mi aplicación funcione, se necesita el Docker en el servidor. ¿Y por qué necesito esto si mis aplicaciones se ejecutan en jre o nodejs y el entorno para ellas ya está en el servidor?
- () , 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:
, , !