ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Postgres] - 1.Docker Volume init
    개발/Postgres 2022. 7. 18. 16:01

    저번에 시간에 배운 Volume이라는 개념을 통하여 실제 Psql에 적용하여 보려고 합니다.

    실제 Local 영역에 해당되는 Data들을 저장하여 container가 삭제된 후 실행되어도 이상이 없습니다.

    앞써, Volume을 잘 모르시거나 이해가 잘 안되시면 참고하고 오시는게 도움이 됩니다. [Docker]-Volume

     

    Psql을 Volume을 만들어 반영 후 Container를 제거해본 다음에 다시 실행 시켜볼 것입니다.

    1. Volume 생성

    $ docker volume create psql

    2. Psql 실행 및 User 생성

    제 이름으로 된, User를 하나 만들어주었습니다.

    pw 자리에 원하시는 password를 입력하시면 됩니다.

    $ docker run -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=pw -d -v psql:/var/lib/postgresql/data postgres
    
    $ docker exec -it postgres /bin/bash
    
    # psql -U postgres
    
    # CREATE USER kimuksung2 PASSWORD 'pw' SUPERUSER;
    
    # \du
    
                                        List of roles
     Role name  |                         Attributes                         | Member of
    ------------+------------------------------------------------------------+-----------
     kimuksung2 | Superuser                                                  | {}
     postgres   | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

    3. Container 삭제

    삭제 시에는 Container를 먼저 멈춘 후에 삭제를 진행해야합니다.

    $ docker stop postgres
    $ docker rm postgres

    4. Container 재시작

    아래와 같이 재시작을 하여도 동일하게 User Data가 남아있는 것을 확인 할 수 있습니다.

    $ docker run -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=pw -d -v psql:/var/lib/postgresql/data postgres
    
    $ $ docker exec -it postgres /bin/bash
    
    # psql -U postgres
    
    # \du
                                        List of roles
     Role name  |                         Attributes                         | Member of
    ------------+------------------------------------------------------------+-----------
     kimuksung2 | Superuser                                                  | {}
     postgres   | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
     
     # ls -l
    total 128
    drwx------ 5 postgres postgres  4096 Jul 18 06:24 base
    drwx------ 2 postgres postgres  4096 Jul 18 06:45 global
    drwx------ 2 postgres postgres  4096 Jul 18 06:24 pg_commit_ts
    drwx------ 2 postgres postgres  4096 Jul 18 06:24 pg_dynshmem
    -rw------- 1 postgres postgres  4821 Jul 18 06:24 pg_hba.conf
    -rw------- 1 postgres postgres  1636 Jul 18 06:24 pg_ident.conf
    drwx------ 4 postgres postgres  4096 Jul 18 06:31 pg_logical
    drwx------ 4 postgres postgres  4096 Jul 18 06:24 pg_multixact
    drwx------ 2 postgres postgres  4096 Jul 18 06:24 pg_notify
    drwx------ 2 postgres postgres  4096 Jul 18 06:24 pg_replslot
    drwx------ 2 postgres postgres  4096 Jul 18 06:24 pg_serial
    drwx------ 2 postgres postgres  4096 Jul 18 06:24 pg_snapshots
    drwx------ 2 postgres postgres  4096 Jul 18 06:44 pg_stat
    drwx------ 2 postgres postgres  4096 Jul 18 06:48 pg_stat_tmp
    drwx------ 2 postgres postgres  4096 Jul 18 06:24 pg_subtrans
    drwx------ 2 postgres postgres  4096 Jul 18 06:24 pg_tblspc
    drwx------ 2 postgres postgres  4096 Jul 18 06:24 pg_twophase
    -rw------- 1 postgres postgres     3 Jul 18 06:24 PG_VERSION
    drwx------ 3 postgres postgres  4096 Jul 18 06:24 pg_wal
    drwx------ 2 postgres postgres  4096 Jul 18 06:24 pg_xact
    -rw------- 1 postgres postgres    88 Jul 18 06:24 postgresql.auto.conf
    -rw------- 1 postgres postgres 28835 Jul 18 06:24 postgresql.conf
    -rw------- 1 postgres postgres    36 Jul 18 06:44 postmaster.opts
    -rw------- 1 postgres postgres    94 Jul 18 06:44 postmaster.pid
    $ docker inspect postgres
    "Mounts": [
                {
                    "Type": "volume",
                    "Name": "psql",
                    "Source": "/var/lib/docker/volumes/psql/_data",
                    "Destination": "/var/lib/postgresql/data",
                    "Driver": "local",
                    "Mode": "z",
                    "RW": true,
                    "Propagation": ""
                }
            ],

    '개발 > Postgres' 카테고리의 다른 글

    [PostgresSql] - 사용하는 이유  (0) 2022.10.06

    댓글

Designed by Tistory.