[Docker] Docker에 PostgreSQL 설치하기

목차

  1. PostgreSQL이란?
  2. PostgreSQL을 Docker에 설치하기
  3. PostgreSQL을 실행하고 데이터 만들어보기
  4. Microsoft SQLServer Management Studio로 접속하기


PostgreSQL이란?

PostgreSQL이란 무엇인가?에 대해서 자세한 내용이 필요하신 분들은 PostgreSQL 공식 사이트의 내용과 PostgreSQL 위키백과를 참고하시기 바란다. 본 포스팅에서는 WSL2 - Docker에 설치하는 데에 집중하여 기술하려 한다.


PostgreSQL을 Docker에 설치하기

  1. Docker Hub에서 PostgreSQL을 검색하면 아래와 같이 PostgreSQL의 공식 이미지가 검색된다.

Docker에서 PostgreSQL 검색

  1. 해당 PostgreSQL을 Docker로 데려오자.
1
docker pull postgres

Docker에서 PostgreSQL image 데려오기

  1. 이미지가 잘 생성되었는 지 확인하자. postgres 이미지가 생성되어 있으면 성공이다.
1
docker images

PostgreSQL image 확인


Postgres 컨테이너를 생성하고 진입하기

  1. PostgreSQL을 위한 컨테이너를 생성하기 위해서는 아래와 같이 입력한다. 이 중 <YourStrong@Passw0rd> 부분은 자신이 사용할 DB 암호를 입력하면 된다.
1
docker run -d -p 5432:5432 -e POSTGRES_PASSWORD="<YourStrong@Passw0rd>" --name PostgreSQL01 postgres

위의 각 항목은 다음과 같다.
(1) docker run : docker image에서 container를 생성한다.
(2) –name PostgreSQL01 : container의 이름은 PostgreSQL01로 한다.
(3) -p 5432:5432 : 해당 container의 port forwarding에 대해 inbound/outbound port 모두 5432으로 설정한다.
(4) -e : container 내 변수를 설정한다.
(5) POSTGRES_PASSWORD=”암호” : ROOT 암호를 설정 따옴표 내의 내용은 암호이다.
(6) -d postgres : postgres이라는 이미지에서 분리하여 container를 생성한다.

PostgreSQL Container 생성

  1. 컨테이너의 상태를 확인한다. PostgreSQL01 컨테이너의 상태가 현재 Up 상태이면 생성 및 실행 성공이다.
1
docker ps -a

PostgreSQL Container 확인

  1. 컨테이너가 실행 중인 상태일 때 컨테이너로 진입 시 아래 명령을 사용한다.
1
sudo docker exec --user="root" -it PostgreSQL01 "bash"

PostgreSQL Container로 진입


PostgreSQL을 실행하고 데이터 만들어보기

  1. PostgreSQL01 컨테이너로 진입하였으면, 아래와 같은 명령을 이용하여 DB를 실행할 수 있다.
1
psql -U postgres
  1. 서버 내 생성되어 있는 모든 데이터베이스 이름을 확인해보자.
1
2
SELECT datname FROM pg_database; -- 전체 데이터베이스 이름 출력
SELECT datname FROM pg_database WHERE datistemplate = false; -- 사용자가 생성한 데이터베이스 이름만 출력
  1. PostgreSQL 내에 사용자 Database를 하나 생성해 보자. 사용 방법은 **CREATE DATABASE 데이터베이스이름;**으로 하면 된다.
1
CREATE DATABASE postgresTestDB;
  1. 생성된 Database의 Schema를 보려면 아래와 같이 입력한다.
1
SELECT nspname FROM pg_catalog.pg_namespace;
![위 1~4까지를 실행한 결과](/images/WSLnDocker/20210501-Docker-PostgreSQL/postgres-docker-hub07.png)

  1. 생성한 데이터베이스들 중 하나를 사용하기 위해서는 \c 데이터베이스이름을 실행하면 된다.
1
2
\c postgresql
\c postgrestestdb

