iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0
IT Operation

Docker 新手村:從容器到 PostgreSQL 的實戰之路系列 第 17 篇

Day 17 - 進入 PostgreSQL Container:第一次使用 psql

  • 分享至 

  • xImage
  •  

學習目標

  • 認識 psql 是什麼
  • 學會進入正在執行的 PostgreSQL Container
  • 使用 psql 連線 PostgreSQL
  • 認識幾個常用的 psql 指令

psql 是什麼?

前幾天已經成功使用 Docker 建立 PostgreSQL Container,也透過 Volume 將資料保存下來。

但目前 PostgreSQL 雖然正在執行,我們還沒有真正「進入」資料庫操作。

今天要使用 PostgreSQL 提供的 psql。

psql 是 PostgreSQL 的命令列工具,可以透過終端機連線到 PostgreSQL,並執行 SQL 指令。

整個流程可以想成:

Docker
   ↓
PostgreSQL Container
   ↓
psql
   ↓
PostgreSQL Database

確認 PostgreSQL 是否正在執行

首先使用:

docker ps

確認 my-postgres 是否正在執行。

如果 Container 已經停止,可以重新啟動:

docker start my-postgres

再次輸入:

docker ps

確認狀態是否顯示為 Up。


使用 psql 連進 PostgreSQL

如果前面使用的是預設的 postgres 使用者,可以輸入:

docker exec -it my-postgres psql -U postgres

這行指令可以拆開來看:

  • docker exec:在正在執行的 Container 中執行指令
  • -it:讓我們可以在終端機中互動操作
  • my-postgres:Container 名稱
  • psql:啟動 PostgreSQL 命令列工具
  • -U postgres:使用 postgres 使用者登入

成功後會看到類似:

postgres=#

看到這個畫面,就代表已經成功進入 PostgreSQL。


如果有自訂帳號與資料庫

Day 15 曾經設定:

POSTGRES_USER=myuser
POSTGRES_DB=mydb

這時可以使用:

docker exec -it my-postgres psql -U myuser -d mydb

其中:

-U → 指定使用者
-d → 指定 Database

成功後就可以開始操作自己的資料庫。


常用的 psql 指令

進入 PostgreSQL 後,可以先嘗試幾個基本指令。

查看目前有哪些 Database:

\l

查看目前連線資訊:

\conninfo

查看目前 Database 中的資料表:

\dt

離開 psql:

\q

要注意,像 \l、\dt、\q 這些是 psql 的指令,不是一般的 SQL 語法。


psql 和 SQL 有什麼不同?

這兩個很容易搞混。

例如:

SELECT * FROM users;

這是 SQL。

而:

\dt

則是 psql 提供的指令。

可以簡單理解成:

psql
 │
 ├── \l、\dt、\q → psql 指令
 │
 └── SELECT、INSERT → SQL 指令

之後就會開始真正使用 SQL 建立 Database 和 Table。


常見錯誤與修正

  • ❌ docker exec 執行失敗 → ✅ 確認 PostgreSQL Container 是否正在執行
  • ❌ 使用錯誤的帳號登入 → ✅ 確認之前設定的 POSTGRES_USER
  • ❌ 找不到指定 Database → ✅ 使用 \l 查看目前有哪些 Database
  • ❌ 把 \dt 當成 SQL → ✅ \dt 是 psql 提供的指令
  • ❌ 不知道怎麼離開 psql → ✅ 輸入 \q

今日小挑戰(可交付)

  • [ ] 使用 docker ps 確認 PostgreSQL 狀態
  • [ ] 使用 docker exec 進入 PostgreSQL
  • [ ] 使用 \l 查看 Database
  • [ ] 使用 \conninfo 查看連線資訊
  • [ ] 使用 \dt 查看資料表
  • [ ] 使用 \q 離開 psql

DAY17 心得

今天第一次真正進入 Docker 裡面的 PostgreSQL,之前雖然已經成功建立 Container,但都只是在 Docker 外面查看它是否正常執行。

透過 docker exec 和 psql 之後,終於可以直接操作 PostgreSQL。剛開始看到 postgres=# 的畫面有點陌生,但實際使用 \l、\dt 和 \q 後,發現操作方式沒有想像中困難。

現在 Docker 已經不只是幫我把 PostgreSQL 跑起來,而是真的可以進入資料庫進行操作。接下來就可以開始建立自己的 Database 和 Table,正式進入 SQL 的實際操作。


上一篇
Day 16 - Docker Volume 實戰:讓 PostgreSQL 資料保存下來
系列文
Docker 新手村:從容器到 PostgreSQL 的實戰之路 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言