< 前の記事
GitHub にプッシュしたらイメージ作成
[Linux]Docker で PostgreSQL のコンテナの使用
公開日:2026-01-09
更新日:2026-01-09
更新日:2026-01-09
1. 概要
Docker で PostgreSQL のコンテナの使用します。
2. PostgreSQL のコンテナの起動
コマンド
docker run -d \
--name postgres-test \
--network my-app-network \
-e POSTGRES_PASSWORD=password \
-p 5432:5432 \
postgres:18.1
--name で、コンテナ名を指定します。--network で、ネットワークを指定します。PostgreSQL 単独で使う場合は省略可能。
コマンド
docker network ls # ネットワーク一覧
docker network create my-app-network # ネットワークの作成
-e POSTGRES_PASSWORD で、ユーザ postgres のパスワードを設定します。
-p はポートフォワーディングです。
postgres:18.1 は「イメージ名:タグ」です。
PostgreSQL の他のバージョンは、Docker 公式イメージで確認できます。
3. psql で PostgreSQL に接続する方法
PostgreSQL のコンテナに接続して bash で操作できるようにする。
バージョンの確認
PostgreSQL に接続
コマンド
docker exec -it postgres-test bash
バージョンの確認
コマンド
psql -V
# 結果:psql (PostgreSQL) 18.1 (Debian 18.1-1.pgdg13+2)
PostgreSQL に接続
コマンド
psql -U {ユーザ名}
psql -U postgres # postgres は MySQL の root4. 基本的なコマンドと SQL
データベースの作成
データベースの一覧の表示
# データベースの切り替え(MySQL の use)
\c testdb
##/src##
# テーブル作成
GENERATED BY DEFAULT AS IDENTITY:任意指定可能。未指定の場合は採番する。
テーブル一覧の表示
コマンド
CREATE DATABASE testdb;
データベースの一覧の表示
コマンド
\l (小文字のエル)
実行結果
List of databases
Name | Owner | Encoding | Locale Provider | Collate | Ctype | Locale | ICU Rules | Access privileges
-----------+----------+----------+-----------------+------------+------------+--------+-----------+-----------------------
postgres | postgres | UTF8 | libc | en_US.utf8 | en_US.utf8 | | |
template0 | postgres | UTF8 | libc | en_US.utf8 | en_US.utf8 | | | =c/postgres +
| | | | | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | libc | en_US.utf8 | en_US.utf8 | | | =c/postgres +
| | | | | | | | postgres=CTc/postgres
testdb | postgres | UTF8 | libc | en_US.utf8 | en_US.utf8 | | |
(4 rows)
# データベースの切り替え(MySQL の use)
\c testdb
##/src##
# テーブル作成
コマンド
CREATE TABLE users (
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
GENERATED ALWAYS AS IDENTITY:常に採番する。任意指定不可。GENERATED BY DEFAULT AS IDENTITY:任意指定可能。未指定の場合は採番する。
テーブル一覧の表示
コマンド
\dt
実行結果
List of tables
Schema | Name | Type | Owner
--------+-------+-------+----------
public | users | table | postgres
(1 row)
コマンド
# トランザクション開始
BEGIN; # または START TRANSACTION;
# 追加
INSERT INTO users (name, email) VALUES ('Taro', 'taro@example.com'), ('Jori', 'jiro@example.com');
# 検索
SELECT * FROM users;
# 更新
UPDATE users SET name = 'Test' where id = 1;
# ロールバック
ROLLBACK;
# コミット
COMMIT;
< 前の記事
GitHub にプッシュしたらイメージ作成

