اعتراف عامل الميناء كاره

يجب أن أعترف. أنا أكره عامل ميناء. مع كل روحي. هذا هو أسوأ برنامج رأيته في السنوات العشر الماضية.


من ناحية ، أنا أحترم الشركة التي تحمل الاسم نفسه. رفاق من شركة دوكر حاويات شعبية حقا. الآن فقط كسول لا يعرف عنها. من ناحية أخرى ، لم يخترعوا أي شيء جديد بشكل أساسي - فقد كان وجود الحاوية منذ أكثر من 30 عامًا في ذلك الوقت "أطلق" Docker (بدءًا من chroot ، وتذكر السجون والمناطق ، وأخيراً مساحات الأسماء والمجموعات).


رائع أن عامل ميناء يسرع حقا التنمية عدة مرات. إذا قمت بإجراء ذلك بشكل صحيح ، ثم حتى دون فقدان الجودة. في أي حال ، عامل الميناء موجود هنا ، لا يمكنك الابتعاد عنه ويجب استخدامه.


ولكن لماذا هذا المنتج مع شعار الحوت تثير هذه المشاعر المتنوعة؟ أدناه سأذكر تلك اللحظات التي يقصفون منها. من المحتمل أن لا يوافق القارئ أو ، على العكس من ذلك ، سيجد بعض الأشياء التي لم يعرفها وسيجدها ممتعة.


إخلاء المسئولية: كل ما هو مكتوب أدناه هو رأي شخصي للمؤلف وقد يعكس الواقع أو لا يعكس الواقع. المواد استفزازية صارمة والهدف الرئيسي ليس إذلال أي شخص أو الإساءة إليه ، بل جعل الناس يديرون رؤوسهم ويدركون الأعماق (ج).


عامل ميناء وجدار الحماية


عند إنشاء حاويات على الشبكات الموصلة ، يضيف عامل الميناء قواعد جدار الحماية الخاصة به على النظام. هذا يؤدي إلى آثار مثيرة للاهتمام للغاية. أولاً ، يصبح من المستحيل إعادة تعيين سلاسل netfilter (يمكن أن يحدث هذا عند إعادة تطبيق القواعد الخاصة بك) ، لأن بعد ذلك ، يتم تكسير حاويات الرصيف ويجب إعادة تشغيل البرنامج الخفي. أيضًا ، يتم فقد المعنى في الأدوات المساعدة iptables-save / restore ، لأن في الحقيقة ، هم يحفظون القواعد ، لكن ليس القواعد التي تحتاج إلى - عليك تصفية ناتجهم. مهمة أخرى مهمة للغاية هي الجمع بين عامل الإرساء وأي شيء يحاول إدارة جدار الحماية بشكل مستقل - سواء كان عميل / خادم 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/ar467607/


All Articles