How Docker Works - Intro to Namespaces

Поділитися
Вставка
  • Опубліковано 8 тра 2024
  • Let's figure out how Docker works! We will investigate docker by tracing the syscalls to find the Linux Kernel feature called Namespaces. We also learn about the different ones like process id, network or mount namespaces.
    docker → dockerd → containerd → runC → unshare syscall
    Part 1: • Introduction to Docker...
    LWN Article: lwn.net/Articles/531114/
    Docker Example: github.com/LiveOverflow/pwn_d...
    =[ ❤️ Support ]=
    → per Video: / liveoverflow
    → per Month: / @liveoverflow
    =[ 🐕 Social ]=
    → Twitter: / liveoverflow
    → Website: liveoverflow.com/
    → Subreddit: / liveoverflow
    → Facebook: / liveoverflow

КОМЕНТАРІ • 192

  • @PwnFunction
    @PwnFunction 4 роки тому +306

    Internals always fascinates me.

    • @carlosgarcialalicata
      @carlosgarcialalicata 4 роки тому +1

      you should make a playlist of cool internals, and share it with me :)

    • @harelr5041
      @harelr5041 2 роки тому +1

      Jack the ripper was fascinated as well.

    • @aspirohk3558
      @aspirohk3558 9 місяців тому

      I swear

    • @aspirohk3558
      @aspirohk3558 9 місяців тому

      @@harelr5041 where is that? I soooooo have to watch that

  • @puneetkumarsingh1484
    @puneetkumarsingh1484 3 місяці тому +7

    So many videos on internet but this will have a special place amongst all of them since none of them deep dive with such clarity. I finally understand the magic behind docker and more confident in using it. Thank you very much!

  • @magicandmagik
    @magicandmagik 4 роки тому +17

    "docker is just a fancy interface around this unshare (system call) namespace feature (of the linux kernel)."
    This video is amazing, thanks

  • @jousboxx9532
    @jousboxx9532 4 роки тому +6

    Great video! The effort put into nifty graphics, scripting, editing and overall quality is *IMMENSELY* appreciated. Most videos on topics like this are just one take (with a bad microphone to boot). Videos like this make containers more accessible and understandable, especially for inexperienced users. You got yourself a new sub!

  • @PrashantSharma-ql4yb
    @PrashantSharma-ql4yb 2 роки тому +8

    This is what I call a high quality content. Very valuable. Thanks for putting in so much effort to create this.

  • @kaprikornz
    @kaprikornz 4 роки тому

    Excellent video! there are a lot of videos on docker out there but none come close to explaining the internals like you do! Thank you so much!

  • @lxk3il
    @lxk3il 4 роки тому

    Great video! I am currently also working with docker and in the beginning had the same problem that I lost overview. Your video shows in a very good way what an important role the namespaces play in this process! Thanks a lot for that!

  • @manuelberrueta
    @manuelberrueta 4 роки тому

    Great job on going into the lower level stuff behind the containers. You truly have a gift!

  • @vilks_jan
    @vilks_jan 4 роки тому

    Great video! Worked a lot with docker lately, yet I haven't really done some digging into how it works. I like your thought process and your problem solving abilities. Thank you for yet another amazing video!

  • @ivanocj
    @ivanocj 4 роки тому +117

    One of your best videos ever, congrats! Sweet spot when explaining Docker internals. I just shared with my coworkers. Thanks.

  • @khaledismaeel9710
    @khaledismaeel9710 2 роки тому +3

    Really liked how you demonstrated your search inside the docs; it really demystifies the process for novice programmers.

  • @RohanKumar-wf9sc
    @RohanKumar-wf9sc 3 роки тому

    Really one of your best videos on how internals work. These things always fascinates me.

  • @biyancuh
    @biyancuh Рік тому

    Just wanna say absolutely love the big red arrow which forces me to read along with you and not ahead or before like one would with subtitles!

  • @nerdy_cat
    @nerdy_cat Місяць тому

    This is what I want to see when I search for something. I wish more people would dive deep into things like you do in this video.

  • @BlackHermit
    @BlackHermit 4 роки тому +6

    Great stuff, namespaces are a really cool feature and it's worth an awesome explanation by one of today's greatest processes.

  • @mikaell.5770
    @mikaell.5770 4 роки тому

    Thank you so much!! Your tips to analyse what's going on inside are priceless.

  • @MeanTheBean
    @MeanTheBean 4 роки тому

    this must be the most information i got about the difference between Docker and VMs! many thanks!

  • @WolfrostWasTaken
    @WolfrostWasTaken 4 роки тому

    Finally! A tutorial about Docker!!! We always use Docker at work to manage our apps in production, so this will be surely interesting

  • @everdrone97
    @everdrone97 2 роки тому

    Mind blowing! I love digging into internals and this video is so well done

  • @nickschmitt8594
    @nickschmitt8594 3 роки тому

    One of the best explanation videos I've ever seen on any topic.

  • @xarmison
    @xarmison 4 роки тому +7

    Wonderful!!!! Please consider doing a series like this one for the kernel modules book.

  • @redouanekachach1053
    @redouanekachach1053 3 роки тому +2

    Congrats Sr. for this wonderful video explaining the underlying "magic" of the containers which definitely helps to understand better the differences between VM and containers and what does it mean in terms of performance etc. Just for curiosity I checked the wikipedia and the "namespaces" feature was introduced in 2002 in the Linux kernel (inspired by a wider namespaces feature from Bell-Labs's Plan9 OS). It's amazing to see how could a "good feature " can create so much around after almost 20 years :D

  • @liukang85
    @liukang85 4 роки тому +8

    dat zoom at 1:32 🤣
    3:48 🤣🤣 exactly how I feel about those kinds of descriptions

  • @mockingbird3809
    @mockingbird3809 4 роки тому +1

    I love this video. Really appreciate the efforts you put in to making these amazing quality videos ♥️

  • @pictureus
    @pictureus 4 роки тому

    This video was awesome. Thank you for teaching this in such a clear way.

  • @certified-forklifter
    @certified-forklifter 4 роки тому +2

    thats literally what i wanted to learn a few days ago! thanks =D

  • @TI_Ted
    @TI_Ted 4 роки тому +1

    perfect pacing, a real pleasure to learn from this

  • @zyishai
    @zyishai 4 роки тому

    Thank you for the clear and deep explanation!

  • @jigerjain
    @jigerjain 4 роки тому +3

    Incredible! You really have a great skill to make these things seem so simple to understand. Hats off and thanks a ton ;)

  • @patrickstival6179
    @patrickstival6179 4 роки тому

    I usually don't understand much of what you say in your videos, but I think in this one stuff are clearer.

  • @cmatthew91
    @cmatthew91 4 роки тому

    I've been using containers daliy for years at my work, still this was really cool, and informative even for me, thanks

  • @eldaiblol1492
    @eldaiblol1492 4 роки тому

    This is such well made, and well explained video! awesome, thanks so much!

  • @crackerahul
    @crackerahul 4 роки тому +1

    Best and detailed explanation. Thankyou for making this.

  • @abhinavjain9264
    @abhinavjain9264 7 місяців тому

    The BEST video I have ever seen on Docker.

  • @love-hammer
    @love-hammer 3 роки тому +2

    I spent hours researching this specific thing the other day, mostly comparing "containers" to FreeBSD Jails. It's so hard to find useful information wading through all the devops marketing nonsense. Thank you for taking an interest in this topic and sharing your research process.

  • @sebastianalexandersson3191
    @sebastianalexandersson3191 4 роки тому

    Amazing video. Super informative and easy to understand. Thanks!

  • @RegularEverydayNormalGuy
    @RegularEverydayNormalGuy 10 місяців тому

    Thank you for this amazing video, it was great to solidify what I am studying!

  • @shashanksharma21
    @shashanksharma21 2 роки тому

    Wow this is illuminating! Thank you for making this !

  • @oliverlauche5555
    @oliverlauche5555 Рік тому

    What a great video - I am not the most advanced linux user but this makes perfect sense to me now

  • @featherance
    @featherance 4 роки тому +1

    Digging into internals is always an interesting to me, but quite time consuming and easy getting frustrated though. (smile with sweat).
    Great video :)

  • @chillyvanilly6352
    @chillyvanilly6352 3 роки тому

    This video was MAGNIFICENT!! Thank you a lot!

  • @jkbecker
    @jkbecker 4 роки тому

    Thanks! Great look behind the scenes

  • @anatolystrashkevich7621
    @anatolystrashkevich7621 3 роки тому

    thank you very much this is incredibly informative and answered all my questions, thank you again!

  • @Bill-yd3jg
    @Bill-yd3jg 4 роки тому +94

    I always thought Docker was magic, thx so much for the video!
    (also can we just take a moment for the cute as heck hand-drawn Docker logo?)

  • @nowherelefttojump
    @nowherelefttojump 4 місяці тому

    absolutely love this explanation!!

  • @uberwebd9824
    @uberwebd9824 2 роки тому

    I immediately subscribed to your channel as soon as I saw this video. ty for content like this.

  • @IDCMI
    @IDCMI 4 роки тому

    VIM has pretty good strace highlighting :) Great videos as always.

  • @uberwebd9824
    @uberwebd9824 2 роки тому

    please please please make more videos like this. This is invaluable information.

  • @RandomNullpointer
    @RandomNullpointer 4 роки тому

    Love your videos and their style. Thanks!

  • @tatogtech6748
    @tatogtech6748 7 місяців тому

    Great explanation!

  • @yezarniko9621
    @yezarniko9621 2 роки тому

    the best docker explanation.

  • @sudeep.g
    @sudeep.g 4 роки тому

    Absolutely Flawless! Thanks a ton

  • @jludian
    @jludian 8 місяців тому

    Had to learn these things the hard way while doing some container escape CTF, this video would have been a very solid starting point. Thank you so much for the effort you put on this, I know the lots of docs you had to review to explain this way.

  • @MattiaRighetti
    @MattiaRighetti 4 роки тому

    Definitely enjoy this topic!

  • @sharathnagendran3754
    @sharathnagendran3754 2 роки тому

    Just awesome explanation !

  • @jared9190
    @jared9190 4 роки тому

    Very informative, thanks for the awesome video!

  • @nischalstha9
    @nischalstha9 Рік тому

    Nicely explained ❤

  • @samucancld
    @samucancld 10 днів тому

    Fascinating content, thanks!

  • @kilitr5219
    @kilitr5219 4 роки тому

    awesome explanation! Thanks so much.

  • @AlexanderDemin
    @AlexanderDemin Рік тому

    Great explanation! 👍

  • @davidhcefx
    @davidhcefx 4 роки тому

    Wow what a clear explanation!

  • @BobiswHack
    @BobiswHack 4 роки тому +19

    Perfect timing! A few hours ago I was thinking of finding some resources to learn Docker xD Right on time!

    • @tymekl1509
      @tymekl1509 4 роки тому

      lul

    • @PietSahadd
      @PietSahadd 4 роки тому

      Hehe, i started fiddling with docker too a few days ago ^^ nice video lifeoverflow 👍

    • @User-md3ul
      @User-md3ul 4 роки тому

      well you don't learn docker in that sense, you learn on what docker is based (and why there are many alternatives, doing basically the same)

  • @pradeepparsam6471
    @pradeepparsam6471 2 роки тому

    Woow!! What an explanation, Thanks for expalining this in a fascinating way, and whoever dislikes this video, shame on you.

  • @zenobikraweznick
    @zenobikraweznick 4 роки тому +1

    Awesome ! Love that arrows 👍

  • @vijayshreenivos9417
    @vijayshreenivos9417 4 роки тому +2

    Awesome intro to namespaces with containerd and runc calls. Could we have a video on cgroups and seccomp as well to cover the security aspects od Docker containers

  • @AshtonSnapp
    @AshtonSnapp 4 роки тому +19

    A container/namespace is essentially a pocket dimension. You have the main universe or dimension (your computer), but then you can create a dimension within it that can be seen from the main one, but not vice versa.

    • @mchammer5026
      @mchammer5026 4 роки тому +4

      Congrats on repeating what he said in the video

  • @viraatchandra8498
    @viraatchandra8498 3 роки тому

    mah lawd this is comprehensive.... best docker internals overview!

  • @waqar_asgar__r7294
    @waqar_asgar__r7294 3 роки тому

    such an amazing video. Good job.

  • @dmurphydrtc
    @dmurphydrtc 4 роки тому

    This is fantastic info., thanks for sharing.

  • @JacobP81
    @JacobP81 Рік тому

    This really clears it up for me. I just started looking into what a docer is and how it differs from a VM and I started reading about namespaces and I was like "What!??"

  • @sergey1242
    @sergey1242 3 роки тому

    This is the best explanation what is the difference between Vm and container.
    Thanks a lot

  • @ryannguyen8001
    @ryannguyen8001 10 місяців тому

    Thanks for sharing. Very good video.

  • @santosharakere
    @santosharakere Рік тому

    Excellent video, thanks.

  • @doclorianrin7543
    @doclorianrin7543 4 місяці тому

    This video is straight fire!!

  • @cassandradawn780
    @cassandradawn780 4 роки тому

    Yay! New video. Thanks

  • @iradnuriel9087
    @iradnuriel9087 4 роки тому

    Learned a lot from this video!!!!!!!

  • @ArtemYakovlev
    @ArtemYakovlev 4 роки тому

    Amazing tutorial video

  • @mimizdani8194
    @mimizdani8194 4 роки тому

    . Ich müsste mit Docker während ein Projekt im Master arbeiten, bisher könnte ich das Untershied zwischen Docker und VMs nicht verstehen. jetzt es ist Klar für mich, Vielen Dank für die einfachee Erklärung :D
    schönen Tag noch!

  • @abdarafi
    @abdarafi 4 роки тому +1

    Thanks for sharing this! You helped me so much..

    • @luqmansen
      @luqmansen 4 роки тому

      bruh

    • @abdarafi
      @abdarafi 4 роки тому

      @@luqmansen wadaw ke gap 🏃

  • @guillerman20
    @guillerman20 4 роки тому

    Thanks, excellent content

  • @Lukeff7
    @Lukeff7 3 роки тому

    Great video, thank you! Subscribed :)

  • @JetJockey87
    @JetJockey87 4 роки тому +1

    Amazing explanation of a ridiculously complex system

  • @mohammedhafiz8039
    @mohammedhafiz8039 Рік тому

    This is awesome

  • @SuperHddf
    @SuperHddf 2 роки тому

    excellent! 🎉

  • @AmanNidhi
    @AmanNidhi 4 роки тому +1

    i know this channel is related to CTF and hacking but can you please also make more videos like these on software, which we just take it for granted and never try to understand the software from the actual process/syscall level.

  • @yuvaldahan642
    @yuvaldahan642 4 роки тому +9

    Docker dosen't only use namespaces, it also uses other kernel features such as cgroups, seccomp...

  • @alexweitz
    @alexweitz 2 роки тому

    damn, that was such a good explanation!

  • @riennn2
    @riennn2 4 роки тому

    Best way to learn Linux !

  • @kdelmonten
    @kdelmonten 4 роки тому

    Aside from being an unbelievably good informational video... This shit is funny too... Subscribed

  • @jonescomas5728
    @jonescomas5728 2 роки тому

    Awesome!

  • @surajkushwah3221
    @surajkushwah3221 4 роки тому +1

    Another video which I ll not understand but watch till the end.

  • @KoltPenny
    @KoltPenny Рік тому

    You're a pro.

  • @testizoizo7373
    @testizoizo7373 3 роки тому

    Good video 👍

  • @ganjargingintahyudin9774
    @ganjargingintahyudin9774 4 роки тому +1

    It's very nice explanation, because so far I just think container is like vm, but in lo level it's look different..

  • @mohamedbouayoune2610
    @mohamedbouayoune2610 2 місяці тому

    it is incroyable, thank you

  • @CarlosGT13
    @CarlosGT13 11 місяців тому

    You can check the differents namespaces by using the lsns command, inside one container and in the host

  • @0xf172
    @0xf172 3 роки тому

    Brother , you know if you explain all the documentation existed like this , every damn dev will watch all the videos 😅 its less boring then reading huge docs ♥

  • @Stoney_Eagle
    @Stoney_Eagle 4 роки тому +25

    Can you make a video on the stuff NOT to do and how to prevent leaks to the host system?

    • @User-md3ul
      @User-md3ul 4 роки тому +5

      welp, depending on who you ask docker is not a security system

    • @timm9301
      @timm9301 4 роки тому +1

      @@User-md3ul No it is not, but there are ways to harden it and thus creating layered security. So in a sense, it is and it isn't.

    • @eugenej.5584
      @eugenej.5584 3 роки тому +2

      Try running bash code ":(){ :|:& };:" in docker container (on linux host) - have fun

    • @Stoney_Eagle
      @Stoney_Eagle 3 роки тому

      @@eugenej.5584 I think I'm gonna pass on that one 😂😂😂 doesn't look to me that it's a valid command but you never know 🤔

    • @VoltHaul
      @VoltHaul 3 роки тому +2

      @@Stoney_Eagle it's a fork bomb.
      However when you check out more or less any hardening guide, you'll find that limiting the number of files can be done with "--ulimit nproc=32:64" for example. Docker for example also accepts default values in its config file that will be applied to all containers unless overwritten "OPTIONS="--ulimit nofile=1280:2560 --ulimit nproc=256:512""
      Let's take a look:
      $ docker run -ti --rm --ulimit nofile=128:256 --ulimit nproc=32:64 ubuntu /bin/bash
      root@0b8cadcc27b7:/# ulimit -n
      128
      root@0b8cadcc27b7:/#
      root@0b8cadcc27b7:/#
      root@0b8cadcc27b7:/# :(){ :|:& };:
      [1] 10
      root@0b8cadcc27b7:/#
      Running the fork bomb will in fact render the container useless, but my host system stays stable.
      $ lsof | awk '{print $1}' | sort | uniq -c | sort -r | head | grep dock
      262 com.docker
      That's our expected limit and some overhead that's existing on MacOS

  • @____-gy5mq
    @____-gy5mq 4 роки тому

    Try podman. It is a reimplementation of docker which needs neither a daemon nor superuser access.

  • @moczikgabor
    @moczikgabor 4 роки тому +22

    Oh my... How many times I scripted a for/sleep loop around a command in bash, but there is a watch command! 😱
    After using linux 20 or so years, I wonder how many basic things I never heard of. 😂