Je dois avouer. Je déteste le docker. De toute mon âme. C'est le pire logiciel que j'ai vu au cours des 10 dernières années.
D'une part, je respecte vraiment l'entreprise du même nom. Les gars de Docker Inc. conteneurisation vraiment popularisée. Maintenant, seuls les paresseux ne la connaissent pas. D'un autre côté, ils n'ont rien inventé de fondamentalement nouveau - la conteneurisation existait depuis plus de 30 ans au moment où Docker a «tiré» (à partir de chroot, souvenez-vous des prisons et des zones, et enfin des espaces de noms et des groupes de contrôle).
Cool ce docker accélère vraiment le développement à plusieurs reprises. Si vous le conduisez correctement, même sans perte de qualité. Dans tous les cas, docker est là, vous ne pouvez pas vous en éloigner et vous devez l'utiliser.
Mais pourquoi ce produit avec un logo de baleine évoque-t-il des émotions aussi diverses? Ci-dessous, je vais énumérer les moments à partir desquels ils bombardent. Il est possible que le lecteur soit en désaccord ou, au contraire, trouve des choses qu'il ne connaissait pas et trouveraient intéressantes.
Avertissement: tout ce qui est écrit ci-dessous est l'opinion personnelle de l'auteur et peut refléter la réalité ou ne pas refléter la réalité. Le matériel est strictement provocateur et l'objectif principal n'est pas d'humilier ou d'offenser qui que ce soit, mais plutôt de faire tourner la tête et de réaliser les profondeurs (c).
docker et pare-feu
Lors de la création de conteneurs sur des réseaux pontés, Docker ajoute ses propres règles de pare-feu sur le système. Cela conduit à des effets très intéressants. Tout d'abord, il devient tout simplement impossible de réinitialiser les chaînes de netfilter (cela peut se produire lorsque vous réappliquez vos règles), car après cela, les conteneurs docker sont cassés et le démon docker doit être redémarré. De plus, la signification des utilitaires iptables-save / restore est perdue, car en fait, ils enregistrent les règles, mais pas celles qui en ont besoin - vous devez filtrer leur sortie. Une autre tâche très intéressante consiste à combiner docker et tout ce qui tente de gérer indépendamment le pare-feu - que ce soit un client / serveur VPN ou un système de gestion de configuration qui veille avec vigilance à ce que les règles correspondent à ce que l'administrateur système a décrit.
Jusqu'à récemment, il n'y avait aucun moyen de contrôler de manière fiable et répétitive l'accès réseau au conteneur via le pare-feu, mais les développeurs ont ajouté une chaîne DOCKER-USER distincte, mais pour être honnête, cela n'a aucun sens.
: , , — . , 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 — 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 , — .