Container 基本操作 (podman)

Image 操作

# 查看現有 image
podman images

# 下載 image 並指定版本
podman pull rockylinux:8.7
podman images

# 移除 image
podman rmi rockylinux:8.7

容器相關

啟動一個新容器

  • 啟動容器並執行容器內指令
# 運行 image 建立容器並執行 hello
podman run rockylinux:8.7 echo hello

# 查看運行中的容器(顯示運行中列表)
podman ps

# 查看所有容器列表(包含停止的)
podman ps -a
  • 啟動容器並命名為 lab1,執行容器內指令
podman run --name lab1 rockylinux:8.7 echo hello

podman ps -a
  • 刪除容器
podman rm lab1

podman ps -a

與 Container 互動

  • 建立一個容器並進入內部互動(-i 互動模式,-t 分配 tty)
podman run --name lab2 -it rockylinux:8.7
# 進入容器後的提示符
root@ContainerID#

# 離開容器(exit)
root@ContainerID# exit

# 查看運行與所有容器
podman ps
podman ps -a
  • 建立一個背景執行容器(-d)
podman run -itd --name lab2 rockylinux:8.7

podman ps
  • 進入運行中的容器
podman attach lab2
# 離開時若容器內無其他程序執行,容器會停止
root@ContainerID# exit
  • 啟動、停止容器
podman start lab2
podman stop lab2

說明:

  • 容器會維持運作,必須有持續執行的程序。
  • 若只執行一次性命令,命令結束容器也會停止。
  • 停止中的容器無法進入互動。

從外部執行容器內行程

# 啟動背景執行容器
podman start lab2
podman ps

# 在容器內執行 bash 指令(進入容器)
podman exec -it lab2 bash

# 離開後容器仍在背景執行
root@ContainerID# exit
podman ps

檔案複製

# 複製 Host 的檔案到容器
podman exec lab1 ls -l /tmp/
podman cp /etc/system-release lab1:/tmp/
podman exec lab1 ls -l /tmp/

# 複製容器檔案到 Host
ls -l /tmp/
podman cp lab1:/tmp/system-release /tmp/lab1-file.txt
ls -l /tmp/

# 複製容器檔案到另一容器
podman exec lab2 ls -l /tmp/
podman cp lab1:/tmp/system-release ./
podman cp ./system-release lab2:/tmp/lab1-file.txt
podman exec lab2 ls -l /tmp/

容器資訊查詢

podman inspect lab1
podman inspect lab2

Container 與行程管理

查看容器內行程

podman run -itd --name lab1 rockylinux:8.7
podman top lab1

podman exec -it lab1 bash
podman top lab1

從外部刪除容器內行程

# 透過 top 查詢 PID
podman top lab1

# 在容器內 kill 指定 PID
podman exec lab1 kill <PID>