목차 - 클릭하면 이동합니다.
도커 사용하기
도커(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 디비버
무료 SQL DB 툴 추천 - DBeaver 디비버
Tech&Fin에서는 이제부터 본격적으로 데이터베이스를 활용한 비트코인 자동매매 프로그램을 만드는 과정을 포스팅하려고 하는데요. 데이터베이스 서버에 접속하여 SQL 쿼리를 실행하기 위해서는
technfin.tistory.com
설치한 DB를 외부에서 접속하려면 방화벽 개방도 필요하니 아래 글 참고 하시면 좋을 것 같습니다.
2022.02.19 - [코딩스토리/리눅스] - 오라클 리눅스 8 - PostgreSQL 13 외부 접속하기
오라클 리눅스 8 - PostgreSQL 13 외부 접속하기
지난 포스팅에서 리눅스 서버에 PostgreSQL 13 버전을 설치하고 설정하는 방법에 대해서 살펴 보았습니다. 이어서 이번 시간에는 방화벽 설정등을 마무리 짓고 DBeaver를 통해 외부에서 DB에 접속하는
technfin.tistory.com
마치며
살펴 보았듯이 도커를 사용하면 여러가지 프로그램들 설치를사 OS환경에 구애 받지 않고 자유롭고 편리하게 할 수 있습니다. 향후 생성된 DB에 데이터를 적재하는 과정을 거쳐가며 새로운 버전의 자동매매 프로그램을 개발 하는 과정을 포스팅 해 볼 예정이오니 참고 부탁 드리겠습니다.
블로그를 구독하시면 소식을 조금 더 일찍 받아보실 수 있습니다.
감사합니다.
'코딩스토리 > 데이터베이스' 카테고리의 다른 글
PostgreSQL 데이터베이스 저장공간 확보하기 - Truncate, Vacuum (1) | 2022.02.25 |
---|