Developer/Data Science

Ubuntu 20.04 (EC2/Lightsail) 초기 세팅 [docker/gitlab runner]

디큐로그 2021. 7. 23. 14:54
728x90

AWS 인스턴스를 사용하는 방법은 정말 다양해서 무엇이 옳다, 그르다 할 수 없지만, 

개인적인 생각으로는 EC2나 Lightsail 위에 작업중인 코드를 직접 올리지 않는 dockerize 방식이 마음에 들어 쭉 사용해오고 있다.

 

회사의 여러 이슈로, 지난 반년간 EC2 셋업을 여러번 하면서 세팅 명령어를 계속 구글링하는 나 자신을 발견하면서, 이를 내 블로그 글로 하나 정리해두는게 좋겠다는 생각을 했다. 

 

나는 크게 2가지를 세팅하고, 세팅 이후에는 ssh 접속을 최소화 시키는 편이다. 

 

1. docker 설치

2. gitlab-runner 설치

 

이렇게 2가지를 세팅해두면, gitlab CI 파이프라인 -> docker compose 로 이어지는 파이프라인을 통해서 ssh 접속을 최소화 시킬 수 있다. 옵션으로 docker 내에서 발생하는 에러로그 등을 보고 싶을때는 portainer 도 설정할 순 있지만, 이번 글에선 언급하지 않으려 한다.

 

1. docker 설치

출처: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04

 

How To Install and Use Docker on Ubuntu 20.04 | DigitalOcean

Docker is an application that simplifies the process of managing application processes in containers. In this tutorial, you'll install and use Docker Community Edition (CE) on Ubuntu 20.04. You'll install Docker itself, work with containers and images

www.digitalocean.com

아래 명령어를 쭉 따라치면, docker 가 active 되었다는 status를 볼 수 있다 (아래 그림 참조)

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce
sudo systemctl status docker

그리고 docker 를 처음 설치하면 sudo 권한이 필요한데, 이를 없애기 위해서 다음 명령어를 따라해보자.  

sudo usermod -aG docker ${USER}
id -nG

그리고 터미널 접속을 한 번 빠져나왔다가 다시 접속해준다.

docker
docker ps
docker images

sudo 권한 없이 docker 명령어 실행이 가능해졌다.

 

 

2. gitlab-runner 설치

공식 문서: https://docs.gitlab.com/runner/install/

 

Install GitLab Runner | GitLab

Documentation for GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab, and GitLab Runner.

docs.gitlab.com

도커로 설치하는 방법도 있지만, 패키지로 설치하는 걸 추천한다. 

도커로 시도해봤는데, 기존에 사용하던 방법과 달라서 그런지 개인적으로는 별로였다.

먼저 아래 명령어를 통해 architecture 정보를 알아보자

dpkg --print-architecture

아마 amd64 라고 나올 것이다.

그럼 이제 설치파일을 다운받고 설치해주자.

curl -LJO "https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.deb"
sudo dpkg -i gitlab-runner_amd64.deb

만약 architecture 가 amd64 가 아닌 arm64 로 나왔다면, 위의 명령어에서 amd64 -> arm64 로 변경해주면 된다.

 

설치가 완료되었다면, 아래 명령어를 쳐서 제대로 설치되었는지 확인하자.

sudo gitlab-runner list

command not found 같은 에러가 아닌 위와 같은 메시지가 떴다면 제대로 설치 된 것이다.

 

 

추가: gitlab runner 의 docker permission denied 문제

 

gitlab runner 를 처음 등록하고 파이프라인을 실행해보니, gitlab runner 의 권한 설정이 안되어서 docker 명령을 sudo 권한 없이 실행하지 못하는 이슈가 있었다.

(Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.24/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&shmsize=0&t=lili-lgc-recommender%3Av1.0.0&target=&ulimits=null&version=1: dial unix /var/run/docker.sock: connect: permission denied)

ubuntu 에 대해서 권한 추가를 해주었듯 gitlab-runner 에 대해서도 해주면 된다.

sudo usermod -aG docker gitlab-runner
sudo service docker restart

 

 

반응형