민서네집

Windows 10에서 Docker for Windows 설치 본문

머신러닝

Windows 10에서 Docker for Windows 설치

브라이언7 2016. 7. 15. 15:40

Docker를 Download 받기 위해서 https://www.docker.com/ 사이트로 가보면 


Docker for Mac, Docker for Windows는 메인 페이지에서 바로 다운로드 받을 수 있는데,


Docker Tool Box는 Get Started with Docker 버튼을 눌러서 


http://www.docker.com/products/docker#/  웹페이지에서 


For previous versions get Docker Toolbox 링크를 눌러야지 다운로드 받는 페이지로 이동합니다.


http://www.docker.com/products/docker-toolbox


Docker 사이트에서 Docker Tool Box 보다는 Docker for Windows를 밀고 있다는 느낌이 듭니다.


그런데 Docker for Windows를 사용하기 위해서는 설치부터가 제약조건이 있습니다.



제 노트북은 Windows 10 Pro 임에도 불구하고, Windows 10 build number가 10586 보다 낮아서 아예 설치조차 되지 않았습니다. 


(설치 요구사항: Windows 10 Pro 64비트, Build Number 10586 이상) 


작업 표시줄의 웹 및 Windows 검색창에서 winver 라고 입력하면 다음과 같이 Windows 10의 버전을 알려주는 창이 뜹니다.



제 노트북은 이상하게 Windows 10 Build Number 10586으로 업그래이드 할 때 계속 실패해서, 아예 Windows 10을 Clean 설치했습니다.


Docker Tool Box를 설치할 때와는 다르게, Virtual Box와 Git For Windows 가 설치되지 않습니다.


명령 프롬프트 창이나 Windows PowerShell 에서 Docker 명령을 실행할 수 있습니다.


Docker는 Windows 시작할 때 자동 시작됩니다. (옵션으로 조정할 수 있는데, 이것이 default) 


작업 표시줄 Tray 에 보면 고래 모양의 Docker 아이콘이 보이고, 이 아이콘을 마우스 오른쪽 클릭해서 Setting을 변경할 수 있습니다.



Docker for Windows를 실행하기 위해서는 Hyper-V 기능이 설치되어야 합니다.



Windows 10에 내장된 Hyper-V 관리자를 통해서 Docker 실행 상황을 모니터링 할 수 있습니다.



TensorFlow Docker를 다운로드 받기 위해서 삽질한 얘기를 안할 수가 없네요.


PS C:\Windows\system32> docker run -p 8888:8888 -p 6006:6006  --name tensorflow  -it b.gcr.io/tensorflow/tensorflow:latest-devel

Unable to find image 'b.gcr.io/tensorflow/tensorflow:latest-devel' locally

C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Get https://b.gcr.io/v1/_ping: dial

 tcp: lookup b.gcr.io on 192.168.65.1:53: read udp 10.0.75.2:39368->192.168.65.1:53: i/o timeout.

See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.


다운로드 받다가 에러나면서 설치가 안되기를 몇 번 해서 저는 설치가 잘 안되었거나 제가 뭘 잘못한줄 알았습니다.


인터넷에서 검색해보니 docker 에서 DNS 서비스를 이용하는데 문제가 있다는 것을 알았습니다.

https://github.com/boot2docker/boot2docker/issues/365


http://stackoverflow.com/questions/32047660/docker-for-windows-not-working


if you are using docker for windows(beta) follow this steps:

  • Disable the "DockerNAT" network adapter
  • Run the "Reset to factory defaults" via the taskbar / docker / settings / Reset to factory defaults"

(혹시 이게 해결책? 확실치 않음)


docker를 실행해 보면 인터넷에서 파일을 받아오도록 하면 간혹 실패하는데 exit 하고 다시 들어가는 식으로, 몇 번의 시도 끝에 성공하였습니다. 


오늘 Docker Update 창이 떴는데, DNS에 관련된 이슈가 해결된 것 같네요.



Docker만 업데이트 하면 인제는 잘 되겠죠?


Tensorflow Docker를 다운로드 받아서 MNIST 예제를 실행해 봤을때, 실행시간 비교


실행예제: 


# python -m tensorflow.models.image.mnist.convolutional


Docker ToolBox: 89분

Docker for Windows: 59분 (CPU 2 - default)

Docker for Windows: 51~55분 (CPU 4)


측정해 본 결과, Docker for Windows 는 Docker ToolBox와 비교해서 33% 정도의 속도 향상이 있었습니다. 아마도 H/W를 이용하는, 운영체제에 내장된 가상화 기술(Hyper-V)을 이용하기 때문에 좀 더 효율적이 아닐까 생각해 봅니다.


Docker Setting 에서 CPU 갯수를 변경할 수 있는데, CPU 2 개와 4개를 사용할 때 생각보다 실행시간 차이가 별로 나지 않았습니다.



Docker for Windows를 이용하면서 Docker 안의 시간이 맞지 않아서 삽질한 얘기를 안할 수가 없네요. (Docker Toolbox에서도 마찬가지일 것 같긴 한데, 정확하지는 않습니다.)


시간이 맞지 않아서 시간을 바꾸려고 했더니 id가 root 인데도 불구하고 Permission 이 없다는 에러가 납니다.

(Time Zone이 Default 로 UDT 로 되어 있는데, Time Zone을 KST 로 바꾸는 것은 쉽게 됨.)


인터넷에서 검색해 보니, Docker는 Host 컴퓨터와 시스템 자원을 공유하기 때문에 시간을 바꿀 수 없다고 합니다.

그런데, 어떻게 Host 컴퓨터와 시간이 다를 수 있지...?


알고보니 Host 컴퓨터가 절전모드로 들어가면 Docker의 시간이 멈춥니다.

어떻게 보면 이런 방식이 오히려 프로그램의 실행시간을 측정하기가 더 좋기는 하네요.

시간이 안 맞을때 Host 컴퓨터와 맞추는 방법은 Docker를 Reset 하는 것입니다. (Restart Docker... 클릭)



그런데 Hyper-V 가 활성화 된 상태에서는 Docker Toolbox가 실행되지도 않습니다.

실행시키는 방법이 있는 웹페이지도 발견했는데, 해 보지는 않았습니다.


Using Docker Toolbox with Hyper-V on Windows 10


Docker for Windows 를 사용할 때 Output 에 matplotlib 라이브러리의 Graph Image가 있으면 jupyter notebook을 save 할 때 에러가 나는 issue 가 있는데요.


Hyper-V 관리자 창에서 IP주소 항목에 보이는 주소로 웹브라우저로 접속하면 에러가 안 납니다.


[참고] 

[Docker for Windows] jupyter notebook - Graph Image Save 안되는 문제 해결

http://bryan7.tistory.com/779


'머신러닝' 카테고리의 다른 글

TensorFlow 예제  (0) 2016.07.19
CNN (Convolution Neural Networks)  (0) 2016.07.15
TensorBoard  (0) 2016.07.13
[Facebook 텐서팔로우 스터디]  (0) 2016.07.12
Creative Applications of Deep Learning with TensorFlow  (0) 2016.07.12
Comments