Contents

Openshift - Podman 進階管理容器

Poman 除了執行容器外還能掛載持久化目錄及管理本地Image映像檔。

1. 管理容器生命週期

Podman 除了常用的 run 執行之外,還有多種操作方式,下圖可以參閱。

https://hackmd.io/_uploads/HJCxIySnj.png
Podman 指令

2. 持久化儲存掛載至容器

Podman 雖然好用,不過上面執行的容器全部都是在記憶體上執行,一旦容器刪除後,之前執行的資料就會全部喪失,對於需要持久化儲存的 APP 就很需要(ex. DB )

3. 持久化儲存掛載方式

1
podman run  -v <host paht>:<container path>:Z  <image name>
  • Z 參數為自動附帶 SELinux ,執行後會自動貼上 container_file_t

4. 未掛載容器與掛載容器差異

4.1 未掛載容器創建

  1. 驗證 8080 服務目前未使用
1
[student@servera ~]$ curl -s http://servera:8080 | head -n 5
  1. 使用 Docker Hub 倉庫中的 Nginx Image 創建一個服務,並監聽 8080
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[student@servera ~]$ podman run --name nginx -d -p 8080:80 docker.io/library/nginx:latest
Trying to pull docker.io/library/nginx:latest...
Getting image source signatures
Copying blob b2fe3577faa4 done
Copying blob 8740c948ffd4 done
Copying blob d2c0556a17c5 done
Copying blob c8b9881f2c6a done
Copying blob 693c3ffa8f43 done
Copying blob 8316c5e80e6d done
Copying config a99a39d070 done
Writing manifest to image destination
Storing signatures
052f2b26f9b7013f85245ce0c8569d0c3c6be102a170b2ced2f6f008cb25180e
  1. 查看啟用的 8080 服務,會顯示預設的 Nginx 頁面
1
2
3
4
5
6
[student@servera ~]$ curl -s http://servera:8080 | head -n 5
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>

4.2 載容器創建

  1. 創建掛載目錄,並寫入自定義的網頁
1
2
3
4
[student@servera ~]$ mkdir -p ~/mywebsite
[student@servera ~]$ cat >> ~/mywebsite/index.html << EOF
> <h1> Hello Podman </h1>
> EOF
  1. 驗證 9090 服務目前未使用
1
[student@servera ~]$ curl -s http://servera:9090 | head -n 5
  1. 使用 Docker Hub 倉庫中的 Nginx Image 創建一個服務(將前步驟創建好的目錄掛載改起來),並監聽 9090
1
2
[student@servera ~]$ podman run --name nginx02 -d -p 9090:80 -v ~/mywebsite/:/usr/share/nginx/html/:Z  docker.io/library/nginx:latest
c43db7912885b79f4ae5a6c493a5a33b20bba309fb9581374d188178d1bdf1c2
  1. 查看啟用的 9090 服務,會顯示自定義的 Nginx 頁面
1
2
[student@servera ~]$ curl -s http://servera:9090 | head -n 5
<h1> Hello Podman </h1>

創建後的目錄會自動帶上 SELinux

1
2
3
[student@servera ~]$ ls -lZ ~/mywebsite/
total 4
-rw-rw-r--. 1 student student system_u:object_r:container_file_t:s0:c176,c790 24 Feb  2 13:58 index.html

5. 小結

Podman 非常容易,對於曾經使用過 Docker 使用者更是可以直接無痛上手,對於單台機器少數個容器管理都是非常方便的工具。



如果你還沒有註冊 Like Coin,你可以在文章最下方看到 Like 的按鈕,點下去後即可申請帳號,透過申請帳號後可以幫我的文章按下 Like,而 Like 最多可以點五次,而你不用付出任何一塊錢,就能給我寫這篇文章的最大的回饋!