목차 - 클릭하면 이동합니다.
도커 사용하기
도커(Docker)는 요즘 거의 필수로 사용되고 있는 듯 한데요. 도커를 사용하면 여러가지 프로그램들을 간편하게 설치할 수 있고 독립된 프로세스에서 실행할 수 있습니다.
이번 시간에는 도커를 사용해서 PostgreSQL을 설치해 볼 예정인데요. amd64 계열의 서버를 사용하시는 분들은 docker 사용이 가능하지만 aarch64 에서는 아쉽게도 도커를 설치할 수 없습니다.
하지만 대신 Podman이라는 것을 사용할 수 있는데요. docker를 podman으로 명령어만 바꾸면 모든게 똑같습니다. 저는 aarch64 서버에서 설치를 진행해 볼 예정입니다.
도커 계정 만들기
[python@instance-technfin ~]$ podman --version
podman version 4.4.1
먼저 버전을 살펴 보겠습니다. 앞서 말씀드린 바와 같이 저는 aarch64 서버에서 진행할 예정이라 podman을 사용하겠습니다. docker를 사용하시는 분들은 docker --version 과 같이 podman만 docker로 변경해 주시면 됩니다.
[python@instance-technfin ~]$ sudo useradd docker
[python@instance-technfin ~]$ sudo passwd docker
Changing password for user docker.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[python@instance-technfin ~]$
[python@instance-technfin ~]$ sudo usermod -aG docker docker
[python@instance-technfin ~]$
docker 라는 리눅스 계정을 하나 생성하였습니다. docker 는 루트 권한으로 실행해야 하기 때문에 생성한 계정에 루트 권한을 부여 합니다.
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
docker ALL=(ALL) ALL
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
docker ALL=(ALL) NOPASSWD: ALL
docker 계정이 루트 권한으로 명령어를 수행할 수 있도록 합니다. 저는 비밀번호 없이 root 권한으로 수행 가능하도록 변경하였습니다.
[python@instance-technfin ~]$ su - docker
Password:
Last failed login: Sun Nov 19 14:37:32 KST 2023 from 124.223.3.54 on ssh:notty
There were 89 failed login attempts since the last successful login.
[docker@instance-technfin ~]$ mkdir postgres
[docker@instance-technfin ~]$ cd postgres
[docker@instance-technfin postgres]$ ls -rlt
total 0
[docker@instance-technfin postgres]$
docker 사용자로 전환하여 postgres 라는 폴더를 만들어 줍니다.
PostgreSQL 설치
우리는 일반 docker가 아닌 docker-compose를 사용해서 더욱 편리하게 설치하도록 하겠습니다.
version: '3.9'
services:
postgres:
container_name: postgresql-docker
image: postgres:16-alpine3.18
ports:
- 5432:5432
volumes:
- ~/apps/postgres:/home/docker/postgres/data
environment:
- POSTGRES_PASSWORD=password
- POSTGRES_USER=username
- POSTGRES_DB=dbname
먼저 위의 내용을 담은 docker-compose.yml 파일을 만들어 줍니다.
[docker@instance-technfin postgres]$ pwd
/home/docker/postgres
[docker@instance-technfin postgres]$
[docker@instance-technfin postgres]$ ls -rlt
total 4
-rw-rw-r--. 1 docker docker 322 Nov 21 17:01 docker-compose.yml
[docker@instance-technfin postgres]$
[docker@instance-technfin postgres]$ sudo podman-compose up -d
podman-compose version: 1.0.6
['podman', '--version', '']
using podman version: 4.6.1
** excluding: set()
['podman', 'ps', '--filter', 'label=io.podman.compose.project=postgres', '-a', '--format', '{{ index .Labels "io.podman.compose.config-hash"}}']
['podman', 'network', 'exists', 'postgres_default']
...
...
exit code: 0
[docker@instance-technfin postgres]$
sudo podman-compose up -d 또는 도커 환경에서는 sudo docker-compose up -d 를 사용해서 도커를 사용해 postgreSQL 데이터베이스를 설치하고 실행합니다.
[docker@instance-technfin postgres]$ podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[docker@instance-technfin postgres]$ sudo podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c45d78a54eef docker.io/library/postgres:16-alpine3.18 postgres 12 minutes ago Up 12 minutes 0.0.0.0:5532->5432/tcp postgresql-docker
[docker@instance-technfin postgres]$
sudo podman ps -a 또는 sudo docker ps -a를 사용해서 정상적으로 컨테이너가 동작되고 있는지 확인합니다.
DB 접속 툴(저의 경우는 DBeaver)을 사용해서 접속 잘 되는지 테스트 해 보았습니다.
무료 DB 툴은 아래를 참고 부탁 드립니다.
2022.02.06 - [코딩스토리/개발관련] - 무료 SQL DB 툴 추천 - DBeaver 디비버
설치한 DB를 외부에서 접속하려면 방화벽 개방도 필요하니 아래 글 참고 하시면 좋을 것 같습니다.
2022.02.19 - [코딩스토리/리눅스] - 오라클 리눅스 8 - PostgreSQL 13 외부 접속하기
마치며
살펴 보았듯이 도커를 사용하면 여러가지 프로그램들 설치를사 OS환경에 구애 받지 않고 자유롭고 편리하게 할 수 있습니다. 향후 생성된 DB에 데이터를 적재하는 과정을 거쳐가며 새로운 버전의 자동매매 프로그램을 개발 하는 과정을 포스팅 해 볼 예정이오니 참고 부탁 드리겠습니다.
블로그를 구독하시면 소식을 조금 더 일찍 받아보실 수 있습니다.
감사합니다.
'코딩스토리 > 데이터베이스' 카테고리의 다른 글
PostgreSQL 데이터베이스 저장공간 확보하기 - Truncate, Vacuum (1) | 2022.02.25 |
---|