아래와 같이 사용하는 데이터베이스가 변경된다.
PostgreSQL DB 변경

  1. postgrestestdb를 선택한 후 특정 DB 내 모든 Table을 확인해 본다.
1
2
3
SELECT * FROM PG_TABLES; -- PostgreSQL 내 모든 테이블 이름 조회
SELECT * FROM PG_TABLES WHERE schemaname='public'; -- 사용자가 생성한 테이블 이름 조회
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name; -- 사용자가 생성한 테이블의 이름 정보만 조회

PostgreSQL 내 특정 DB 속에 설정된 사용자가 생성한 테이블

  1. 아래와 같은 SQL 구문을 사용하여 간단히 데이터테이블을 하나 생성, 데이터 입력 후 조회해 본다. Line 1부터 한 줄 씩 입력하여 실행한다.
1
2
3
4
CREATE TABLE TestTable (ID INT, TestString VARCHAR(20));
INSERT INTO TestTable VALUES(1, 'number one');
INSERT INTO TestTable VALUES(2, 'number two');
SELECT * FROM TestTable;

PostgreSQL 데이터 테이블 생성 및 조회

참고 : PostgreSQL에서 문자열 입력 시 single quote를 사용해야 한다.

  1. PostgreSQL에서 빠져나올 때는 아래와 같이 입력하면 된다.
1
\q

psql에서 나가기

  1. 그 외 PostgreSQL에서 사용할 수 있는 여러 구문과 명령에 대한 자세한 내용은 PostgreSQL Tutorial 페이지를 참고한다.

GUI 도구 pgAdmin 설치하기

PostgreSQL은 pgAdmin이라는 GUI 도구를 지원한다.

  1. 먼저 pgAdmin 설치를 위해서 pgAdmin 공식 홈페이지로 이동한다.


  2. 필자는 Download > Windows를 선택하여 Windows용 클라이언트를 다운로드 하였다.
    Windows용 클라이언트 다운로드


  3. 필자가 작성하는 시점에는 pgAdmin4 v5.2가 최신이었다. 최신 버전을 다운로드하여 설치한다.
    2021년 4월 기준 최신 버전


  4. 다운로드한 파일을 클릭하면 설치가 시작된다. 설치하는 방법에 대해서는 따로 안내하지 않겠다.
    pgAdmin 설치 시작


  5. 설치가 완료되면 윈도우 시작 화면에 pgAdmin이 나타난다.
    Windows 시작 화면에 나타나는 pgAdmin


  6. pgAdmin을 실행하면 짧은 로딩이 진행되는 동안 아래와 같은 로고 화면이 나타난다.
    pgAdmin 시작 로고


  7. pgAdmin 실행 시 암호를 입력하라고 나오면, 위쪽에 컨테이너를 생성할 때 입력했던 **<YourStrong@Passw0rd>**에 지정했던 암호를 입력하면 된다.
    pgAdmin 실행 암호 입력


  8. 성공적으로 로그인 되었다면 Quick Link의 Add New Server를 클릭하여 생성한 PostgreSQL01 컨테이너에 연결해 보자.
    Quick Link - Add New Server


  9. 새 창이 나타나면 General 탭과 Connection 탭에 아래와 같이 정보를 입력한다.
    DB Connection 정보 입력

  • 주소 : 127.0.0.1 - 내부 Docker의 컨테이너 주소
  • ID : postgres
  • PW : 위에서 설정한 <YourStrong@Passw0rd> 암호 입력

  1. 잘 연결되면 아래와 같이 아까 생성한 데이터베이스들이 나타난다.
    연결 성공 시 나타나는 Database들


  2. 테이블을 생성했었던 데이터베이스 위에 마우스 오른쪽 클릭하여 메뉴 중 Query Tool을 선택한다.
    pgAdmin Query Tool 실행


  3. Query Tool에서 SQL 구문을 입력하면 정상적으로 결과가 출력된다.
    SQL 구문 입력 및 결과 조회