집에서 사용하는 Linux용 PC 는 없고, Mac Mini (High Sierra) 에서의 docker 는 이러저러한 제약이 있다는 것을 알고서는 Raspberry PI (이하, RPi) 를 이용해서 docker 를 설치해 보고자 합니다.

1. 사용 기기

  • H/W: Raspberry Pi 2 Model B Rev 1.1
  • OS: Raspbian GNU/Linux 8 (jessie)
  • Kernel v4.9.35-v7+

2. Docker 설치 script 를 다운 받자!

Docker 는 다른 package 와 다르게 apt 로 설치 하지 않고, 다음과 같이 별도의 Script 를 이용해야만 합니다.

$ curl -fsSL get.docker.com -o get-docker.sh

다운로드 받은 Shell script 를 살짝 열어 보면 이 script 를 이용해서 설치 가능한 OS l종류가 상당히 많이 있음을 확인 가능합니다. 당연히 이번 설치에 사용한 armv7l-raspbian-jessie 도 지원하고 있습니다.

SUPPORT_MAP="
x86_64-centos-7
x86_64-fedora-24
x86_64-fedora-25
x86_64-fedora-26
x86_64-fedora-27
x86_64-debian-wheezy
x86_64-debian-jessie
x86_64-debian-stretch
x86_64-debian-buster
x86_64-ubuntu-trusty
x86_64-ubuntu-xenial
x86_64-ubuntu-zesty
x86_64-ubuntu-artful
s390x-ubuntu-xenial
s390x-ubuntu-zesty
s390x-ubuntu-artful
ppc64le-ubuntu-xenial
ppc64le-ubuntu-zesty
ppc64le-ubuntu-artful
aarch64-ubuntu-xenial
aarch64-ubuntu-zesty
aarch64-debian-jessie
aarch64-debian-stretch
armv6l-raspbian-jessie
armv7l-raspbian-jessie
armv6l-raspbian-stretch
armv7l-raspbian-stretch
armv7l-debian-jessie
armv7l-debian-stretch
armv7l-debian-buster
armv7l-ubuntu-trusty
armv7l-ubuntu-xenial
armv7l-ubuntu-zesty
armv7l-ubuntu-artful
"

3. get-docker.sh script 실행하여 docker 설치하기

다운로드 받은 get-docker.sh 을 실행하면 docker 를 설치해 줍니다. 설치 완료 후에는 아래와 같이 설치한 docker 버전 정보를 보여 줍니다.

$ sudo bash get-docker.sh

Client:
 Version:	18.01.0-ce
 API version:	1.35
 Go version:	go1.9.2
 Git commit:	03596f5
 Built:	Wed Jan 10 20:16:34 2018
 OS/Arch:	linux/arm
 Experimental:	false
 Orchestrator:	swarm

Server:
 Engine:
  Version:	18.01.0-ce
  API version:	1.35 (minimum version 1.12)
  Go version:	go1.9.2
  Git commit:	03596f5
  Built:	Wed Jan 10 20:12:44 2018
  OS/Arch:	linux/arm
  Experimental:	false

4. docker 서비스 동작 확인

docker 설치가 제대로 되었다면 docker daemon 이 동작하고 있을 겁니다. ps 명령을 이용해서 확인해 보았습니다.

$ ps auwx|grep docker
root      3078  0.7  3.9 913936 34568 ?        Ssl  14:59   0:11 /usr/bin/dockerd -H fd://
root      3084  0.7  1.7 894000 15748 ?        Ssl  14:59   0:11 docker-containerd --config /var/run/docker/containerd/containerd.toml

docker daemon이 잘 동작하고 있습니다.

5. docker 프로세스 확인해 보자!

docker daemon 이 동작하고 있으므로 다음과 같이 실행 중인 docker container 가 있는지 확인해 보겠습니다.

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS       NAMES

현재는 동작 중인  docker container 는 없음을 알 수 있습니다.

여기까지 완료하였다면 RPi 에서 docker 사용이 가능합니다. 단, docker 명령을 사용할 때는 항상 root 또는 ‘일반계정+sudo‘ 를 이용해야 합니다.

6.일반 계정으로 docker 사용 가능하게 설정하기

원래 docker 는 root 권한으로 실행해야만 합니다. 그러나, root 권한이 아닌 일반 계정(non-root account) 에서 매 번 ‘sudo’ 를 붙여서 명령을 입력하는 것은 매우 귀찮은 일이 아닐 수 없습니다. 일반 계정에서 sudo 없이도 docker 실행이 가능하도록 하기 위해서 일반 계정을 docker group 에 포함 시켜 주도록 합니다.

여기서는 RPi 의 기본 계정인 pi 를 docker group 에 포함시켰습니다.

$ sudo usermod -aG docker pi

설정을 마친 후, logout 하고 다시 login 하면, sudo 없이 docker 명령을 사용 할 수 있습니다. 단, 이 경우, 일반 계정이 root 권한을 부여 받아서 발생할 수 있는 보안상 취약점이 있다는 사실을 명심해야 하겠습니다.
마지막으로 일반 계정을 이용해서 docker 명령 실행이 가능함을 확인하였습니다.

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS       NAMES

 

이 다음 부터는 일반 Linux machine 과 동일하게 docker 를 사용 할 수 있습니다.