Docker - kairproject/kair_algorithms_draft GitHub Wiki
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