• jk47@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 year ago

      Is that still true? I use Linux but my coworker said docker runs natively now on the M1s but maybe he was making it up

      • Ryan@programming.dev
        link
        fedilink
        English
        arrow-up
        3
        ·
        1 year ago

        I suspect they meant it runs natively in that it’s an aarch64 binary. It’s still running a VM under the hood because docker is really just a nice frontend to a bunch of Linux kernel features.

        • Dohnakun@lemmy.fmhy.mlB
          link
          fedilink
          English
          arrow-up
          0
          ·
          1 year ago

          docker is really just a nice frontend to a bunch of Linux kernel features.

          What does it do anyway? I know there’s lxc in the kernel and Docker not using it, doing it’s own thing, but not much else.

          • Ryan@programming.dev
            link
            fedilink
            English
            arrow-up
            1
            ·
            1 year ago

            I can’t remember exactly what all the pieces are. However, I believe its a combination of

            • cgroups: process isolation which is why you can see docker processes in ps/top/etc but you can’t for vms. I believe this is also what gets you the ability to run cross distro images since the isolation ensures the correct shared objects are loaded
            • network namespaces: how they handle generating the isolated network stack per process
            • some additional mount magic that I don’t know what its called.

            My understanding is that all of the neat properties of docker are actuall part of the kernel, docker (and podman and other container runtimes) are mostly just packing them together to achieve the desired properties of “containers”.

      • Shareni@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        Docker requires the Linux kernel to work.

        M1 is just worse arm. Since most people use x86_64 instead of arm, docker had to emulate that architecture and therefore had performance issues. Now you’ve got arm specific images that don’t require that hardware emulation layer, and so work a lot better.

        Since that didn’t solve the Linux kernel requirement, it’s still running a VM to provide it.