码头工人的自白

我必须承认 我讨厌码头工人。 用我的全部灵魂。 这是我近十年来最糟糕的软件。


一方面,我非常尊重同名公司。 Docker Inc.的人 真正普及了集装箱化。 现在只有懒惰的人不知道她。 另一方面,他们并没有发明任何根本性的新技术— Docker被“解雇”时,容器化已经存在了30多年(从chroot开始,请记住jail和zone,最后是名称空间和cgroups)。


很棒的码头工人确实加速了很多倍开发。 如果操作正确,则不会损失质量。 无论如何,泊坞窗就在这里,您无法摆脱它,必须使用它。


但是,为什么带有鲸鱼徽标的产品会引起如此多样的情感呢? 在下面,我将列出他们炸弹的瞬间。 读者可能会不同意,或者相反,会发现一些他不知道的事情,并且会感到有趣。


免责声明: 以下所有内容均为作者的个人观点,可能反映现实或不反映现实。 这些材料本质上是挑衅性的,主要目的不是侮辱或冒犯任何人,而是让人们转过头来实现深度(c)。


码头工人和防火墙


在桥接网络上创建容器时,docker在系统上添加自己的防火墙规则。 这会产生非常有趣的效果。 首先,重置netfilter链变得完全不可能(在重新应用规则时会发生这种情况),因为 之后,Docker容器将损坏,并且必须重新启动Docker守护程序。 另外,iptables-save / restore实用程序中的含义也丢失了,因为 实际上,它们保存规则,而不保存需要的规则-您必须过滤其输出。 另一个非常有趣的任务是将docker与任何试图独立管理防火墙的东西结合在一起-无论是VPN客户端/服务器还是警惕地确保规则与系统管理员描述相符的配置管理系统。


直到最近,还没有办法可靠且反复地控制通过防火墙对容器的网络访问,但是开发人员添加了单独的DOCKER-USER链,但是老实说,它没有意义。


: , , — . , 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/zh-CN467607/


All Articles