Saya harus mengaku. Aku benci buruh pelabuhan. Dengan seluruh jiwaku. Ini adalah perangkat lunak terburuk yang pernah saya lihat dalam 10 tahun terakhir.
Di satu sisi, saya sangat menghargai perusahaan dengan nama yang sama. Orang-orang dari Docker Inc. containerisasi benar-benar dipopulerkan. Sekarang hanya orang malas yang tidak tahu tentangnya. Di sisi lain, mereka tidak menemukan sesuatu yang pada dasarnya baru - kemasukan telah ada selama lebih dari 30 tahun pada saat Docker "dipecat" (mulai dari chroot, ingat penjara dan zona, dan akhirnya ruang nama & grup).
Keren bahwa buruh pelabuhan benar-benar mempercepat pengembangan berkali-kali. Jika Anda melakukannya dengan benar, maka bahkan tanpa kehilangan kualitas. Bagaimanapun, buruh pelabuhan ada di sini, Anda tidak dapat menghindarinya dan Anda harus menggunakannya.
Tetapi mengapa produk dengan logo ikan paus ini membangkitkan emosi yang begitu beragam? Di bawah ini saya akan daftar momen-momen dari mana mereka mengebom. Mungkin saja pembaca akan tidak setuju atau, sebaliknya, akan menemukan beberapa hal yang tidak diketahuinya dan akan menarik.
Penafian: semua yang ditulis di bawah ini adalah pendapat pribadi penulis dan dapat mencerminkan kenyataan atau tidak mencerminkan kenyataan. Materi ini sangat provokatif dan tujuan utamanya bukan untuk mempermalukan atau menyinggung siapa pun, tetapi untuk membuat orang menoleh dan menyadari kedalaman (c).
buruh pelabuhan dan firewall
Saat membuat kontainer di jaringan yang dijembatani, buruh pelabuhan menambahkan aturan firewall sendiri pada sistem. Ini mengarah ke efek yang sangat menarik. Pertama, menjadi tidak mungkin untuk mengatur ulang rantai netfilter (ini bisa terjadi ketika Anda menerapkan kembali aturan Anda), karena setelah itu, kontainer buruh pelabuhan rusak dan daemon buruh pelabuhan harus dimulai kembali. Juga, makna dalam utilitas iptables-save / restore hilang, karena pada kenyataannya, mereka menyimpan aturan, tetapi bukan aturan yang perlu - Anda harus memfilter outputnya. Tugas lain yang sangat menarik adalah untuk menggabungkan buruh pelabuhan dan apa pun yang mencoba mengelola firewall secara independen - baik itu klien VPN / server atau sistem manajemen konfigurasi yang dengan waspada memastikan bahwa aturannya sesuai dengan yang dijelaskan oleh administrator sistem.
Sampai saat ini, tidak ada cara untuk secara andal dan berulang-kali mengendalikan akses jaringan ke wadah melalui firewall, tetapi pengembang menambahkan rantai DOCKER-USER yang terpisah, tetapi jujur saja, tidak ada artinya di dalamnya.
: , , — . , 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 , — .