Linux中國

用 Lima 在你的 Mac 上運行容器

在你的 Mac 上運行容器可能是一個挑戰。畢竟,容器是基於 Linux 特有的技術,如控制組和命名空間。

幸運的是,macOS 擁有一個內置的 虛擬機監控程序 hypervisor ,允許在 Mac 上運行虛擬機(VM)。虛擬機監控程序是一個底層的內核功能,而不是一個面向用戶的功能。

hyperkit 是一個可以使用 macOS 虛擬機監控程序運行虛擬機的 開源項目。hyperkit 被設計成一個「極簡化」的虛擬機運行器。與 VirtualBox 不同,它沒有花哨的 UI 功能來管理虛擬機。

你可以獲取 hyperkit,這是一個運行容器管理器的極簡 Linux 發行版,並將所有部分組合在一起。但這將有很多變動組件,且聽起來像有很多工作。特別是如果你想通過使用 vpnkit (一個開源項目,用於創建感覺更像是主機網路一部分的虛擬機網路)使網路連接更加無縫。

Lima

lima 項目 已經解決了這些細節問題時,就沒有理由再去做這些努力了。讓 lima 運行的最簡單方法之一是使用 Homebrew。你可以用這個命令安裝 lima

$ brew install lima

安裝後,可能需要一些時間,就享受一些樂趣了。為了讓 lima 知道你已經準備好了,你需要啟動它。下面是命令:

$ limactl start

如果這是你第一次運行,你會被問到是否喜歡默認值,或者是否要改變其中的任何一項。默認值是非常安全的,但我喜歡生活在瘋狂的一面。這就是為什麼我跳進一個編輯器,從以下地方進行修改:

- location: "~"
  # CAUTION: `writable` SHOULD be false for the home directory.
  # Setting `writable` to true is possible but untested and dangerous.
  writable: false

變成:

 - location: "~"
  # I *also* like to live dangerously -- Austin Powers
  writable: true

正如評論中所說,這可能是危險的。可悲的是,許多現有的工作流程都依賴於掛載是可讀寫的。

默認情況下,lima 運行 containerd 來管理容器。containerd 管理器也是一個非常簡潔的管理器。雖然使用一個包裝的守護程序,如 dockerd,來增加這些漂亮的工效是很常見的,但也有另一種方法。

nerdctl 工具

nerdctl 工具是 Docker 客戶端的直接替換,它將這些功能放在客戶端,而不是伺服器上。lima 工具允許無需在本地安裝就可以直接從虛擬機內部運行 nerdctl

做完這些後,可以運行一個容器了!這個容器將運行一個 HTTP 伺服器。你可以在你的 Mac 上創建這些文件:

$ ls
index.html
$ cat index.html
hello

現在,掛載並轉發埠:

$ lima nerdctl run --rm -it -p 8000:8000 -v $(pwd):/html --entrypoint bash python
root@9486145449ab:/#

在容器內,運行一個簡單的 Web 伺服器:

$ lima nerdctl run --rm -it -p 8000:8000 -v $(pwd):/html --entrypoint bash python
root@9486145449ab:/# cd /html/
root@9486145449ab:/html# python -m http.server 8000
Serving HTTP on 0.0.0.0 port 8000 (<http://0.0.0.0:8000/>) ...

在另一個終端,你可以檢查一切看起來都很好:

$ curl localhost:8000
hello

回到容器上,有一條記錄 HTTP 客戶端連接的日誌信息:

10.4.0.1 - - [09/Sep/2021 14:59:08] "GET / HTTP/1.1" 200 -

一個文件是不夠的,所以還要做些優化。 在伺服器上執行 CTRL-C,並添加另一個文件:

^C
Keyboard interrupt received, exiting.
root@9486145449ab:/html# echo goodbye > foo.html
root@9486145449ab:/html# python -m http.server 8000
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

檢查你是否能看到新的文件:

$ curl localhost:8000/foo.html
goodbye

總結

總結一下,安裝 lima 需要一些時間,但完成後,你可以做以下事情:

  • 運行容器。
  • 將你的主目錄中的任意子目錄掛載到容器中。
  • 編輯這些目錄中的文件。
  • 運行網路伺服器,在 Mac 程序看來,它們是在 localhost 上運行的。

這些都是通過 lima nerdctl 實現的。

via: https://opensource.com/article/21/9/run-containers-mac-lima

作者:Moshe Zadka 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    捐贈 Let&apos;s Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...