성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Java - How to use the Foreign Funct...
[정성태] 제가 큰 실수를 했군요. ^^; Delegate를 통한 Bein...
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>docker - PostgreSQL 컨테이너 실행</h1> <p> PostgreSQL도 공식 이미지가 있군요. ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > postgres - Docker Official Images ; <a target='tab' href='https://hub.docker.com/_/postgres'>https://hub.docker.com/_/postgres</a> </pre> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp> <span style='color: blue; font-weight: bold'>docker pull postgres</span> c:\temp> <span style='color: blue; font-weight: bold'>docker run --name postgres1 -p 5432:5432 -e POSTGRES_PASSWORD=test_1234 -d postgres</span> </pre> <br /> 마찬가지로 데이터베이스 변경에 대한 유지를 위해 볼륨 매핑을 추가할 수 있고,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp> docker run --name postgres1 -p 5432:5432 <span style='color: blue; font-weight: bold'>-v postgresql:/var/lib/postgresql/data</span> -e POSTGRES_PASSWORD=test_1234 -d postgres </pre> <br /> DB 성격상 매번 자동으로 올라오게 설정할 것입니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp> docker run --name postgres1 -p 5432:5432 -v postgresql:/var/lib/postgresql/data <span style='color: blue; font-weight: bold'>--restart=always</span> -e POSTGRES_PASSWORD=test_1234 -d postgres </pre> <br /> "<a target='tab' href='https://www.sysnet.pe.kr/2/0/12174#volume'>DockerDesktopVM의 파일 시스템 접근</a>"에 따라 매핑된 볼륨은 다음과 같이 _data가 구성됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > / # <span style='color: blue; font-weight: bold'>ls host/var/lib/docker/volumes/postgresql/_data</span> PG_VERSION pg_dynshmem pg_multixact pg_snapshots pg_tblspc postgresql.auto.conf base pg_hba.conf pg_notify pg_stat pg_twophase postgresql.conf global pg_ident.conf pg_replslot pg_stat_tmp pg_wal postmaster.opts pg_commit_ts pg_logical pg_serial pg_subtrans pg_xact postmaster.pid </pre> <br /> <hr style='width: 50%' /><br /> <br /> 이후 구성은 <a target='tab' href='https://www.sysnet.pe.kr/2/0/961'>닷넷에서 접근해보는 PostgreSQL</a> 글과 같이 GUI 도구를 이용하거나,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > pgAdmin 4 - Download ; <a target='tab' href='https://www.pgadmin.org/download/'>https://www.pgadmin.org/download/</a> </pre> <br /> 컨테이너 내부로 들어가 SQL 쿼리 실행을 위한 psql 명령행 프로그램을 찾아,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp&gt; <span style='color: blue; font-weight: bold'>docker exec -it postgres1 /bin/bash</span> /# <span style='color: blue; font-weight: bold'>find / -name psql</span> /usr/lib/postgresql/12/bin/psql <span style='color: blue; font-weight: bold'>/usr/bin/psql</span> ...[생략]... </pre> <br /> 실행할 수도 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > /# <span style='color: blue; font-weight: bold'>/usr/bin/psql --username=postgres</span> psql (12.2 (Debian 12.2-2.pgdg100+1)) Type "help" for help. postgres=# <span style='color: blue; font-weight: bold'>\list</span> List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+------------+------------+----------------------- postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 | template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres + | | | | | postgres=CTc/postgres (3 rows) postgres=# <span style='color: blue; font-weight: bold'>\connect postgres</span> You are now connected to database "postgres" as user "postgres". postgres=# <span style='color: blue; font-weight: bold'>\dt</span> Did not find any relations. postgres=# <span style='color: blue; font-weight: bold'>SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name;</span> table_name ------------ (0 rows) </pre> <br /> <hr style='width: 50%' /><br /> <br /> 참고로, PostgreSQL 컨테이너의 초기화는 기본적으로 postgres 사용자로 생성하므로 root가 없어 그냥 실행하면 다음과 같은 오류가 발생합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > # <span style='color: blue; font-weight: bold'>/usr/bin/psql</span> psql: error: could not connect to server: FATAL: role "root" does not exist </pre> <br /> 그리고 아래는 정상적으로 실행된 경우의 로그 출력입니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale "en_US.utf8". The default database encoding has accordingly been set to "UTF8". The default text search configuration will be set to "english". Data page checksums are disabled. fixing permissions on existing directory /var/lib/postgresql/data ... ok creating subdirectories ... ok selecting dynamic shared memory implementation ... posix selecting default max_connections ... 100 selecting default shared_buffers ... 128MB selecting default time zone ... Etc/UTC creating configuration files ... ok running bootstrap script ... okperforming post-bootstrap initialization ... ok syncing data to disk ... initdb: warning: enabling "trust" authentication for local connections You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. ok Success. You can now start the database server using: pg_ctl -D /var/lib/postgresql/data -l logfile start waiting for server to start....2020-03-10 00:01:30.405 UTC [46] LOG: starting PostgreSQL 12.2 (Debian 12.2-2.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit 2020-03-10 00:01:30.472 UTC [46] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" 2020-03-10 00:01:30.788 UTC [47] LOG: database system was shut down at 2020-03-10 00:01:29 UTC 2020-03-10 00:01:30.847 UTC [46] LOG: database system is ready to accept connections done server started /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/* 2020-03-10 00:01:30.942 UTC [46] LOG: received fast shutdown request waiting for server to shut down....2020-03-10 00:01:30.995 UTC [46] LOG: aborting any active transactions 2020-03-10 00:01:30.998 UTC [46] LOG: background worker "logical replication launcher" (PID 53) exited with exit code 1 2020-03-10 00:01:30.998 UTC [48] LOG: shutting down 2020-03-10 00:01:31.451 UTC [46] LOG: database system is shut down done server stopped PostgreSQL init process complete; ready for start up. 2020-03-10 00:01:31.605 UTC [1] LOG: starting PostgreSQL 12.2 (Debian 12.2-2.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit 2020-03-10 00:01:31.605 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432 2020-03-10 00:01:31.606 UTC [1] LOG: listening on IPv6 address "::", port 5432 2020-03-10 00:01:31.747 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" 2020-03-10 00:01:31.907 UTC [55] LOG: database system was shut down at 2020-03-10 00:01:31 UTC 2020-03-10 00:01:31.958 UTC [1] LOG: database system is ready to accept connections </pre> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1016
(왼쪽의 숫자를 입력해야 합니다.)