Skip to content

Example architecture #1

@thebsdbox

Description

@thebsdbox

My initial idea is to have two main containers in our LinuxKit image:

Docker with a bind to /var/run:

  - name: docker-osie
    image: docker:19.03.8-dind
    capabilities:
     - all
    net: host
    mounts:
     - type: cgroup
       options: ["rw","nosuid","noexec","nodev","relatime"]
    binds:
     - /etc/resolv.conf:/etc/resolv.conf
     - /var/lib/docker:/var/lib/docker
     - /lib/modules:/lib/modules
     - /var/run:/var/run
     - /etc/docker/daemon.json:/etc/docker/daemon.json
    command: ["/usr/local/bin/docker-init", "/usr/local/bin/dockerd"]
    runtime:
      mkdir: ["/var/lib/docker"]

We can interact with it:

ctr -n services.linuxkit t exec --exec-id test docker-osie docker pull nginx

Custom Go binary:

  - name: workflow
    image: workflow:beta
    binds:
     - /var/run:/var/run
     - /proc/cmdline:/proc/cmdline

The custom go binary will use the docker SDK to speak to the docker.sock in /var/run...

The final piece of the puzzle is getting the registry certificate into this, there are two options I can see:

  • Users build their own custom kernel/initramfs with that cert
  • We have an onboot container that gets certificates and puts them somewhere on the filesystem that we can pass into the docker container.

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/supportCategorizes issue or PR as a support question.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions