[docker] ๋์ปค๐ ์ฐจ๊ทผ์ฐจ๊ทผ ์์๋ณด๊ธฐ 2
์ด๋ฒ์ ์์ ํ๋ ๋์ปค ์ด๋ฏธ์ง ๋ง๊ณ ๋ค๋ฅธ ์์ผ๋ก ์๋ํด๋ณด์๋ค. ์์ ์๋ํ ๊ฒ์, ํ์ผ๊น์ง ์๋์ผ๋ก ๋๋ฆด ์ ์๋ image ๋ฅผ ๋ง๋ค์ด์ run ๋ช ๋ น์ด ํ๋์ ๋๋ด๋ ๊ฒ์ด์๋๋ฐ, ์๊ฐ์ ๋ฐ๊พธ์ด์, ํ์ํ docker ํ๊ฒฝ์ ์ด๋ฉด ๊ทธ ์์์ ํ์ํ ํ์ผ๋ค์ ์คํ์ํค๋ ํ์์ผ๋ก ํ๋๋ก ํ์๋ค.
ํ์ํ cuda image๋ฅผ pull ํด์ค๊ณ , ๊ทธ pull ํด์จ image ์ ๋ด๊ฐ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ถ๊ฐ๋ก install ํ์ฌ ๋๋ง์ custum docker image ๋ฅผ ๋ง๋ค์ด์, ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๊ฒ docker hub ์ ์ฌ๋ฆฌ๋ ๊ฒ ๊น์ง ํ์๋ค.
ํน์ ๋์ปค ์ค์น๋ถํฐ ํ๊ณ ์ถ์ ์ฌ๋์ [docker] ๋์ปค๐ ์ฐจ๊ทผ์ฐจ๊ทผ ์์๋ณด๊ธฐ ์ฌ๊ธฐ ์ฐธ๊ณ !
docker login
docker login
๋ก๊ทธ์ธ ํ์๋ง์ sock permission deniedโฆ
group ์ ๊ถํ ์ค์ ํด์ฃผ๋ฉด ๋๋ค. chomod 666์ผ๋ก read write ๋ฑ ๋ค ๊ฐ๋ฅํ๊ฒ ํด์ฃผ์
sudo chmod 666 /var/run/docker.sock
๋ค์ ๋ก๊ทธ์ธํ๋ ์ฑ๊ณตํ์๋ค ํธํธ
## docker run
gpu ๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ฏ๋ก โgpus ํ๊ทธ๋ฅผ ์ถ๊ฐํ๊ณ , all ์ gpu๊ฐ ๋ช๊ฐ๋ ๋ค ์ฝ์ด์ค๊ฒ ๋ค๋ ๋ป์ด๋ค ๋ง์ฝ 4๊ฐ์ค 0๋ฒ๊ณผ 1๋ฒ์งธ๊ฒ๋ง ๊ฐ์ ธ์ค๊ณ ์ถ๋ค๋ฉด โgpus โโdevices=0,1โโ ์ผ๋ก ์ค์ ํด์ฃผ๋ฉด๋๋ค. -v ๋ค์์ $(pwd)๋ ํ์ฌ ์์ ์์น๋ฅผ ๋ปํ๊ณ ๊ทธ ๋ค์ ๋ด๊ฐ ์ ๊ทผํ๊ณ ์ถ์ ๊ฒฝ๋ก๋ฅผ ์ ์ด์ค๋ค. ๋๋ ์ ๋๊ฒฝ๋ก๋ก ๋ฃ์ด์ฃผ์๋ค. ๊ทธ๋ฆฌ๊ณ โrm ๋ค์๋ ์ฌ์ฉํ ๋์ปค์ด๋ฏธ์ง ํ๋ค์์ ์ฐ๊ณ ์คํ..!
docker run --gpus all -it -v $(pwd):/home/clkim/GONGIN --rm nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04
run ์ดํ ์ถ๊ฐ๋ก ์ค์นํด ์ค ๊ฒ!
apt-get update -y
apt-get -y install libgl1-mesa-glx
apt-get install -y python3-pip python-dev build-essential
pip3 install --upgrade pip
apt-get install vim
pip install tensorflow-gpu==2.0.0
๋ง์ฝ ์ฒซ์ค๋ถํฐ ๋ค์๊ณผ ๊ฐ์ GPG KEY ์๋ฌ๊ฐ ๋๋ค๋ฉด..
์๋ ๋ช ๋ น์ด ์คํํ๋ฉด ๋๋จ๋ค!
apt-key del 7fa2af80 && apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/3bf863cc.pub
ํ์ง๋ง ๋ ์๋๋ฏ๋ก.. ์๋ ์ฌ์ดํธ๋ค์ ์ฐธ๊ณ ํ์ฌ์ pub key ์ง์ฐ๊ณ ๋ณธ์ธ์ด ํด๋นํ๋ cuda ๋ฒ์ ์ key๋ฅผ ๋ฐ์์ ์จ์ฃผ์ https://developer.nvidia.com/blog/updating-the-cuda-linux-gpg-repository-key/
https://forums.developer.nvidia.com/t/updating-the-cuda-linux-gpg-repository-key/212897/7
์์))
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-keyring_1.0-1_all.deb
๋ํ, TIME OUT ์๋ฌ์ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํด๋ณด์
sudo pip install --default-timeout=100 future
์๋ฌ๋ค์ ํด๊ฒฐํ๋ค๋ฉด ๋ค์ basrh ์ cuda ์ ๋ณด๋ฅผ ์ถ๊ฐํ์!
vim ~/.bashrc
ํ๋ฉด bashrc ์ฝ๋๊ฐ ๋์ค๋๋ฐ, ์ฌ๊ธฐ์๋ค๊ฐ ๋ณธ์ธ์ cuda ๋ฒ์ ์ ๋ง๊ฒ๋ ์์ ํ์ฌ์ ๋งจ ์๋์๋ค๊ฐ ์๋ ๋ด์ฉ์ ์ฝ์ ํด์ฃผ์! ๋๋ cuda 10.0 ์ด๋ผ์ 10.0
# <<< conda initialize <<<
export PATH=$PATH:/usr/local/cuda-10.0/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64
export CUDADIR=/usr/local/cuda-10.0
export CUDA_NVRTC_LIB=/usr/local/cuda-10.0/include/nvrtc.h
export CUDA_HOME=/usr/local/cuda-10.0/
source ~/.bashrc
์ด๋ฐ์์ผ๋ก ๋ณธ์ธ์ด ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ์ค์นํ์ฌ ํ๊ฒฝ์ ๊ตฌ์ฑํ์๊ณ , ํ์ผ์ด ์ ๋์๊ฐ๋ค๋ฉด ์์ฑ! ์ด๋ค.
image push
์ด์ ์ต์ข ์ ์ผ๋ก ๋ด๊ฐ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ๋ค ์ค์น๋ ์ปจํ ์ด๋๋ฅผ image ๋ก ๋ง๋ค์ด push ํ๋ฉด๋๋ค.
๋จผ์ , ํ container ์ํ๋ก image ๋ก ๋ง๋ค๊ธฐ ์ํด ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํด์ค๋ค.
docker commit -m [image ์ค๋ช ] -a [ ์ฌ์ฉ์ mail ] [ container Name or ID ] [ ์์ฑํ image name : Tag ]
docker commit -m "tensorflow 2.0 image with cuda10.0" -a "example@naver.com" bbEXAMPLE75fb5 example:v0.1
์ํธ๋ฌธ์๊ฐ์๊ฒ์ด ์์ฑ๋์๋ค
์ด๋ฏธ์ง ์์ฑํ์ธ! ์ฑ๊ณตํ์๋ค.
์ด์ image tag ์์ ์ ํด์ฃผ์! ๋ด ์์ด๋๋ฅผ ์์ ์จ์ฃผ๋ฉด ๋๋ค.
docker tag [ image name or Tag ] [ docker hub ID ํน์ private registry ip:port ]
docker tag noah:v1.0 zzennin/noah:v1.0
์ด์ push
ํด์ฃผ์ (push ๋ docker login ํ ์ํ์์ ํ๋๊ฑฐ ์์ง ๋ง์)
docker push noah:v1.0
์ด์ ๋!
/ . . . ํ๋ฉด ์ข์ํ ๋ฐ ๋๋ ๋ ์๋ฌ.. ์๋ฌ๋ ์ฌ๋ ์ฌ๊ธฐ ๋ชจ์ฌ~
์๋ ์ฌ์ดํธ๋๋ก nameserver ์ถ๊ฐํด์ค ํ restart ํด์ฃผ๋ ๋์๋ค! ๊ตฟ!
์์๋๋ฉด ํธ๋ฆฌํ ๋์ปค ๋ช ๋ น์ด๋ค!
๋์ปค ์ปจํ ์ด๋ ๋น ์ ธ๋์ค๊ธฐ
๊ทธ๋ฅ exit
์น๊ณ ์ํฐ~
๊ฐ์ image์ ๋์ปค ์ปจํ ์ด๋ ๋ ๋ง๋ค๊ธฐ
์ปจํ ์ด๋ ๋ ์ด๊ณ ์ถ์ผ๋ฉด! container id ๋ฅผ ์๊ณ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์น๋ฉด ๋จ
docker exec -it [container id ํน์ ์ด๋ฆ] /bin/bash
docker exec -it 2fee1f881c52 /bin/bash
๋๊ธ๋จ๊ธฐ๊ธฐ