도커(Docker) 0.8 출시: 맥 OSX 공식 지원
도커를 위한 리눅스 배포판 boot2docker 머신 도입

도커(Docker) 0.8: OSX 지원

도커Docker는 리눅스Linux 위에서 격리된 또 프로세스를 구축할 수 있도록 해주는 가상화 어플리케이션입니다. 기존의 가상화 어플리케이션에서 하드웨어 전체를 가상화하는 것과 달리 리눅스 컨테이너를 활용하고 있는 도커는 아주 빠르고 쉽게 가상화 환경을 사용할 수 있도록 해줍니다. 이전에 도커 소개 글을 올린 바 있습니다만, 바로 얼마 전 도커가 0.8로 업데이트되었습니다. 0.8에서 가장 큰 변화중 하나는 OSXmacOS를 지원하는 부분입니다. 여기서는 어떤 방식으로 맥을 지원하는 지 알아보고 실제로 설치하는 법에서 다루도록 하겠습니다.

44BITS 소식과 클라우드 뉴스를 전해드립니다. 지금 5,000명 이상의 구독자와 함께 하고 있습니다 📮

TL;DR, 맥에서 바로 도커 시작하기

  1. Virtual 박스 설치
  2. docker, boot2docker 설치
$ brew tap homebrew/binary
$ brew install docker boot2docker
  1. boot2docker 실행
export DOCKER_HOST=tcp://¶
$ ./boot2docker init
$ ./boot2docker up
  1. 도커 컨테이너 실행
$ docker pull ubuntu
$ docker run -rm -i -t ubuntu:latest /bin/bash

맥에서 도커를 실행하는 원리

도커는 기본적으로 리눅스 컨테이너(이하 LXC)를 지원하는 운영체제만 사용할 수 있습니다. 처음에는 우분투Ubuntu 배포판만 지원을 했습니다만, 현재는 좀 더 다양한 운영체제를 지원하도록 확장해나가는 과정에 있습니다. 하지만 LXC를 지원하고 있지 않은 윈도우나 맥에서는 도커를 사용할 수 없습니다.

하지만 엄밀히 말하면 이전에도 맥이나 윈도우에서 도커를 사용하는 것이 불가능한 것은 아니었습니다. 베이그런트Vagrant나 가상머신 어플리케이션을 통해서 리눅스 운영체제를 가상머신으로 실행하고 그 위에 도커를 사용하는 방식이었습니다. 하지만 성능 면에서 불리하고, 사용성이 떨어집니다.

도커 블로그에선 0.8 발표와 함께 맥의 공식 지원을 언급하고 있습니다.

Today we are happy to introduce Docker 0.8, with a focus on Quality and 3 notable features: new builder instructions, a new BTRFS storage driver, and official support for Mac OSX. You can see the full Changelog on the repository, and read below for details on each feature.

그렇다면 여기서 공식적으로 OSX에서 도커를 지원한다는 건 어떤 의미일가요? OSX가 LXC를 지원하지 않는다면 OS에서 도커를 실행하는 건 여전히 불가능합니다. 0.8부터는 boot2docker라는 도커만을 위한 경량 리눅스 Tiny Core Linux 배포판 중 하나를 가상머신으로 사용합니다. 이 운영체제는 RAM에서 작동하며 매우 적은 용량에 단 몇 초만에 부팅이 가능하다고 합니다. 도커 컨테이너 만큼은 아니겠지만 아주 빠릅니다. 가상 머신의 경량화와 맥 클라이언트에서 도커 명령어를 직접 지원함으로써, 네이티브나 다름없는 도커 지원을 실현했습니다.

네이티브 환경에 비하면 약간의 불만족은 남아있겠습니다만, 개발환경을 구축하는 데는 손색이 없습니다.

맥에서 부트2도커(boot2docker)를 활용한 도커 설치

먼저 부트2도커boot2docker를 사용하기 위해서는 버추얼박스VirtualBox가 필요합니다. 공식 사이트에서 OSX용 dmg 파일을 다운로드 받아 설치 과정을 진행해주시기 바랍니다.

도커 공식 사이트에서는 맥 설치 문서를 제공하고 있으니 참조하시기 바랍니다. 먼저 boot2docker를 다운로드하고 실행권한을 추가해줍니다.

$ mkdir ~/bin
$ cd ~/bin
$ curl https://raw.github.com/steeve/boot2docker/master/boot2docker > boot2docker
$ chmod +x boot2docker

다음으로 도커를 다운로드 받고 실행권한을 추가해줍니다. 이 때 DOCKER_HOST를 추가하는 가상 머신의 도커에 접속하기 위함입니다.

$ curl -o docker http://get.docker.io/builds/Darwin/x86_64/docker-latest
$ chmod +x docker
$ export DOCKER_HOST=tcp://
$ sudo cp docker /usr/local/bin/

도커와 부트2도커 설치 과정은 홈브류Homebrew를 통해서도 진행이 가능합니다.

$ brew tap homebrew/binary
$ brew install docker boot2docker

다음으로 부트2도커를 실행합니다. 이 과정을 거치기 전에 버추얼박스를 설치했는지 꼭 확인하시기 바랍니다.

$ ./boot2docker init
$ ./boot2docker up
[2014-02-10 23:40:41] Starting boot2docker-vm...
[2014-02-10 23:41:01] Started.

맥북 에어에서 실제로 걸린 시간은 이미지 다운로드하는데 30여초, 기동하는데 20여초가 걸렸습니다. 이걸로 설치는 끝이 났습니다. 이제 설치가 잘 되었는지 버전을 출력해보도록 하겠습니다.

$ docker version
Client version: 0.8.0
Go version (client): go1.2
Git commit (client): cc3a8c8
Server version: 0.8.0
Git commit (server): cc3a8c8
Go version (server): go1.2

