---
layout: default
navsection: userguide
title: "Working with Docker images"
...
{% comment %}
Copyright (C) The Arvados Authors. All rights reserved.
SPDX-License-Identifier: CC-BY-SA-3.0
{% endcomment %}
This page describes how to set up the runtime environment (e.g., the programs, libraries, and other dependencies needed to run a job) that a workflow step will be run in using "Docker.":https://www.docker.com/ Docker is a tool for building and running containers that isolate applications from other applications running on the same node. For detailed information about Docker, see the "Docker User Guide.":https://docs.docker.com/userguide/
This page describes:
# "Create a custom image using a Dockerfile":#create
# "Uploading an image to Arvados":#upload
# "Sources of pre-built bioinformatics Docker images":#sources
{% include 'tutorial_expectations_workstation' %}
You also need ensure that "Docker is installed,":https://docs.docker.com/installation/ the Docker daemon is running, and you have permission to access Docker. You can test this by running @docker version@. If you receive a permission denied error, your user account may need to be added to the @docker@ group. If you have root access, you can add yourself to the @docker@ group using @$ sudo addgroup $USER docker@ then log out and log back in again; otherwise consult your local sysadmin.
h2(#create). Create a custom image using a Dockerfile
This example shows how to create a Docker image and add the R package.
First, create new directory called @docker-example@, in that directory create a file called @Dockerfile@.
$ mkdir docker-example-r-base
$ cd docker-example-r-base
FROM ubuntu:bionic
RUN apt-get update && apt-get -yq --no-install-recommends install r-base-core
docker-example-r-base$ docker build -t docker-example-r-base .
$ docker run -ti docker-example-r-base
root@57ec8f8b2663:/# R
R version 3.4.4 (2018-03-15) -- "Someone to Lean On"
Copyright (C) 2018 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
$ arv-keepdocker docker-example-r-base
2020-06-29 13:48:19 arvados.arv_put[769] INFO: Creating new cache file at /home/peter/.cache/arvados/arv-put/39ddb51ebf6c5fcb3d713b5969466967
206M / 206M 100.0% 2020-06-29 13:48:21 arvados.arv_put[769] INFO:
2020-06-29 13:48:21 arvados.arv_put[769] INFO: Collection saved as 'Docker image docker-example-r-base:latest sha256:edd10'
zzzzz-4zz18-0tayximqcyb6uf8
$ arv-keepdocker images
REPOSITORY TAG IMAGE ID COLLECTION CREATED
docker-example-r-base latest sha256:edd10 zzzzz-4zz18-0tayximqcyb6uf8 Mon Jun 29 17:46:16 2020
hints: DockerRequirement: dockerPull: docker-example-r-baseh3. Uploading Docker images to a shared project Docker images are subject to normal Arvados permissions. If wish to share your Docker image with others you should use @arv-keepdocker@ with the @--project-uuid@ option to add the image to a shared project and ensure that metadata is set correctly.
$ arv-keepdocker docker-example-r-base --project-uuid zzzzz-j7d0g-xxxxxxxxxxxxxxx