Confesión del enemigo del estibador

Tengo que confesar Odio a Docker. Con toda mi alma Este es el peor software que he visto en los últimos 10 años.


Por un lado, realmente respeto a la compañía del mismo nombre. Chicos de Docker Inc. contenedorización muy popularizada. Ahora solo el perezoso no sabe de ella. Por otro lado, no inventaron nada fundamentalmente nuevo: la contenedorización había existido durante más de 30 años en el momento en que Docker "disparó" (comenzando desde chroot, recuerde cárceles y zonas, y finalmente espacios de nombres y grupos c).


Genial, esa ventana acoplable realmente acelera el desarrollo muchas veces. Si lo lleva a cabo correctamente, incluso sin pérdida de calidad. En cualquier caso, Docker está aquí, no puedes escapar de él y tienes que usarlo.


Pero, ¿por qué este producto con el logotipo de una ballena evoca emociones tan diversas? A continuación enumeraré aquellos momentos desde los que bombardean. Es posible que el lector no esté de acuerdo o, por el contrario, encuentre algunas cosas que no sabía y que encontraría interesantes.


Descargo de responsabilidad: todo lo escrito a continuación es la opinión personal del autor y puede reflejar la realidad o no reflejar la realidad. El material es estrictamente provocativo y el objetivo principal no es humillar u ofender a nadie, sino más bien hacer que las personas vuelvan la cabeza y se den cuenta de las profundidades (c).


Docker y firewall


Al crear contenedores en redes puenteadas, Docker agrega sus propias reglas de firewall en el sistema. Esto lleva a efectos muy interesantes. Primero, es imposible restablecer las cadenas de filtro de red (esto puede suceder cuando vuelve a aplicar sus reglas), porque después de eso, los contenedores de la ventana acoplable se rompen y el demonio de la ventana acoplable debe reiniciarse. Además, se pierde el significado en las utilidades iptables-save / restore, porque de hecho, guardan las reglas, pero no las que necesitan; debe filtrar su salida. Otra tarea muy interesante es combinar la ventana acoplable y cualquier cosa que intente administrar el firewall de forma independiente, ya sea un cliente / servidor VPN o un sistema de administración de configuración que garantice que las reglas se correspondan con lo que el administrador del sistema describió.


Hasta hace poco, no había forma de controlar de manera confiable y repetida el acceso de la red al contenedor a través del firewall, pero los desarrolladores agregaron una cadena DOCKER-USER separada, pero para ser sincero, no tiene sentido.


: , , — . , INPUT , NAT ( CentOS docker run ... -p XX:YY)


, , , — docker- , , . , , .. docker'.


docker


docker- docker-bridge docker0, , - . (!) DNS . ( docker network create docker-compose). . 172.16.0.0/12. , , . — . , bip , docker-compose , .. .


-p --publish, network host mode — 5% , … :-) - , docker NAT.


docker —


, , ? . — "" aufs, overlay2, .. . — . volume image, - . , overlay2 . docker info .


— ! - -. ( ) — . , -.


docker hub —


Docker Inc. — Docker Hub. , . , ( ). , ? , , - . — root' . , , . — , , .


— . , — . , - ( , ). — , . — — python, ruby, node.js. golang java — .


? — , — — registry -. ( , , , , k8s).



registry vs repository, bind mount vs volume ( docker run ... -v, ), tag vs image name, EXPOSE vs expose vs ports, volumes (, ...). . , , .. . , , .. , .



— docker . . . . . systemd unit' (, — - ), bash.


, docker-compose. , . depends_on, — , .. ( docker-compose up) , . , ( 2.4 docker-compose).


docker-compose


docker-compose — 2.* 3.*. . 3.* docker swarm . .



100500 docker docker-compose. . , - docker, Docker Inc. . "" docker.io docker-ce. , , , . Docker


, , docker Ubuntu snap. - . . , docker .


docker-compose — pip — . -, docker-compose ( ). -, python (! ), docker-compose (, — , , ). — — . ( — md5sum).


docker


docker — , . , docker agile- : . , . — , - root . , :


docker run --rm -it -v /:/rootfs ubuntu bash


, . , . (), .


, , bind mount ( -), . , , , , hot reload' . , — bind mount docker run ... -v ... root . bind mount (docker run ... --mount ...), , . ? , :-) — volume ( /var/lib/docker/volumes


, docker . , , CVE .


docker -


linux-kind . , .. docker namespaces cgroups . ? , Mac Windows docker Docker Desktop , volume ( , .. ). , .


docker


100% . iops, . , , — , . , , . — dentry


docker


docker json-file . /var/lib/containers/<hash>/<hash>-json.log . , ? . " "
— journald, docker logs ( !?). — , Docker-EE, ?
— ? . , , .


docker


. , docker . , systemd-nspawn. — , Vagrant, VirtualBox lxc/lxd, . docker , kubernetes — containerd, .



: docker-compose — YAML docker-compose- ? docker swarm (kubernetes ) — . Docker Inc. ( ), (*) , . .


The END


? — docker — . , . . docker — . , , cri-o/podman/buildah, . FireCracker, ( ) ( ).


, .


(*) — docker-template, multi-stage docker build, buildkit , — .

Source: https://habr.com/ru/post/467607/


All Articles