서버, 클라이언트 모두 0.8이 잘 설치되었습니다.

도커 실행 테스트

실제로 도커가 잘 동작하는지 간단한 테스트를 해보겠습니다.

$ docker pull ubuntu
Pulling repository ubuntu
eb601b8965b8: Download complete
9cc9ea5ea540: Download complete
9f676bd305a4: Download complete
9cd978db300e: Download complete
5ac751e8d623: Download complete
511136ea3c5a: Download complete
f323cf34fd77: Download complete
1c7f181e78b9: Download complete
6170bb7b0ad1: Download complete
321f7f4200f4: Download complete
7a4f87241845: Download complete

이미지 pull도 한 번 해봅니다.

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu              13.10               9f676bd305a4        6 days ago          178 MB
ubuntu              saucy               9f676bd305a4        6 days ago          178 MB
ubuntu              13.04               eb601b8965b8        6 days ago          166.5 MB
ubuntu              raring              eb601b8965b8        6 days ago          166.5 MB
ubuntu              12.10               5ac751e8d623        6 days ago          161 MB
ubuntu              quantal             5ac751e8d623        6 days ago          161 MB
ubuntu              10.04               9cc9ea5ea540        6 days ago          180.8 MB
ubuntu              lucid               9cc9ea5ea540        6 days ago          180.8 MB
ubuntu              12.04               9cd978db300e        6 days ago          204.4 MB
ubuntu              latest              9cd978db300e        6 days ago          204.4 MB
ubuntu              precise             9cd978db300e        6 days ago          204.4 MB

풀한 이미지 리스트도 한 번 보고, 컨테이너 리스트도 출력해보죠.

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS             PORTS               NAMES

풀도 잘 되고 images 명령어도 동작하는 걸 볼 수 있습니다. 아직 실행한 컨테이너는 없으니 아무것도 뜨지 않습니다. 일단 작동하고 있는 것 같습니다. 마지막으로 컨테이너를 실행해보겠습니다.

$ docker run -rm -i -t ubuntu:latest /bin/bash
root@e616c4c3fd53:/# 

컨테이너에서 쉘이 실행된 화면을 바로 확인하실 수 있습니다.

트러블 슈팅

export DOCKER_HOST=tcp://¶

명령어를 통해 DOCKER_HOST를 반드시 설정해줘야합니다. 이 설정을 하지 않으면 다음과 같은 에러가 발생합니다.

$ docker images
2014/02/10 23:48:19 dial unix /var/run/docker.sock: no such file or directory

이는 도커가 기본적으로 로컬 머신 상의 /var/run/docker.sock를 통해서 작동하기 때문입니다. 이를 가상 머신에서 가동중인 도커와 바로 연동할 수 있도록 tcp://로 연결하도록 설정해주는 것입니다. export DOCKER_HOST=localhost로 지정하는 것과 같습니다.

또한 ./boot2docker 명령어를 통해서 부트2도커 가상머신을 재실행하거나 멈추는 작업을 수행할 수 있습니다.

$ ./boot2docker
Usage ./boot2docker {init|start|up|pause|stop|restart|status|info|delete|ssh|download}

마치며

이제 무거운 가상 머신 없이도 맥에서 도커를 부담없이 설치하고 사용해볼 수 있습니다.

44BITS 로고

컨테이너란? 리눅스의 프로세스 격리 기능

🏷️ 키워드, 2020-01-23 - 리눅스 컨테이너는 운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 기술을 의미합니다. 하드웨어를 가상화하는 가상 머신과 달리 커널을 공유하는 방식이기 때문에 실행 속도가 빠르고, 성능 상의 손실이 거의 없다는 장점이 있습니다.
도움이 되셨나요?
RSS 리더 피들리에서 최신 글을 구독할 수 있습니다.
트위터, 페이스북으로 44BITS의 새소식을 전해드립니다.
✔ 44BITS의 다른 활동도 확인해보세요. 다양한 채널에서 만나볼 수 있습니다.
✔ 따뜻한 댓글 하나와 피드백은 큰 힘이 됩니다.

우분투(Ubuntu) 14.04 트러스티 타르 LTS 4월 30일 부로 지원 종료

🗞 새소식, 2019-05-02 - 우분투 14.04 트러스티 타르 LTS 버전이 2019년 4월 30일 부로 지원 종료되었습니다. 우분투의 LTS 버전은 릴리즈로부터 총 5년 간의 업데이트를 보장합니다. 공식 지원이 종료되더라도 캐노니컬(Canonical)의 유료 서비스를 통해서 3년 간 추가적인 지원을 받을 수 있습니다.

마이크로소프트 빌드 2019, 윈도우 터미널 발표 - 파워셸, 커맨드 프롬프트 WSL 지원

🗞 새소식, 2019-05-08 - 마이크로소프트 빌드 2019 행사에서 윈도우 터미널이 발표되었습니다. 윈도우 터미널은 커맨드 프롬프트, 파워셸, WSL을 지원하는 커맨드라인 도구입니다. 정식 릴리스는 2019년 겨울로 예정되어있으며 오픈소스로 깃허브에 공개되었습니다.

만들면서 이해하는 도커(Docker) 이미지: 도커 이미지 빌드 원리와 OverlayFS

🗒 기사, 2019-12-24 - 도커 이미지는 유니온 마운트 기술을 활용해 계층화된 레이어들로 구성되며, 도커 레지스트리를 사용해 쉽고 효율적인 공유를 가능하게 해줍니다. 이 글에서는 도커 이미지가 저장되는 방식과 도커 이미지 빌드의 원리, 그리고 그 바탕이 되는 유니온 마운트 구현체의 하나인 OverlayFS에 대해서 알아봅니다.