Confissão do ódio dos estivadores

Eu tenho que confessar. Eu odeio estivador. Com toda a minha alma. Este é o pior software que eu já vi nos últimos 10 anos.


Por um lado, eu realmente respeito a empresa com o mesmo nome. Caras de Docker Inc. containerização realmente popularizada. Agora, apenas o preguiçoso não sabe sobre ela. Por outro lado, eles não inventaram nada fundamentalmente novo - a conteinerização existia há mais de 30 anos no momento em que o Docker "disparou" (a partir do chroot, lembre-se de cadeias e zonas e, finalmente, namespaces e cgroups).


Legal que o docker realmente acelera o desenvolvimento várias vezes. Se você conduzi-lo corretamente, mesmo sem perda de qualidade. De qualquer forma, a janela de encaixe está aqui, você não pode se afastar dela e precisa usá-la.


Mas por que esse produto com o logotipo da baleia evoca emoções tão diversas? Abaixo vou listar aqueles momentos a partir dos quais eles bombardeiam. É possível que o leitor discorde ou, pelo contrário, encontre algumas coisas que ele não sabia e que acharia interessantes.


Isenção de responsabilidade: tudo o que está escrito abaixo é da opinião pessoal do autor e pode refletir a realidade ou não. O material é estritamente provocativo por natureza e o objetivo principal não é humilhar ou ofender ninguém, mas fazer as pessoas virar a cabeça e perceber as profundezas (c).


janela de encaixe e firewall


Ao criar contêineres em redes com ponte, o docker adiciona suas próprias regras de firewall no sistema. Isso leva a efeitos muito interessantes. Em primeiro lugar, torna-se impossível redefinir as cadeias de filtros de rede (isso pode acontecer quando você reaplicar suas regras), porque depois disso, os contêineres do docker são quebrados e o daemon do docker deve ser reiniciado. Além disso, o significado nos utilitários iptables-save / restore é perdido, porque de fato, eles salvam as regras, mas não as que precisam - você precisa filtrar a saída deles. Outra tarefa muito interessante é combinar o docker e qualquer coisa que tente gerenciar independentemente o firewall - seja um cliente / servidor VPN ou um sistema de gerenciamento de configuração que garanta que as regras correspondam ao que o administrador do sistema descreveu.


Até recentemente, não havia como controlar de maneira confiável e repetida o acesso à rede do contêiner por meio do firewall, mas os desenvolvedores adicionaram uma cadeia DOCKER-USER separada, mas, para ser sincero, não faz 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/pt467607/


All Articles