본문 바로가기

프로그래밍

Clickhouse Server Docker 설치

반응형

Clickhouse Server를 Docker를 통해 간단히 설치할 수 있다.

물론, Docker를 사용하지 않아도 Clickhouse 자체의 설치는 매우 간단하다.

윈도우 환경 같은 경우는 어렵기 때문에 docker를 통해 설치하는게 좋다.

일단은 WSL 이 설치되어 있다는 것을 가정하고, WSL를 통해 명령어로 간단히 설치해보자.

 

$ docker volume create clickhouse
$ docker run --restart always -d -p 8123:8123 -p 9000:9000 -v clickhouse:/var/lib/clickhouse -e CLICKHOUSE_DB=test --name clickhouse --ulimit nofile=262144:262144 clickhouse/clickhouse-server

 

하나씩 살펴보자.

 

docker volume create clickhouse

먼저 volume 생성. 이는 별도로 가상의 저장 공간을 만들어두고 마운트해서 사용하기 위함이다.

이거를 하는 이유는 볼륨 설정 없이 컨테이너를 생성할 경우 컨테이너를 삭제하게 되면, 기존에 작업했던 컨테이너 내부 데이터들이 사라지기 때문이다.

물론, 삭제되어도 상관없다면 volume 를 만들 필요는 없다.

 

컨테이너를 삭제 후 다시 생성해도 기존데이터를 유지하고 싶을 때 사용하면 된다.

 

예를 들어 --restart always 옵션 없이 컨테이너를 생성했는데, 나중에 넣고 싶은 경우.. 이게 꽤 복잡하다... 컨테이너를 삭제하고 다시 만드는게 가장 빠른 방법..

 

이제 docker run 내부 옵션들을 살펴보자.

 

--restart always

이 옵션은 서버 재구동시 도커 서비스가 구동될때 컨테이너도 자동으로 시작하도록 하는 옵션이다.

이 옵션을 설정 하지 않으면 매번 수동으로 컨테이너를 시작해야 한다. 상시 켜져야 하는 서비스라면 필수 옵션!

 

-d

백그라운드에서 실행하겠다는 의미이다. -d 를 안하면 foreground 에서 실행되고, ctrl + c 를 눌러 멈출 수 있다.

 

-p 8123:8123 -p 9000:9000

포트 포워딩 옵션이다. 앞은 외부포트 뒤는 내부 포트.  내부는 컨테이너 내부를 의미하고 외부는 사용자PC 자체를 의미한다. -p 9999:8123 이라고 치면  localhost:9999 로 접속하면 docker 내부의 8123 으로 연결된다는 의미이다.

clickhouse는 8123과 9000 두 개 포트를 기본적으로 사용하기 때문에 열어두자.

 

-v clickhouse:/var/lib/clickhouse

앞서 생성한 볼륨의 이름이 clickhouse 였고 이 볼륨을 컨테이너 내부 /var/lib/clickhouse 에 마운트 하겠다는 의미이다.

실제 clickhouse가 설치되면 사용되는 기본 데이터 경로가 위 경로이고, 이를 미리 만들어둔 볼륨을 사용하기 때문에 볼륨을 삭제하지 않는 한 컨테이너를 지웠다 다시 만들어도 데이터가 그대로 유지된다!

 

-e CLICKHOUSE_DB=test 

clickhouse 초기화 스크립트에게 전달하는 파라메터이다. 이건 해당 컨테이너를 제작한 사람이 정의한 것이다.

이 옵션은 컨테이너 생성시 test라는 database가 없다면 생성하겠다는 의미이다.

 

--name clickhouse

컨테이너 이름을 지정하는 부분. 지정하지 않아도 무방하나 그렇게 하면 1ab3141234ffd 이런 형식의 자동생성된 이름을 사용해서 접근해야 하기 때문에 불편하다.. 해서 쓰기 쉬운 이름을 사용한다.

이렇게 하면 docker start clickhouse 등 명령을 사용가능하다.

 

--ulimit nofile=262144:262144

linux OS에 전달하는 설정값이다. 여러 정의된 설정들이 있지만, 이 설정은 파일 오픈 수 설정을 변경하는 것. 리눅스는 파일 기반 시스템이기 때문에 하나의 프로세스가 생성되면 이게 다 파일로 관리되기 때문에 동시 오픈 할 수 있는 수가 중요하다.

 

clickhouse/clickhouse-server

마지막 끝에 입력하는 것은 docker image 이다. docker hub에 검색하면 실제 나오는 docker 이미지 명을 입력해야 한다.

 

이렇게 하면 기본적은 설치가 순식간에 끝나고 dbeaver 를 통해 default user로 바로 접근 가능하다.

clickhouse 의 기본 유저는 default 이다. 기본 비밀번호는 없는데 -e 옵션으로 지정할 수도 있다.

 

반응형