이번 글은 유튜브의 이성미님의 따배런 채널에 있는 약 10시간 분량의 도커 강의를 들으며 기록하는 글입니다.
먼저 도커는 컨테이너 기반 가상화 도구입니다. 다시 말해, 컨테이너를 다루는 하나의 도구인 것이죠. 그렇기 때문에 컨테이너에 대해 먼저 알아야 하는데, 컨테이너란 실행에 필요한 모든 파일을 포함한 전체 실행환경에서 어플리케이션을 패키징하고 격리할 수 있는 기술입니다. 즉, apache와 jdk와 DB와 실행할 소스를 컨테이너에 넣어 구성한 다음 그 컨테이너를 리눅스 서버에 올려 실행시킬 수 있다는 말입니다. 예를 들자면 5개의 서버에 모두 동일한 설정을 해야 하는 과정이 사라지고, 대신 이 하나의 컨테이너만 올리면 5개의 서버 모두에서 실행시킬 수 있는 것이죠.
그리고 이 도커 컨테이너를 리눅스 운영체제에서 실행시켜야 하는 chroot, namespace, cgroup이라는 3가지 이유가 있습니다. chroot는 독립된 공간을 형성하고, namespace는 isolate 기능을 지원하며, cgroup은 필요한 만큼의 하드웨어를 지원합니다. 그리고 이 모든 건 리눅스의 커널이 지원하는 기능입니다. 만약, Windows나 Mac으로 도커 컨테이너를 실행시키려면 Hypervisor 기능을 활성화해 커널 기능을 지원해야 합니다. 이와 다르게 리눅스는 기본적으로 커널을 지원하기 때문에 주로 리눅스에서 운영하는 것입니다
이제 VM 프로그램을 설정합니다. Oralce에서 제공하는 VirtualBox 프로그램을 설치하고, 네트워크를 먼저 설정해줍니다. '파일-네트워크 관리자' 탭에 들어가 'NAT 네트워크'에서 NAT 네트워크를 하나 생성해줍니다. 그리고 여기에 포트포워딩도 설정합니다.
그리고 CentOS7으로 가상 서버를 생성합니다.
그리고 최초 설정 시 여러 설정들을 해주어야 하는데, 먼저 TimeZone을 서울로 지정하고 네트워크를 설정합니다. 이 부분에서 이 가상 서버의 IP를 고정 IP로 설정합니다.
네트워크 최종 설정 모습은 이렇습니다.
이제 서버에 들어가게 되면 몇 가지 설정을 확인해주어야 하는데요, 먼저 호스트네임을 확인합니다.
vi /etc/hostname
그리고 hostname을 추가해줍니다. 1, 2번째 줄은 원래 있는 내용이고 3, 4번째 줄이 추가한 내용입니다.
vi /etc/hosts
이 VM 서버의 IP를 확인해보겠습니다.
ifconfig
그리고 외부 IP와 통신해보겠습니다. 8.8.8.8은 구글의 DNS 서버의 IP입니다.
ping 8.8.8.8 -c 3
이제 도커를 설치할텐데요, 설치 방법에는 크게 Repository 이용한 설치, Donwload 설치, Script 이용한 설치까지 세 가지가 있습니다. 저는 이 중에 Repository 방식을 사용하겠습니다. 이 방식은 리눅스 서버에서 도커측 url에 접속해 내려받는 방법이기 때문에 네트워크 등 몇 가지 설정들을 요구합니다. 그리고 이 설정들은 아래 링크로 가면 아주 자세히 나와 있어 이대로 따라하기만 하면 됩니다.
https://docs.docker.com/engine/install/centos/#install-using-the-repository
이후 아래 명령어로 도커가 잘 설치가 되었는지 확인합니다.
docker version
지금까지 모든 설치는 root 계정으로 했는데요, 기본적으로 root 외 계정은 docker에 대한 아무런 권한이 없습니다. 그렇기 때문에 저는 별도의 계정에 docker에 관한 모든 권한을 주겠습니다.
usermod -a -G docker donguk
그리고 권한을 확인합니다.
docker ps
그리고 기본적으로 이 VM 상에서는 어떠한 프로그램도 종료 시 항상 Diabled 상태기 때문에 별도로 Enable 설정이 필요합니다. 아래의 명령어로 도커가 지속적이게 데몬으로 실행 상태가 되게끔 설정합니다.
systemctl enable docker
이러면 기본적인 VM과 CentOS와 도커에 대한 설정이 끝납니다. 다음 글부터는 도커와 컨테이너에 대해 자세히 알아보겠습니다.