Docker설치 및 Docker를 사용하여 Gitlab 설치해보기

KIYOUNG KWON·2020년 9월 24일
0
post-custom-banner

Docker는 무엇인가?


기술적으로 자세한 부분은 넘어가고 간단하게 말하자면 서비스 운영 환경을 묶어서 이미지화 시키고 격리시킨 상태에서 실행하는 기능이라고 말할 수 있겠다.

많은 개발자 분들이 개발을 하고 배포를 하면서 느꼈을 것이다. 여러가지 서비스를 빌드하고 배포하기 위해 환경을 구축하다 보면 어느샌가 얽히고 설키기 시작하는 각종 라이브러리, 환경변수 등등.. 물론 하나의 서비스 마다 물리적인 서버를 하나씩 할당해준다면 깔끔하겠지만 요즘 하드웨어의 성능을 생각한다면 큰 낭비가 될 것 이다. Docker는 Linux의 커널레벨에서 지원하는 프로세스를 분리시켜 실행하는 기능을 사용한다.

Docker에 대한 자세한 내용은 이미 많은 분들이 정리를 해두었을 거라 생각하기에 바로 Docker를 설치하고 gitlab을 구동시켜 보자.

Docker 설치

Docker를 설치하는 여러가지 방법이 존재하나 가장 간단한 방법은 host pc의 환경을 자동으로 인식하여 알맞은 버전의 Docker를 설치해주는 쉘스크립트를 다운로드 받아 실행하는 것 이다.

$ sudo wget –qO- https://get.docker.com/ | sh

위의 명령어를 실행하면 Docker가 설치된다.

Docker Hub

Docker는 이미지의 형태로 생성 및 배포를 한다. dockerhub는 이러한 이미지를 github와 같은 형태로 관리할 수 있게 해주는 서비스 이다. 그러면 dockerhub에서 gitlab의 이미지를 검색하여 다운로드를 해보도록 하자.

Gitlab 이미지 다운로드

위의 스크립트를 통해 docker를 설치했다면 docker cli도 설치가 되어있을 것 이다. 아래의 명령어로 docker의 이미지를 검색해보자.

$ sudo docker search gitlab
NAME                                         DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
gitlab/gitlab-ce                             GitLab Community Edition docker image based …   3045                                    [OK]
sameersbn/gitlab                             Dockerfile to build a GitLab image for the D…   1157                                    [OK]
gitlab/gitlab-runner                         GitLab CI Multi Runner used to fetch and run…   638                                     [OK]
...

docker cli의 search옵션은 dockerhub에서 이미지를 검색하는 기능이다. 목록중에 gitlab/gitlab-ce가 존재한다. 이를 다운도르 받아보자.

$ sudo docker pull gitlab/gitlab-ce

pull옵션은 이미지를 다운로드하는 명령어 이다. 위와 같이 사용하면 가장 최신버전으로 이미지를 다운로드합니다.

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
gitlab/gitlab-ce    latest              0f3df5568b20        5 days ago          1.92GB

이미지의 목록은 images옵션을 사용하면 된다. 방금 다운로드 받은 gitlab 이미지를 확인할 수 있다.

이미지는 서비스를 실행하기 위한 모든 설정이 저장된 것으로 이미지를 실행하면 컨테이너가 됩니다.

그런데 여기서 gitlab을 실행하였을 때 저장되는 데이터(유저정보, 환경설정, 저장소 등...)는 어디에 저장되는 것 일까? container의 내부에 존재한다면 유지보수의 관점에서 보았을 때 매우 귀찮아 질 것이다.

그래서 docker에서는 volume이라는 기능을 제공한다. 이 기능은 host와 container사이에 공유영역을 만들어준다. DB로 치면 테이블의 정보들이 들어가는 디렉토리를 host의 디렉토리와 공유하게 된다고 생각하면 된다.

gitlab도 마찬가지로 공유가 필요한 부분이 존재할 것이다. gitlab의 문서를 참조해보면 공유가 필요한 디렉토리는 아래와 같이 3곳이다.

Local locationContainer locationUsage
$GITLAB_HOME/data/var/opt/gitlabFor storing application data
$GITLAB_HOME/logs/var/log/gitlabFor storing logs
$GITLAB_HOME/config/etc/gitlabFor storing the GitLab configuration files

local location의 경우에는 본인이 원하는 경로로 지정해주면 된다. 아래의 명령어를 실행하여 gitlab 이미지를 container로 구동시켜 보자.

$ sudo docker run --detach \
  --publish 50001:80 \
  --name gitlab \
  --restart always \
  --volume ~/gitlab/config:/etc/gitlab:Z \
  --volume ~/gitlab/logs:/var/log/gitlab:Z \
  --volume ~/gitlab/data:/var/opt/gitlab:Z \
  gitlab/gitlab-ce

여기서 각 옵션들을 살펴보자

Option NameDescriptionUsage
--detachDocker를 백그라운드에서 실행--detach
--nameContainer의 이름--name {my container name}
--publishhost와 container를 연결할 포트--publish {host port num}:{container port num}
--volumehost와 container가 공유할 디렉토리--volume {host directory}:{container directory}

volume은 위에서 설명했던 대로이며 디렉토리가 존재하지 않으면 자동으로 생성을 해준다. publish는 container와 host간 포트포워딩이라고 생각하면 된다. 기본적으로 gitlab은 80포트에 http통신이 할당되는데 50001:80으로 하면 host에서는 50001번 포트로 접속할 수 있게 된다는 의미이다.

그 외 아래와 같은 포트가 존재한다.

Port Number
443https
80ssh

그러면 http://localhost:50001 로 접속을 하여 gitlab이 정상적으로 구동되고 있는지 확인해보자.

gitlab이 정상적으로 동작한다면 위와 같은 화면을 보여 줄 것이다. 첫 화면은 root계정의 비밀번호를 설정하는 것이다. 원하는 번호를 설정하고 root계정으로 로그인을 해보자

자 이제 gitlab을 사용할 수 있게 되었다. 나만의 git서버를 즐겨보자

post-custom-banner

0개의 댓글