집에서 사용하는 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 를 사용 할 수 있습니다.