Neo4j란?
neo4j는 GDBMS(Graph Database Management System)으로써
데이터 간의 관계를 그래프 형식으로 저장하고 관리하는
DBMS이다
공간 데이터를 다루면서
효율적인 가공 및 검색을 위해서는
이러한 Graph 형태의 데이터베이스가 유용하게 쓰인다
따라서, 우리 연구실에서는
공간 데이터 저장소로 neo4j를
채택하여 사용하고 있다
새로 산 리눅스 서버에 neo4j를 깔아야하는 상황이었다
생 local 환경에 깔아주기는 조금 그러니
논의 끝에 안전하기도 하고 편리한 docker를 설치한 뒤
docker 환경에서 neo4j DB를 운영하기로 했다
Docker란?
docker에 대해 간단하게 설명하자면
가상환경 역할 + 배포를 도와주는
소프트웨어 정도로 이해하면 편할 것 같다
도커의 아이콘은 고래 모양인데
아이콘에서 영감을 받아 비유하자면 도커는 수족관을
관리해주는 소프트웨어같은 느낌인 것 같다
수족관은 바다나 강 환경을 모방하여 수족관 환경을 만들지만
그 수족관에서 살게될 물고기나 해양 생물들이 거주하기 좋은
최적의 환경을 임의로 생성한다
각각의 수족관들은 생성하는만큼 독립적으로
그 안의 생명체들을 다루거나 관리할 수 있으며,
수족관의 이동이 필요할 때에도
수족관만 옮기면 개별적으로 편리하게 이동이 가능하다
컴퓨터 환경에서 이런 수족관같은
역할을 하도록 도와주는 것이 도커라고 생각하면
편할 것 같다
(지극히 내생각..)
이런 도커에는 크게 이해해야할 개념이
Container와 image가 있는데,
앞의 비유에 착안하자면
image는 한 개의 수족관을 만들기 위한 명세서의
개념이라고 이해하면 편할 것 같다
이 수족관을 만들기 위해서
어떤 모양의 바위와 자갈을 준비했는지,
어떤 물고기들을 넣을건지,
물 온도는 어떻게 할 건지 등을 정리한
일종의 텍스트 형식의 명세서이고
container는 앞의 명세서인 image를 기반으로
실제로 만들어낸 수족관이다
요리로 비유하자면
image는 레시피
container는 레시피를 토대로 만든 실제 요리
로 이해하면 좋다
위는 chatGPT가 설명해준
도커 이미지와 도커 컨테이너의 개념
docker image는 read-only라
수정 및 변경이 불가능하다
Docker 설치
docker에 대한 기본 개념에 대해 이해했으면
이제 도커를 서버에 설치해보자
환경
서버: Ubuntu 20.04.6 LTS
docker 설치는 아래 글에 나온 그대로 따라했다
https://velog.io/@osk3856/Docker-Ubuntu-22.04-Docker-Installation
이대로만 따라하면 큰 문제없이
설치할 수 있다
1. 설치 전 우분투 패키지 업데이트
sudo apt-get update
2. 필요한 패키지 설치
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
3. Docker 공식 GPC key 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4. Docker 공식 apt 저장소 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
5. 다시 한 번 우분투 패키지 업데이트
sudo apt-get update
6. Docker 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io
이제 docker 설치가 끝났는데
설치가 잘 끝났는지 확인해주자
7-1. docker 실행상태 확인
sudo systemctl status docker
위와 같이 active 되어있는 모습을 확인할 수 있다
7-2. docker 실행
sudo docker run hello-world
위의 명령어를 작성하면 아래와 같이 나타난다
이렇게 나온다면 설치는 제대로 되었음을
확인할 수 있다
Neo4j 이미지 다운
neo4j 이미지를 다운받기 위해서
https://neo4j.com/docs/operations-manual/current/docker/introduction/
위 홈페이지를 참고하다가
image를 다운받기 위한 링크로 접속했다
https://hub.docker.com/_/neo4j/tags
가장 최신의 안정화된 neo4j image를 다운받기위해
docker pull neo4j:latest
위 명령어를 입력했는데 permission denied 에러가 발생했다
위 오류를 구글링해본 결과
사용자가 /var/run/docker.sock에 접근하려고 하였지만
권한이 없어서 발생하는 오류라고 한다
root 계정이 아닌
일반 사용자 계정으로 접속해서
그런 것 같다
무작정 root 계정으로 접속해서
사용하는 것은 위험하니
사용자를 docker group에 포함시켜줘야한다
sudo usermod -a -G docker $USER
현재 $USER를 docker group에 추가시켜주는 명령어이다
$USER는 환경변수라 현재 로그인한 사용자를 가리킨다
service docker restart
사용자 추가해주고 docker restart해준 다음
다시 docker pull neo4j:latest 명령어를 실행해주면
neo4j 이미지가 잘 다운받아진 것을 확인할 수 있다
Container 실행
이제 다운받은 이미지를 가지고 container를 생성한 뒤, 실행해줘야한다
docker run이라는 명령어를 통해
생성과 함께 실행도 같이 할 수 있다
docker run \
--publish=7474:7474 --publish=7687:7687 \
--volume=$HOME/neo4j/data:/data \
neo4j
docker hub에 있는 neo4j
docker run 명령어를 그대로 가져왔다
--publish 명령어로 7474 혹은 7687 포트로 포워딩을 해줬고
--volume 명령어를 통해 컨테이너 내부 데이터를 외부에도 바인딩시켜
컨테이너가 삭제되어도 데이터를 외부에 그대로 유지시켜준다
최초 로그인 시 id와 pw는 neo4j/neo4j라고 하는데
--env=NEO4J_AUTH=none
옵션을 추가해주면 로그인을 패스할 수도 있다고 한다
명령어를 실행시켜주면
컨테이너 생성과 동시에
실행된 모습을 확인할 수 있다
그리고 도커를 실행한 localhost의 7474포트로 접속하면
neo4j를 이용할 수 있다
나는 ssh로 접속했기때문에
ip주소 입력 후 들어갔다
이렇게 docker 최초 설치부터
neo4j 이미지 다운, 컨테이너 생성 및 실행까지
완료!
'기술' 카테고리의 다른 글
[pycharm] pycharm 코드 내부에서 터미널 clear하기 (0) | 2024.08.09 |
---|---|
[docker] docker image 다운로드 경로 변경 (0) | 2024.07.30 |
[docker] 도커 이미지, 컨테이너 삭제 및 명령어 (0) | 2024.07.30 |