I’ve read that standard containers are optimized for developer productivity and not security, which makes sense.

But then what would be ideal to use for security? Suppose I want to isolate environments from each other for security purposes, to run questionable programs or reduce attack surface. What are some secure solutions?

Something without the performance hit of VMs

  • dragnucs@lemmy.ml
    link
    fedilink
    arrow-up
    13
    ·
    1 year ago

    It is the application Docker that is not secure. Containers are. In fact Docker runs a daemon as root to wich you communicate from a client. This is what makes it less secure; running under root power. It also has a few shortcomings of privileged containers. This can be easily solved by using podman and SELinux. If you can manage to run Docker rootless, then you are magnitudes higher in security.

    • piezoelectron@sopuli.xyz
      link
      fedilink
      arrow-up
      6
      ·
      1 year ago

      Do you think Podman is ready to take over Docker? My understanding is that Podman is Docker without the root requirement.

      • dragnucs@lemmy.ml
        link
        fedilink
        arrow-up
        6
        ·
        1 year ago

        Yes it is. I’ve been using it for more than a year now. Works reliably. Has pod support aswel.

        • piezoelectron@sopuli.xyz
          link
          fedilink
          arrow-up
          3
          ·
          1 year ago

          Great. I don’t know enough to use either but I think I’m going to try lean on podman from the get go. In any case, I know that all podman commands are exactly identical to Docker, such that you can replace, say, docker compose with podman compose and move on with ease.

          • Guilvareux@feddit.uk
            link
            fedilink
            arrow-up
            2
            ·
            1 year ago

            With the specific exception of podman compose I completely agree. I haven’t tested it for a while but podman compose has had issues with compose file syntax in my experience. Especially with network configs.

            However, I have been using “docker-compose” with podman’s docker compatible socket implementation when necessary, with great success

      • mosthated@lemmy.ml
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        1 year ago

        Related to this: can podman completely replace Docker? I.e., can it pull containers and build containers in addition to running them?

        • boo@beehaw.org
          link
          fedilink
          arrow-up
          1
          ·
          1 year ago

          It can pull and build containers fine but last time I tried there were some differences. Mounts were not usable because user uid/gid behave quite differently. Tools like portainer dont work on podman containers. I havent tried out any networking or advanced stuff yet.

          But i found that the considerations to write docker files are quite different for podman.

          • dragnucs@lemmy.ml
            link
            fedilink
            arrow-up
            3
            ·
            1 year ago

            Differences you find could be related to containers being run rootless, or the host system having SELinux enforcesd. Both problems could be intended behavior and can be soled simply by using by adding correct labels to mount points like :z or :Z. This SELinux feature also affects Docker when setup.

            Portaiers tries to connect to a docker sock path that is not the same with Podman. While podman is rootless and does not need a daemon, socks and stuff, it has support for them nevertheless. So you can simply adjust Portainer config to work with podman. I havnt tried it yet but I managed to do similar things for other software.

          • mosthated@lemmy.ml
            link
            fedilink
            arrow-up
            1
            ·
            1 year ago

            Gotcha. I use docker containers on computing clusters at the University, but because of security, I have to convert them to singularity containers. That is okay, but I was hoping that by running podman I could prevent this extra step.

            • Tiuku@sopuli.xyz
              link
              fedilink
              arrow-up
              1
              ·
              1 year ago

              Unlike docker, podman doesn’t try to do everything on it’s own. There’s a separate tool known as buildah which builds containers from dockerfiles just fine.

              Ps. More generally, they’re called containerfiles.

    • boo@beehaw.org
      link
      fedilink
      arrow-up
      4
      ·
      1 year ago

      There can also be old images with e.g. old openssl versions being used. Its not a concern if they are updated frequently, but still manual.

      • dragnucs@lemmy.ml
        link
        fedilink
        arrow-up
        4
        ·
        1 year ago

        This is a problem of the containerized program and the image itself. This problem affect, containers, VM, and baremetal aswel.

        • boo@beehaw.org
          link
          fedilink
          arrow-up
          2
          ·
          1 year ago

          I agree. But imo these usecases are more known and mature in traditional setups, we could apt update and restart a systemd service and its done.

          Its not so obvious and there are no mechanisms for containers/images.

          (I am not into devops/sysadmin, so this might also be my lack of exposure)

          • dragnucs@lemmy.ml
            link
            fedilink
            arrow-up
            2
            ·
            1 year ago

            Most often, images are updated automatically and are managed by the developers themselves so images are usually up to date. If you don’t know how to build images, it may be difficult for you to update the containerized software before the vendor does. But this situation is infrequent.

            • AggressivelyPassive@feddit.de
              link
              fedilink
              arrow-up
              1
              ·
              1 year ago

              Many projects just pull in a bunch of images from wherever and never update them. Especially if it’s that one obscure image that happens to package this over obscure app you absolutely need.