快轉到主要內容

在FreeBSD安裝Podman,跑Docker容器的映像檔

· 民國114年乙巳年
·
切換繁體/簡體
分類   資訊科技 虛擬機與容器技術
標籤   Podman FreeBSD Docker"
目錄

Docker十分依賴Linux核心的功能才能運作,無法直接在其他作業系統使用,FreeBSD也不例外。根據FreeBSD Wiki,過去曾有人試圖移植Docker到FreeBSD,但是安裝十分麻煩,且相關套件長期缺乏維護,現在FreeBSD 14的docker-freebsd套件處於不可用狀態。因此FreeBSD跟macOS一樣,需要套一層虛擬機才能跑Docker。比如基於bhyve的Dockerbox,是比Virtualbox更快更輕量的方案。

但問題是,都要使用容器技術了,自然是不想要再套一層虛擬機執行,導致產生更多延遲的啊!雖然FreeBSD有行之有年的chroot Jail技容器化術,不過他們畢竟還是跟Docker差距甚大。

此時,我發現Podman有移植到FreeBSD的原生套件可以用。

Podman是跟Docker十分接近的容器化技術,由RedHat主導開發,除了指令很像之外,也幾乎相容Docker的映像檔,提供類似docker compose與docker build的工具。因此Poman應可作為Docker的替代。

根據Podman官方文件,目前FreeBSD 14.0的Podman尚處於實驗性狀態,應小心評估使用。

1. 安裝Podman
#

  1. 從套件庫安裝Podman與Podman compose
sudo pkg install podman-suite py311-podman-compose
  1. 設定開機自動掛載fdescfs,編輯/etc/fstab加入以下內容
fdesc   /dev/fd         fdescfs         rw      0       0
  1. (選擇性)設定Podman容器服務開機自動啟動,但這不會讓podman compose的容器也跟著自動啟動。
sudo service podman enable
  1. 調整Podman網路設定,用ifconfig列出所有網路介面

  2. 有啟用PF防火牆的話,編輯pf設定檔/etc/pf.conf,將網路介面填入,並允許連線到localhost

v4egress_if=re0

v6egress_if=re0

# 放在set與pass中間
nat-anchor "cni-rdr/*"
  1. 啟用net.pf.filter_local=1,允許從容器主機導向到容器內服務的連線
echo 'net.pf.filter_local=1' | sudo tee -a /etc/sysctl.conf.local
  1. 用ZFS建立存放映像檔的儲存池,所有映像檔會儲存在此
zfs create -o mountpoint=/var/db/containers zroot/containers
  1. 重開機。

  2. 測試跑Hello World容器。目前FreeBSD版Podman不支援rootless模式,所以執行一律要加sudo。

sudo podman run --rm docker.io/dougrabson/hello

2. 部署FreeBSD容器
#

是的,FreeBSD官方有推出Docker版的runtime映像檔,達成類似chroot Jail的效果。

部署FreeBSD官方映像檔:

sudo podman run -it docker.io/freebsd/freebsd-runtime:14.snap

#pkg update

3. 部署Linux容器
#

  1. 必須先安裝Linuxulator相容層才可以跑Linux容器。

  2. 接著拉執行一個Alpine Linux的容器,os需要指定為linux

sudo podman run --rm --os=linux docker.io/library/alpine cat /etc/os-release | head -1
  1. 如果要用docker-compose,新增一個podman-compose.yml,填入以下內容
name: httpd
services:
  apache:
    image: docker.io/library/httpd:latest
    container_name: my-apache-app
    ports:
    - '8080:80'
    volumes:
    - ./html:/usr/local/apache2/htdocs
  1. 拉取容器映像檔,並啟動容器
sudo podman pull docker.io/library/httpd:latest --os=linux

sudo podman compose up -d

參考資料
#

相關文章

FreeBSD安裝bhyve虛擬機軟體+BVCP網頁管理界面
分類   資訊科技 虛擬機與容器技術
標籤   FreeBSD Windows Linux
Waydroid使用技巧:解決沒網路、觸控沒反應、註冊Play商店、安裝ARM轉譯器
分類   資訊科技 虛擬機與容器技術
標籤   Waydroid Linux Android
在Linux X11桌面用Weston啟動Waydroid,不依賴Wayland協定桌面
分類   資訊科技 虛擬機與容器技術
標籤   Waydroid X Window Wayland

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。