티스토리 뷰

최근 사내에 서버 개발환경을 Docker를 이용하여 로컬 개발방식으로 변경하는 작업을 했었는데, Docker for Windows 를 사용했을때 많은 이슈가 발생되었습니다. Window에서 Docker를 이용할 경우 어떠한 이슈사항들이 있는지 정리해 보았습니다.

필수사항


Docker for Windows를 사용시 발생했던 이슈들은 아래와 같습니다.


- Hyper-V 사용가능 (Windows 10 Professional or Enterprise 64-bit 만 사용 가능)

- CPU 가상화 사용가능(BIOS에서 활성화 해야함)

- Docker Client에서 사용하는 포트 방화벽 해제

- Windows 사용자명에 한글이 있는 경우

1. Hyper-V 사용가능한 윈도우 버전

기본적으로 Docker는 리눅스에서만 동작하다보니 OSX나 Windows에서는 가상머신으로 Docker Host를 띄워서 사용하도록 되어있습니다. 

이러한점을 Docker for windows에서는 Hyper-V를 이용하여 해결하고 있습니다.


이 Hyper-V는 Windows Server 2008에 추가되었던 하이퍼바이저 기반 가상화 시스템으로 Windows 8 프로 버전부터 일반 개인용 윈도우에 포함되기 시작했습니다. Docker for Windows 다운로드시 아래와 같은 문구가 있습니다.


* Requires Microsoft Windows 10 Professional or Enterprise 64-bit For previous versions get Docker Toolbox


Windows 10 프로버전 혹은 엔터프라이즈 64비트가 필요합니다. 이전버전의 윈도우 사용자분들은 Docker Toolbox를 이용하여 Docker를 사용해야합니다.

이 글에서는 Docker Toolbox를 이용한 Docker 사용(VirtualBox)에 대해 다루지 않고있습니다.


Windows 10에서 Hyper-V를 활성화 시킬려면 제어판 -> 프로그램 추가/제거 -> Windows 기능 켜기/끄기 에서 Hyper-V를 포함 하위 항목을 모두 체크해 주세요.




2. CPU 가상화 사용가능한지 여부

윈도우 버전이 Hyper-V를 지원하더라도 사용하고 있는 CPU와 메인보드가 가상화를 지원하는지 확인해야 합니다.


Windows 부팅시 BIOS 셋팅에 가시면 아래와 같이 가상화 활성화 여부가 있습니다.



해당 설정을 활성화(Enabled)로 변경하신 후 저장해주시기 바랍니다.


3. Docker Client에서 사용하는 포트 방화벽 해제

Docker는 기본적으로 linux에서만 작동이 가능하다보니 docker for windows / docker for mac 등은 리눅스 가상머신을 설치한 후 리눅스에 Docker daemon을 설치하는 방식으로 구동됩니다. (아래 그림 참고)


windows.PNG


이러한 방식을 이용하다보니 Docker client에서 docker host과 통신이 필요한데 여기에서 사용되는 포트가 방화벽으로 막아둘 경우 아래와 같은 에러가 발생될 수 있습니다.(docker file sharing이 안되는 경우)



기본적으로는 445 port를 사용하고 있기때문에 windows 방화벽에서 455 port를 차단했는지 확인하셔야 합니다.

4. Windows 사용자명에 한글이 있는 경우

이건 docker for windows 문제이기 보다 dockerToolbox의 문제입니다.

(사실 사용자명이 한글이면 문제되는 프로그램이 한둘이 아니기 때문에 왠만해선 사용자명은 영어로 사용하세요.)


dockerToolbox는 python으로 만들어졌는데 사용자 계정 폴더가 한글이 포함될 경우 문제가 발생된다. 이 경우는 마소에서도 관리자 계정을 영어로 새로 생성하라고 할 정도로 골치 아픕니다. 구글에서 찾아보면 여러가지 방식이 나오는데 마소에서 정식으로 권고하는 내용이 아니다보니 이 내용은 기재하지 않겠습니다.


* 앞으로 계속 사용하면서 발생되는 이슈들은 포스팅에 업데이트 될 내용이며, 만약이외 다른 이슈가 있다면 댓글로 피드백 주시면 감사하겠습니다.


댓글
댓글쓰기 폼