나온지는 좀 됬지만, 요즘들어 Docker 와 Kubernetes 가 점점 더 힙해지고 있습니다.

관련하여 Docker 와 Kubernetes 설치 방법에 대해서 알아보도록 하겠습니다.



Docker 설치


본 시리즈에서의 모든 환경은 CentOS7 기준입니다.




Docker 란 무엇인가?



Docker 가 무엇인지, 또 어떤게 매력적인지에 대해서는 수많은 글들이 있으므로 저는 생략하도록 하겠습니다.

포스팅은 우선적으로 설치방법에 대해서 포커스를 맞출 예정이며, 이후에 다시 처음으로 돌아가서 사용방법등을 다뤄보도록 하겠습니다.


앞서 저의 경우 CentOS7 환경이라고 말씀드렸지만, 그 이외의 환경에서도 당연히 설치 가능합니다.

공식적인 설치 방법은 홈페이지에 가면 잘 나와 있습니다.

포스팅에서는 먼저 공식적인 URL 을 먼저 공유드리고, 이를 요약하는 방식으로 진행하겠습니다.




Docker 설치하기



Docker 의 공식 설치방법 주소

https://docs.docker.com/install/linux/docker-ce/centos/



먼저 yum 을 update 해 주고 시작합시다


$ sudo yum update



그리고 Repository 추가를 위해서 먼저 패키지를 설치해 줍니다.


$ sudo yum install -y yum-utils \

  device-mapper-persistent-data \

  lvm2



이어서 stable 버전으로 repository 를 등록해 줍니다.


$ sudo yum-config-manager \

    --add-repo \

    https://download.docker.com/linux/centos/docker-ce.repo



이제 Docker (CE) 를 설치합니다.

$ sudo yum install docker-ce



설치는 별 무리없이 진행될 것입니다.
이제 Docker 를 실행하고, System 에 등록을 해 줍니다.

$ sudo systemctl start docker

$ sudo systemctl enable docker




도커는 기본적으로 root 권한을 필요로 합니다.

아래처럼 사용자를 docker 그룹에 추가하면, sudo 없이 docker 를 사용할 수 있습니다.

{userId} 에는 사용자 ID 를 넣어주면 됩니다.


$ sudo usermod -aG docker {userId}


usermod 는 /usr/sbin 에 위치하고 있습니다. 만약 usermod 를 찾지 못한다면, 전체 경로를 입력하면 됩니다.


$ sudo /usr/sbin/usermod -aG docker {userId}


그리고 이것은 다음 로그인부터 적용됩니다.

그러므로 로그아웃 후 재로그인 해야 합니다.




Docker 설치 확인



정상적으로 설치가 되었는지 Docker 를 실행해 봅니다.


$ docker run hello-world




아래처럼 나오면 정상적으로 설치가 된 것입니다.

Unable to find image 'hello-world:latest' locally

latest: Pulling from library/hello-world

9db2ca6ccae0: Pull complete

Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc

Status: Downloaded newer image for hello-world:latest


Hello from Docker!

This message shows that your installation appears to be working correctly.


To generate this message, Docker took the following steps:

 1. The Docker client contacted the Docker daemon.

 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.

    (amd64)

 3. The Docker daemon created a new container from that image which runs the

    executable that produces the output you are currently reading.

 4. The Docker daemon streamed that output to the Docker client, which sent it

    to your terminal.


To try something more ambitious, you can run an Ubuntu container with:

 $ docker run -it ubuntu bash


Share images, automate workflows, and more with a free Docker ID:

 https://hub.docker.com/


For more examples and ideas, visit:

 https://docs.docker.com/engine/userguide/





CentOS 7 에서의 Docker 설치문제



CentOS 7 환경에서 도커를 설치하다보면, 예상치 못한 문제가 발생합니다.


저의 경우 방화벽 문제로 고생하였습니다.

만약 본인이 Firewalld 을 사용중이라면 아래 이슈를 먼저 확인해 보시길 추천합니다.

당연한 이야기지만 Firewalld 확인은 아래처럼 하시면 됩니다.


$ sudo systemctl status firewalld



만약 firewalld 을 사용중이라면, ubuntu 를 샘플로 설치해서 네트워크 사용에 문제가 없는지 확인합니다.


$ docker run --rm -it ubuntu:16.04 /bin/bash


명령을 실행하고 기다리면, 수 초 후 ubuntu 의 bash 쉘이 실행됩니다.


root@86e5dcc1d78f:/# apt-get update


정상적으로 업데이트 된다면, 문제가 없는 것입니다.


만약 아래처럼 나온다면,, 방화벽 문제입니다.


root@49db36e6f3c3:/# apt-get update

Err:1 http://security.ubuntu.com/ubuntu xenial-security InRelease

  Temporary failure resolving 'security.ubuntu.com'

Err:2 http://archive.ubuntu.com/ubuntu xenial InRelease

  Temporary failure resolving 'archive.ubuntu.com'

Err:3 http://archive.ubuntu.com/ubuntu xenial-updates InRelease

  Temporary failure resolving 'archive.ubuntu.com'

Err:4 http://archive.ubuntu.com/ubuntu xenial-backports InRelease

  Temporary failure resolving 'archive.ubuntu.com'

Reading package lists... Done

W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial/InRelease  Temporary failure resolving 'archive.ubuntu.com'

W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial-updates/InRelease  Temporary failure resolving 'archive.ubuntu.com'

W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/xenial-backports/InRelease  Temporary failure resolving 'archive.ubuntu.com'

W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/xenial-security/InRelease  Temporary failure resolving 'security.ubuntu.com'

W: Some index files failed to download. They have been ignored, or old ones used instead.


해결방법을 보면, 아래와 같이 하면 된다고는 하지만 관련해서 많은 글들이 있습니다.

매우 자세히 해당 현상에 대해서 정리해 놓은 글이 있었는데, 주소를 못 찾겠네요.

아무튼 저의 경우에는 아래와 같은 방법으로는 해결이 되지 않았습니다.


# firewall-cmd --permanent --zone=trusted --add-interface=docker0

# firewall-cmd --permanent --zone=trusted --add-port=4243/tcp



firewalld service 를 restart 하거나 docker 를 restart 하고나면,, 위 문제가 재발하였습니다.

혹시 방법을 아시는 분은 댓글 달아주세요.


일단 저처럼 해결이 되지 않는 분은,,

어쩔수 없이 firewalld 을 내리고 진행하시기 바랍니다. (정신건강에 이롭습니다)



$ sudo systemctl stop firewalld

$ sudo systemctl disable firewalld