Computer >> 컴퓨터 >  >> 소프트웨어 >> 가상 머신

Windows 10에서 Docker 시작하기 – 초보자를 위한 입문 가이드

```html

Docker, 드디어 Windows를 지원하다

도커(Docker)는 오랜 시간 기술 업계의 뜨거운 관심 속에서 성장해 왔습니다. 기술, 서비스, 비즈니스, 접근성 사이의 탁월한 균형 덕분에 컨테이너 기술을 갈망하던 개발자들에게 새로운 트렌드로 자리 잡았고, 어느새 '컨테이너'라는 단어의 동의어처럼 여겨질 정도가 되었습니다. 최근에는 기업들이 갈구하는 오케스트레이션(Orchestration) 기능까지 선보이며 상업 시장으로 영역을 넓히고 있습니다. 그렇다면 다음 논리적인 단계는 무엇일까요? 바로 윈도우(Windows)입니다.

윈도우에서도 동작하는 컨테이너 환경은 클라우드나 리눅스로의 전환이 쉽지 않은 기업과 조직들의 진지한 관심을 끌 수 있습니다. 이러한 배경에서 도커는 현재 윈도우 서버와 클라이언트 에디션 모두에서 베타 형태로 제공되고 있습니다. 이 글에서는 마이크로소프트 환경에서 도커를 시작하는 방법을 단계별로 소개합니다.

시작하기 전에 확인할 사항

먼저 두 가지를 짚고 넘어가겠습니다.

첫째, 도커는 어느 플랫폼에서든 도커입니다. 프레임워크와 기본 사용법에 이미 익숙하다면, 윈도우에서 컨테이너를 구동하는 방법만 익히면 충분합니다. 기초 지식이 필요하다면 도커 사용법에 관한 상세 가이드를 참고하세요. 원래 리눅스 기준으로 작성된 가이드이지만, 명령어는 그대로 적용됩니다. supervisord 활용법과 도커 네트워킹 튜토리얼도 함께 살펴보시면 큰 도움이 됩니다.

둘째, 도커가 시스템에서 기본적으로 실행되려면 Hyper-V가 필요합니다. 이는 곧 64비트 윈도우 10 프로(Pro) 또는 서버(Server) 에디션이 필수라는 의미입니다. 필자의 경우 홈(Home) 버전만 사용할 수 있는 환경이었기에, 백그라운드에서 헤드리스(headless) VirtualBox 엔진을 구동해 이러한 제약을 우회하도록 설계된 Docker Toolbox를 테스트해 보았습니다.

Docker Toolbox 설치하기

Toolbox 에디션의 설치 과정은 의외로 간단합니다. 설치를 마치면 시스템 메뉴에 퀵스타트(Quickstart) 항목이 생성되며, 이를 실행하면 환경 초기화, SSH 키 구성 등 필요한 설정이 자동으로 진행됩니다. 과거에 Vagrant 환경을 구축할 때의 경험과 상당히 유사해서 낯설지 않을 것입니다.

참고로 도커 팀은 로고 하나까지 세심한 디테일을 놓치지 않습니다. 이런 세심함이 기존 기술을 대중의 눈높이에 맞춰 재해석하는 능력으로 이어지는 것이죠. 어쩌면 이것이 도커가 성공할 수밖에 없었던 이유일지도 모릅니다.

설정에는 시간이 다소 걸리고 I/O 부하도 상당합니다. 완료될 때까지 기다리면 셸이 준비되며, 일반적인 리눅스 머신에서와 똑같이 도커 명령어를 입력할 수 있습니다.

수동 서비스 구성 시 발생하는 오류

PowerShell을 열고 바로 도커 명령어를 입력하고 싶은 마음이 들지만, 안타깝게도 도커 서비스가 설치되어 있지 않으면 동작하지 않습니다. 서비스를 수동으로 등록할 수는 있지만, 윈도우 서버 에디션이 아니면 시작에 실패합니다. 실제 과정을 살펴보겠습니다.

명령줄을 띄운 뒤 가장 먼저 시도하게 되는 것은 이미지 내려받기일 것입니다. 하지만 다음과 같은 오류를 마주하게 됩니다. 앞서 언급했듯이 서비스가 네이티브로 설치되어 있지 않기 때문입니다.

PS C:\Users\Roger Bodger> docker pull centos:7
Warning: failed to get default registry endpoint from daemon (An error occurred trying to connect: Get https://%2F%2F.%2Fpipe%2Fdocker_engine/v1.23/info: open //./pipe/docker_engine: The system cannot find the file specified.).
Using system default: https://index.docker.io/v1/
An error occurred trying to connect: Post https://%2F%2F.%2Fpipe%2Fdocker_engine/v1.23/images/create?fromImage=centos%3A7: open //./pipe/docker_engine: The system cannot find the file specified.

이 오류 메시지를 인터넷에서 검색해 데몬을 직접 구성하는 방식으로 문제를 해결해 볼 수 있습니다. 마지막 단계를 제외하고는 대체로 잘 진행되지만, 막상 도커 서비스를 시작하려 하면 실패합니다.

PS C:\Program Files\docker> Start-Service docker
Start-Service : Failed to start service 'Docker Engine (docker)'.
At line:1 char:1
+ Start-Service docker
+ ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (System.ServiceProcess.ServiceController:ServiceCommandException)
    + FullyQualifiedErrorId : StartServiceFailed

원인은 이벤트 로그에서 확인할 수 있는데, 의외로 단순합니다. 즉, 윈도우 데몬은 윈도우 서버 2016 기술 미리보기 5(build 14300) 이상에서만 구동된다는 것입니다.

fatal: Error starting daemon: The Windows daemon requires Windows Server 2016 Technical Preview 5 build 14300 or later

Windows 10에서 Docker 사용하기

이제 본격적으로 도커를 사용해 볼 차례입니다. 사용 방식은 앞서 소개한 리눅스 튜토리얼과 완전히 동일합니다. 최신 버전에는 아직 다루지 않은 추가 명령어와 기능들이 포함되어 있지만, 나머지 부분은 그대로 작동합니다. 튜토리얼 순서대로 따라 하면 몇 초 안에 컨테이너화된 Apache 웹 서버, SSH 등 다양한 인스턴스를 띄울 수 있습니다. 이 지점부터는 익숙한 도커 워크플로우를 그대로 활용하면 됩니다.

결론: 윈도우 포팅에 대한 평가

필자는 네이티브 구현과 Toolbox를 포함한 도커의 윈도우 포팅에 만족스러운 반응을 보입니다. 더 많은 사람들이 도커를 접하고 탐험할 기회가 넓어졌기 때문입니다. 이번에 Toolbox만 테스트했지만, 소개된 대로 잘 작동했습니다. 프레임워크는 빠르고 안정적으로 구동되었고, 눈에 띄는 오버헤드나 치명적인 버그, 오류는 발견되지 않았습니다.

결국 이것은 우리가 아는 그 도커 그 자체이며, 바로 이 점이 가장 큰 매력입니다. 윈도우에서도 리눅스에서와 동일하게 작동한다면, 운영체제가 달라져도 문제없이 이식 가능한 크로스 플랫폼 애플리케이션 개발에 대한 확실한 동기를 제공합니다. 물론 아직은 이론의 영역이 큽니다. 현실적으로 상당수 소프트웨어는 단일 스레드 기준으로 설계되어 있고, 컨테이너 개념이 실무 애플리케이션 전반에 자리 잡기까지는 갈 길이 멉니다. 그럼에도 도커 팀은 이 전환의 흐름을 실질적으로 이끌고 있으며, 윈도우 10 지원은 연이은 성공 행진에 추가된 또 하나의 의미 있는 성과입니다. 앞으로 더 많은 기능을 탐구하고 새로운 키워드와 튜토리얼을 가지고 다시 찾아오겠습니다.