關(guān)于Docker Desktop for MacOS

如何安裝

AI生成

1. 訪問(wèn) [Docker官網(wǎng)](https://www.docker.com/products/docker-desktop) 下載適用于macOS的Docker Desktop安裝包。

2. 雙擊下載的 `.dmg` 文件,將Docker圖標(biāo)拖到 `Applications` 文件夾中。

3. 打開(kāi) `Applications` 文件夾,雙擊 `Docker` 圖標(biāo)啟動(dòng)Docker Desktop。

4. 安裝完成后,Docker Desktop會(huì)自動(dòng)啟動(dòng),并在菜單欄中顯示Docker圖標(biāo)。

技術(shù)架構(gòu)

http://www.itdecent.cn/p/5cbbe932e0e2?v=1741598928938

如何訪問(wèn)宿主機(jī)

Docker Desktop 未提供直接遠(yuǎn)程訪問(wèn)容器虛擬主機(jī)的入口。我們可以使用nsenter方法連接訪問(wèn),主要思路是我們?cè)贛acOS Terminal使用docker CLI起來(lái)一個(gè)容器,然后在容器內(nèi)部運(yùn)行nsenter進(jìn)入容器主機(jī)命名空間。具體命令如下:

docker run --rm -it --privileged --pid=host alpine nsenter -t 1 -m -u -i -n sh

逐個(gè)參數(shù)解析

1.docker run

運(yùn)行一個(gè)新的 Docker 容器。

2.--rm

容器退出后自動(dòng)刪除,避免占用資源。

3.-it

-i(interactive):保持容器的標(biāo)準(zhǔn)輸入(stdin)打開(kāi),允許交互式操作。

-t(tty):分配一個(gè)偽終端,使 shell 交互體驗(yàn)更友好。

4.--privileged

讓容器擁有更高的權(quán)限,包括訪問(wèn)宿主機(jī)的設(shè)備、內(nèi)核功能等。

由于 Docker Desktop 運(yùn)行在 macOS 上,它內(nèi)部實(shí)際是一個(gè) LinuxKit 虛擬機(jī),而--privileged允許容器訪問(wèn)這個(gè)虛擬機(jī)的資源。

5.--pid=host

讓容器共享宿主機(jī)的進(jìn)程 ID (PID) 命名空間。

這里的宿主機(jī)其實(shí)是Docker Desktop 內(nèi)部的 LinuxKit 虛擬機(jī),而不是 macOS 本身。

這樣,容器就能訪問(wèn)到 LinuxKit 虛擬機(jī)的進(jìn)程。

6.alpine

這是要運(yùn)行的鏡像,這里選擇Alpine Linux,因?yàn)樗w積小、啟動(dòng)快,適合做調(diào)試。

7.nsenter -t 1 -m -u -i -n sh

nsenter:進(jìn)入另一個(gè)進(jìn)程的命名空間(namespace)。

-t 1:指定要進(jìn)入的目標(biāo)進(jìn)程PID 1(即 LinuxKit 虛擬機(jī)的 init 進(jìn)程)。

-m(mount):進(jìn)入它的掛載(mount)命名空間,可以訪問(wèn)它的文件系統(tǒng)。

-u(UTS):進(jìn)入主機(jī)名和域名(UTS)命名空間,查看虛擬機(jī)的主機(jī)名。

-i(IPC):進(jìn)入進(jìn)程間通信(IPC)命名空間,可以訪問(wèn)共享內(nèi)存、消息隊(duì)列等。

-n(network):進(jìn)入網(wǎng)絡(luò)命名空間,可以查看和操作 LinuxKit 虛擬機(jī)的網(wǎng)絡(luò)接口。

sh:在目標(biāo)命名空間內(nèi)啟動(dòng)一個(gè) shell,讓你可以交互式執(zhí)行命令。

Docker CLI如何連接容器虛擬主機(jī)ContainerD?

使用UNIX socket: /var/run/Docker.sock連接,不使用TCP連接。

docker -H unix://var/run/docker.sock ps

curl --unix-socket /var/run/docker.sock http://localhost/containers/json

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容