Skip to content
Whi Kwon edited this page May 10, 2019 · 8 revisions

Docker Installation (Ubuntu)

우분투 설치 방법은 https://docs.docker.com/install/linux/docker-ce/ubuntu/#extra-steps-for-aufs 를 참고합시다.

최초 실행 시에 권한이 없다는 에러가 뜰 수 있습니다.

sudo adduser $USER docker
sudo gpasswd -a $USER docker 
# logout / login

nvidia-docker Installation (Ubuntu)

nvidia-docker 설치 방법은 https://github.com/NVIDIA/nvidia-docker 를 참고합시다.

docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker

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 -y nvidia-docker2
sudo pkill -SIGHUP dockerd

docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi

Basic commands

docker run [image_name]  # 컨테이너 생성
docker ps  # 실행 중인 컨테이너 목록
docker ps -a  # 전체 컨테이너 목록
docker stop [container_id]  # 특정 컨테이너 중지 
docker start [container_id]  # 특정 컨테이너 시작
docker rm [container_id]  # 특정 컨테이너 삭제
docker rm -v $(docker ps -a -q -f status=exited)  # 전체 중지된 컨테이너 삭제
docker images  # 도커 이미지 목록
docker pull [image_name]  # 도커 이미지 다운로드
docker rmi -f [image_name]  # 도커 이미지 삭제, -f를 주면 강제로 삭제한다. 
docker logs [OPTIONS] [container_id]  # 컨테이너 로그 확인
docker exec [container] [command]   # 컨테이너에 명령어 실행하기

.dockerignore

docker run을 실행시키면 build context for docker image라는게 뜨면서 용량이 증가하는데, 현재 폴더 내에 있는 것들을 참조하는 과정(context)을 거칩니다. container에 COPY 등을 하지 않을 파일들이라면 .dockerignore 파일에 추가해서 build 속도를 빠르게 할 수 있습니다.

Dockerfile syntax

RUN  # run command when container is made
COPY  # copy file from local to image
CMD  # command when container runs
WORKDIR  # set work directory
FROM  # pull image
SHELL ["/bin/bash" "-c"]  # set default shell to bash
ENV  # 환경 변수 설정 
EXPOSE  # 외부에 노출할 port 지정

Docker + Jupyter Notebook

docker run -it -p 8888:8888 [image_name]
Jupyter notebook --ip 0.0.0.0 --no-browser  # in container

Nvidia-Docker runtime

docker run -it --runtime=nvidia --ipc=host [image id] /bin/bash runtime, ipc 옵션을 줘야 nvidia driver를 docker 내에서 인식할 수 있고 shared memory를 사용하는 framework(e.g. Pytorch)를 위해서는 ipc=host 옵션이 필요합니다.

Docker access container data from host

docker run -v “/path/to/host/directory:/path/inside/container” [image_name]

Bash argument passing to Docker container

file.sh

#!/bin/bash
echo Your container args are: "$@"

Dockerfile

FROM ubuntu:14.04
COPY ./file.sh /
ENTRYPOINT ["/file.sh"]
CMD []

shell

docker build -t test .
docker run test hello world
Your container args are: hello world

Dockerfiles for Deep Learning

https://github.com/ufoym/deepo

ROS dockerfile

https://hub.docker.com/r/osrf/sros/dockerfile/

KAIR

RL Algorithms

Simulator

OpenManipulator

  • Setup
  • Default Controller
  • Demo Controller

Sim2Real

  • Domain Randomization

Misc

Clone this wiki locally