docker ======== `Docker `_ is an open platform for developers and sysadmins to build, ship, and run distributed applications, whether on laptops, data center VMs, or the cloud. Docker installation -------- .. code-block:: bash $ sudo apt install docker.io # install docker $ sudo usermod -aG docker $USER # add user to docker group Docker configuration -------- .. code-block:: bash $ cat /etc/docker/daemon.json # check daemon configuration $ sudo systemctl status docker # check docker active statu Image management -------- Create **image** from `Dockerfile `_ :code:`$ docker build -t :[tag_name] .` Create **image** from a specific Dockerfile :code:`$ docker build -f -t :[tag_name] .` Image management .. code-block:: bash $ docker save :[tag_name] .tar # save image $ docker load --input .tar # load image $ docker images # list available images $ docker rmi # remove image by name $ docker rmi # remove image by id $ docker images purge # remove dangling images Container management -------- Start container .. code-block:: bash $ docker run -it --name :[tag_name] Options: --rm # remove container file system when exits --restart always # always restart the container if it stops. -v ::ro # map local directory to docker --user $(id -u):$(id -g) # set user the same as local machine --shm-size 32G # set size of shared memory --cpuset-cpus 10-20 # set cpus to use --gpus '"device=1"' # set gpu to use Attach existing container .. code-block:: bash $ docker exec -it bash Copy files .. code-block:: bash $ docker cp : # copy files from docker to local $ docker cp : # copy files from local to docker Container management .. code-block:: bash $ docker ps # list all available containers $ docker stop # stop specific container $ docker rm # remove specific stopped container Upload image to docker hub -------- Login to docker hub .. code-block:: bash $ export DOCKER_ID_USER="user_name" # set docker hub username $ docker login # login in to docker hub Tag image :code:`$ docker tag : $DOCKER_ID_USER/:` Push to docker cloud :code:`$ docker push $DOCKER_ID_USER/:` Convert image to singularity -------- Create docker image tarball .. code-block:: bash $ docker save : -o .tar Build singularity from image tarball .. code-block:: bash $ singularity build .sif docker-archive://.tar Build singularity from DockerHub image .. code-block:: bash $ singularity pull .sif docker:///: Nvidia-Docker -------- Install nvidia-docker 2.0 .. code-block:: bash $ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - $ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) $ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \ sudo tee /etc/apt/sources.list.d/nvidia-docker.list $ sudo apt-get update $ sudo apt-get install nvidia-docker2 $ sudo pkill -SIGHUP dockerd $ docker run --runtime nvidia --rm nvidia/cuda:9.0-base-ubuntu16.04 nvidia-smi