Project

General

Profile

Actions

Idea #11724

closed

Pull Docker images without requiring Docker on client

Added by Peter Amstutz almost 7 years ago. Updated over 1 year ago.

Status:
Resolved
Priority:
Normal
Assigned To:
Category:
API
Target version:
Story points:
-

Description

Web-only users do not have access to Docker on the client (in addition, some shell users don't have access to Docker for security reasons, for example visitors to cloud.curoverse.com). Ther should be a mechanism to submit a request to pull a Docker image for use in Arvados.

Possible solutions:

Unprivileged pull inside a normal container request

There's at least one utility for pulling/manipulating images:

https://github.com/projectatomic/skopeo

However last I checked it doesn't support conversion to the "docker save" tarfile dump that we use. Maybe we could add support.

Special container request

Special format container request recognized by crunch-run which executes "docker pull" (instead of "docker run") and produces the image collection as output.

Dedicated "docker pull" service and/or WES

New microservice with API for "pull image". This would avoid the overhead of starting up a dedicated VM to run a download process that usually only takes a few seconds.

Note: the Workflow Execution Service (WES) server sort of already does this; if workflow run is submitted that requires pulling Docker images, it will pull them and upload them. This is existing arvados-cwl-runner behavior which normally requires Docker on the client, but in the case of WES, the WES gateway is the agent that runs arvados-cwl-runner and not the original client.

So there's also an option to migrate clients that submit workflows (a-c-r, workbench, composer) to use Arvados WES instead of directly creating container requests.

Arvados Docker registry service

Deploy https://github.com/docker/distribution or implement the API https://docs.docker.com/registry/spec/api/ . Store layers in keep instead of whole image tarballs. Regular "docker push" and "docker pull" works. Unprivileged import is more tractable by avoiding format conversion.

Additional consideration: to access private registries, we need to provide credentials. Secrets handling is available for container requests.


Subtasks 1 (0 open1 closed)

Task #19807: Design proposalResolvedTom Clegg12/06/2022Actions

Related issues

Related to Arvados - Idea #13325: As a CWL learner, I would like to be able to run CWL workflows easily on playgroundNewActions
Related to Arvados Epics - Idea #16447: Improve container image handlingIn Progress04/01/202406/30/2024Actions
Related to Arvados - Idea #13794: Build Docker images without requiring Docker on clientNewActions
Related to Arvados - Feature #19860: Support "pull image" container requestIn ProgressActions
Is duplicate of Arvados - Idea #9046: [Crunch2] Can issue container request to pull and import Docker imagesClosedActions
Blocked by Arvados - Feature #19846: Use collection properties instead of links to tag docker imagesNewTom CleggActions
Actions #1

Updated by Peter Amstutz almost 7 years ago

  • Description updated (diff)
Actions #2

Updated by Tom Morris over 6 years ago

  • Target version set to Arvados Future Sprints
Actions #3

Updated by Tom Clegg about 6 years ago

  • Related to Idea #13325: As a CWL learner, I would like to be able to run CWL workflows easily on playground added
Actions #4

Updated by Peter Amstutz about 6 years ago

  • Description updated (diff)
Actions #5

Updated by Peter Amstutz about 6 years ago

  • Description updated (diff)
Actions #6

Updated by Peter Amstutz almost 6 years ago

  • Is duplicate of Idea #9046: [Crunch2] Can issue container request to pull and import Docker images added
Actions #7

Updated by Tom Morris almost 6 years ago

  • Tracker changed from Bug to Idea
  • Target version changed from Arvados Future Sprints to To Be Groomed
Actions #8

Updated by Peter Amstutz almost 6 years ago

  • Subject changed from Import Docker images without requiring Docker on client to Pull Docker images without requiring Docker on client
  • Description updated (diff)
Actions #9

Updated by Peter Amstutz almost 6 years ago

  • Related to Idea #13794: Build Docker images without requiring Docker on client added
Actions #10

Updated by Peter Amstutz almost 6 years ago

  • Description updated (diff)
Actions #11

Updated by Peter Amstutz almost 6 years ago

  • Description updated (diff)
Actions #12

Updated by Peter Amstutz almost 6 years ago

  • Description updated (diff)
Actions #13

Updated by Peter Amstutz almost 3 years ago

  • Target version deleted (To Be Groomed)
Actions #14

Updated by Peter Amstutz over 1 year ago

  • Target version set to 2022-08-31 sprint
Actions #15

Updated by Peter Amstutz over 1 year ago

  • Target version changed from 2022-08-31 sprint to 2022-09-14 sprint
Actions #16

Updated by Peter Amstutz over 1 year ago

  • Target version changed from 2022-09-14 sprint to 2022-10-12 sprint
Actions #17

Updated by Peter Amstutz over 1 year ago

  • Related to Idea #16447: Improve container image handling added
Actions #18

Updated by Peter Amstutz over 1 year ago

  • Target version changed from 2022-10-12 sprint to 2022-10-26 sprint
Actions #19

Updated by Peter Amstutz over 1 year ago

  • Category set to API
Actions #20

Updated by Peter Amstutz over 1 year ago

  • Target version changed from 2022-10-26 sprint to 2022-11-09 sprint
Actions #21

Updated by Peter Amstutz over 1 year ago

  • Target version changed from 2022-11-09 sprint to 2022-11-23 sprint
Actions #22

Updated by Peter Amstutz over 1 year ago

  • Target version changed from 2022-11-23 sprint to 2022-12-07 Sprint
Actions #23

Updated by Peter Amstutz over 1 year ago

  • Target version changed from 2022-12-07 Sprint to 2022-12-21 Sprint
Actions #24

Updated by Peter Amstutz over 1 year ago

  • Target version changed from 2022-12-21 Sprint to 2023-01-18 sprint
Actions #25

Updated by Peter Amstutz over 1 year ago

  • Target version changed from 2023-01-18 sprint to 2022-12-07 Sprint
Actions #26

Updated by Peter Amstutz over 1 year ago

  • Assigned To set to Tom Clegg
Actions #27

Updated by Tom Clegg over 1 year ago

  • Status changed from New to In Progress

Updated Build docker images as part of a workflow

Benefits of the "special container request" approach
  • Doesn't require docker on system nodes, only on compute nodes where it is typically already installed
  • Maintains the reproducibility feature of retaining the exact image that was used to run each workflow step (except the "pull" process itself, which is inherently not reproducible)
Actions #28

Updated by Tom Clegg over 1 year ago

  • Related to deleted (Idea #13794: Build Docker images without requiring Docker on client)
Actions #29

Updated by Tom Clegg over 1 year ago

  • Has duplicate Idea #13794: Build Docker images without requiring Docker on client added
Actions #30

Updated by Tom Clegg over 1 year ago

  • Has duplicate deleted (Idea #13794: Build Docker images without requiring Docker on client)
Actions #31

Updated by Tom Clegg over 1 year ago

  • Related to Idea #13794: Build Docker images without requiring Docker on client added
Actions #32

Updated by Tom Clegg over 1 year ago

  • Status changed from In Progress to Closed
Actions #33

Updated by Tom Clegg over 1 year ago

  • Blocked by Feature #19846: Use collection properties instead of links to tag docker images added
Actions #34

Updated by Tom Clegg over 1 year ago

  • Status changed from Closed to New
Actions #35

Updated by Peter Amstutz over 1 year ago

  • Status changed from New to Resolved
Actions #36

Updated by Tom Clegg 11 months ago

  • Related to Feature #19860: Support "pull image" container request added
Actions

Also available in: Atom PDF