๋์ปค๋ฅผ ์ฌ์ฉํ์๋ ๋ถ๋ค์ ์ํด ์์ฑํ๋ ๋์ปค ์ฌ์ฉ๋ฒ์ ๋๋ค.
Docker ์๊ฐ ๋ฐ ์๋ด - ์ค์์ค
๋์ปค ํฐ๋ฏธ๋ ์คํ ํ ์๋ ๊ทธ๋ฆผ์ ์๋ IP ๋ฅผ ์ ๊ธฐ์ตํด๋์ธ์!
์์ผ๋ก ์ด IP ๋ฅผ ์ฌ์ฉํ์ฌ ๋์ปค ์ปจํ ์ด๋์ ์ํต์ ํ๊ฒ ๋ฉ๋๋ค.
hub.docker ์์ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ ์ค๋น๋ฅผ ํฉ๋๋ค. (๋ก๊ทธ์ธ์ด ํ์ ํ ์๋ ์์ต๋๋ค. https://hub.docker.com ์์ ๊ฐ์ ํ์ธ์!)
$ docker pull deeplearningzerotoall/tensorflow
๋ง์ฝ์ ํน๋ณํ ๋ค๋ฅธ ๋ฒ์ ์ ์ง์ ํ๊ณ ์ถ์ผ๋ฉด ์ ํฌ docker hub ์ ์ ์ํ์ ์ ์ํ์๋ ๋ฒ์ ์ ํ์ธํฉ๋๋ค.
์ด๋ฏธ์ง๋ฅผ ๋ฐ์ผ์
จ์ผ๋ฉด docker images ๋ช
๋ น์ด๋ฅผ ์ณ์ ๋์ปค ์ด๋ฏธ์ง์ ์กด์ฌ๋ฅผ ํ์ธํด๋ด
๋๋ค.
$ docker images
REPOSITORY TAG ...
hello-world latest ...
deeplearningzerotoall/tensorflow latest ...
๋์ปค ์ด๋ฏธ์ง๋ก๋ถํฐ ์ปจํ
์ด๋๋ฅผ ์์ฑํ๊ณ ์คํํฉ๋๋ค. ์ด๋ --name ๋ค์ ์ํ๋ ์ด๋ฆ์ ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ฒ ๊ฐ์ด๋์์๋ tf ๋ก ํ๊ฒ ์ต๋๋ค.
$ docker run -i -t --name tf -p 8888:8888 -p 6006:6006 deeplearningzerotoall/tensorflow /bin/bash
์ด์ ๊ฑฐ์ ๋ค ์์ต๋๋ค. ๋์ปค ์ปจํ ์ด๋๋ฅผ ๋ง๋ค์๊ณ root ๊ณ์ ์ผ๋ก ์ปจํ ์ด๋ ๋ด๋ถ ์์ ์ ์ํ ์ํ์ ๋๋ค.
root@[๊ณ ์ ๋ฒํธ]:/workspace#
๋ง์ฝ์ ์์ ํ ์ปจํ
์ด๋๋ฅผ ๋๊ณ ์ถ๋ค๋ฉด exit ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์ธ์!
root@[๊ณ ์ ๋ฒํธ]:/workspace# exit
docker ps -a ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํด ํ์ฌ ๋์ปค ์ปจํ
์ด๋๊ฐ ์ผ์ ธ์๋ ์ฌ๋ถ๋ฅผ ํ์ธ ํ ์ ์์ต๋๋ค. STATUS ๋ฅผ ํ์ธํ์ธ์
$ docker ps -a
ํ์ฌ ์คํ ์ค์ธ ์ปจํ
์ด๋๋ง ํ์ธํ๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ docker ps ๋ช
๋ น์ด๋ฅผ ์ด์ฉํด์ ํ์ธํ ์ ์์ต๋๋ค.
์ฃผ์: docker run ๋ช
๋ น์ด๋ ํ ๋ฒ ๋ง ์คํํ์๋ฉด ๋ฉ๋๋ค. ์ข
๋ฃ๋ ์ปจํ
์ด๋๋ฅผ ๋ค์ ์คํํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ์คํํฉ๋๋ค.
$ docker start tf
์ด ๋จ๊ณ๋ ์ปจํ ์ด๋๋ฅผ ํค๊ธฐ๋ง ํ์ ๋ฟ์ ๋๋ค. ์ปจํ ์ด๋ ํฐ๋ฏธ๋์ ์ ์ํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ์คํํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ปจํ ์ด๋ ๋ด๋ถ ํฐ๋ฏธ๋๋ก ์ด๋ํ๊ฒ ๋ฉ๋๋ค.
$ docker attach tf
root@[๊ณ ์ ๋ฒํธ]:/workspace#
๋ง์ฝ์ ์ปจํ
์ด๋๋ฅผ ์ผ๋์ฑ ์ ์ ๋ฐ์ผ๋ก ๋์ค๊ณ ์ถ๋ค๋ฉด Ctrl+P + Ctrl+Q ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ๋ค์ ์ ์ํ๋ ค๋ฉด docker attach ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ๊ณต๋ถ๋ฅผ ์์ํ๊ธฐ ์ํด ๋ชจ๋๋ฅผ ์ํ ๋ฅ๋ฌ๋ Github ์ ์ ์ํฉ๋๋ค.
์์ ์ Github ๊ณ์ ์ผ๋ก ์ ์ํ์๊ณ , ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ค๋ฅธ์ชฝ ์๋จ์ ์๋ Fork ๋ฒํผ์ ๋๋ฆ
๋๋ค.
Fork ๊ฐ ์๋ฃ๋๋ฉด ์์ ์ ๋ ํฌ์งํ ๋ฆฌ(์ค๋ฅธ์ชฝ ์ ์๋จ์ ํ๋กํ ์ด๋ฏธ์ง ํด๋ฆญํ, Your repositories)์ ๊ฐ์๋ฉด ๋ณธ github ์ผ๋ก๋ถํฐ Fork ๋ repository ๊ฐ ์์ฑ๋์ด ์์ต๋๋ค.
ํด๋น ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ํด๋ฆญํ์ฌ ์ ์ํ์๊ณ , ์ด๋ก์ ๋ฒํผ์ธ Clone or download๋ฅผ ๋๋ฌ์ ํ๋จ์ ๋งํฌ๋ฅผ ๋ณต์ฌ ํน์ ๊ธฐ์ตํด๋ก๋๋ค.
๋ค์ ๋์ปค ์ปจํ
์ด๋ ๋ด๋ถ๋ก ๋์์์ ๋ณต์ฌํ ๋งํฌ๋ฅผ git clone ๋ช
๋ น์ด์ ํจ๊ป ๋ถ์ฌ๋ฃ๊ฑฐ๋ ํ์ดํํด์ค๋๋ค.
root@[๊ณ ์ ๋ฒํธ]:/workspace# git clone https://github.com/[github๊ณ์ ์ด๋ฆ]/TensorFlow.git
์๋ฃ๊ฐ ๋๋ฉด ์ด์ TensorFlow ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค.
root@[๊ณ ์ ๋ฒํธ]:/workspace# cd TensorFlow
root@[๊ณ ์ ๋ฒํธ]:/workspace/TensorFlow#
ํ์ ํจํค์ง๋ฅผ ์ค์นํด์ค๋๋ค.
root@[๊ณ ์ ๋ฒํธ]:/workspace/TensorFlow# pip install --upgrade pip
root@[๊ณ ์ ๋ฒํธ]:/workspace/TensorFlow# pip install -r requirements.txt
๊ฑฐ์ ๋ค์์ต๋๋ค. ์ด์ jupyter notebook ๋ง ์คํํ์๋ฉด ๋ฉ๋๋ค.
root@[๊ณ ์ ๋ฒํธ]:/workspace/TensorFlow# jupyter notebook --ip 0.0.0.0 --allow-root
์ ๋ช ๋ น์ด๋ฅผ ๋งค๋ฒ ์น๊ธฐ ๊ท์ฐฎ์ผ์ ๋ถ๋ค์ ์ํด ์ ์คํฌ๋ฆฝํธ๋ก ๋ง๋ค์ด ๋์์ต๋๋ค.
root@[๊ณ ์ ๋ฒํธ]:/workspace/TensorFlow# sh run_jupyter_docker.sh
jupyter notebook ์ฒ์ ์คํํ ์๋ ์ด๋ฏธ์ง ์ฒ๋ผ ๋์ปค ํฐ๋ฏธ๋์ ๊ธด ํ ํฐ์ด ์๊ธฐ๋๋ฐ ํด๋น ํ ํฐ์ ๋ณต์ฌํด๋ก๋๋ค.
์ด์ ์ธํฐ๋ท ์ฐฝ์ ์ ์ผ ์ฒ์์ด ๋์ปค์คํ์ ์ฃผ์ด์ง IP ์ฃผ์๋ฅผ ์ด์ฉํด [IP์ฃผ์]:8888 ๋ฅผ ์
๋ ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์๋ ํ๋ฉด์ด ๋ฑ์ฅํฉ๋๋ค.
์๊น ๋ณต์ฌํด๋ ํ ํฐ์ ์ ๋ ฅํฉ๋๋ค. ์ฒ์ ์คํ์ด๋ผ๋ฉด ํจ์ค์๋๋ฅผ ์ค์ ํ ์๋ ์์ต๋๋ค. ๋ค์ ์ ์์ ํจ์ค์๋๋ง ์ ๋ ฅํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์ค์ ํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
jupyter notebook ์ ์ข
๋ฃํ๋ ค๋ฉด ๋์ปค ํฐ๋ฏธ๋์ ๋์์์ Ctrl+c ๋ฅผ ๋๋ฒ ํ์๋ฉด ์ข
๋ฃ๋ฉ๋๋ค.
์ด์ ๋ชจ๋ ๊ฐ์ด๋๊ฐ ๋๋ฌ์ต๋๋ค. ์ด์ฌํ ๊ณต๋ถํ์๊ธธ ๋ฐ๋๋๋ค! :)





