這是悟空的第 95 篇原創文章java
前言
出於開源項目的須要,我準備把以前在 Windows 下運行的開源項目移植到 Mac 上跑得試下,可是以前 Mac M1 芯片並不能很好地支持 Docker,這不,發現 Docker 也正式
支持 Mac 了,M1 看了 Docker 的芳容,竟悄悄愛上了 Docker。mysql
本文主要內容以下:git
1、官宣
1.1 官宣版
以前 Docker 只支持在 Intel 芯片的 X86 架構上運行,Docker 已經正式支持蘋果 M1 芯片了,而 M1 芯片是 ARM 架構的,因此說 Docker 真的是太強大了,短短几個月就適配了蘋果最新的系統!github
這不就是官宣 Docker 帥哥要追 M1 妹紙麼?redis
悟空到官網上看了下,2021-04-15 發佈的正式版:Docker Desktop 3.3.1,並且能夠直接下載。sql
官網地址:https://docs.docker.com/docker-for-mac/apple-silicon/docker
這個 Desktop 包含不少功能:服務器
-
Docker Engine微信
-
Docker CLI client網絡
-
Docker Compose
-
Notary
-
Kubernetes
-
Credential Helper
另外在 M1 上運行 Docker 還有些條件須要知足。
1.2 要求
由於 M1 比較前衛,因此須要安裝 Rosetta 軟件來進行兼容。
必須安裝 Rosetta ,由於某些二進制文件還是Darwin / AMD64。要從命令行手動安裝Rosetta 2,請運行如下命令:
softwareupdate --install-rosetta
Docker 官方有望在未來的版本中修復此問題。
1.3 磨合
Docker 和 M1 還有許多地方須要磨合:
-
並非全部鏡像均可以用於 M1 的 ARM64 架構,好比 mysql 鏡像就不適合。但能夠經過使用 mariadb 鏡像來解決此問題。
我試了下,確實沒有合適的 mysql 鏡像。
-
因爲QEMU有時沒法運行容器,所以在 Apple Silicon計算機上運行基於Intel的容器可能會致使崩潰。咱們建議您在Apple Silicon計算機上運行 ARM64 容器。與基於Intel的容器相比,這些容器還更快而且使用的內存更少。
-
ping
從容器內部到 Internet 的鏈接沒法正常工做。要測試網絡,咱們建議使用curl
或wget
。 -
當TCP流半關閉時,用戶有時可能會遇到數據丟失的狀況。
2、手拉手
2.1 左手拉右手
以前在 Linux 環境安裝 Docker 是經過命令行安裝的,可是在 Mac 上有客戶端可使用,確實方便不少。安裝 Mac 版的 Docker很是方便,下載完成後的文件名叫作 Docker.dmg。雙擊文件後,彈出以下界面,把 Docker.app 圖標拖到右邊 Appliactions 就能夠了,就像左手拉右手
。
Docker 帥哥成功牽手 M1。
安裝完成後,在應用程序中找到 Docker,雙擊打開就能夠了。
接着就能夠看到 Docker 在菜單欄中有顯示。
2.2 啓動容器
打開的界面,會提示沒有容器正在運行,客戶端提示執行如下命令啓動一個新的容器。
docker run -d -p 80:80 docker/getting-started
咱們將命令拷貝到控制檯後運行,以下圖所示:
而後咱們來check 下容器是否建立和啓動成功。經過如下命令來查看 docker 容器的運行狀態。
docker ps
咱們一樣能夠經過 Docker 客戶端來查看容器狀態:容器正在運行中,對應的端口號是 80。以下圖所示:
另外咱們也能夠看下有哪些鏡像已經下載好了,以下圖所示,目前有一個鏡像:docker/getting-started。
2.3 Intel & Apple
咱們打開活動監視器,能夠看到打開的 docker 進程既有 Apple 架構的,也有 Intel 架構的,好比桌面 UI 用的是 Intel 架構的,但 Docker 核心應用程序用的 Apple 架構,說明雖然有部分用的 Intel 架構,但核心仍是 Apple 架構,不影響使用。
再來看下內存使用狀況,12 個進程,總共佔用 430 M 內存,說明佔用的內存並不高,性能仍是能夠的。
3、暖男
Docker 客戶端還有一系列人性化的配置,優質暖男一枚。來看下有什麼配置吧。
3.1 通用偏好設置
Docker 客戶端,有不少人性化的通用設置。以下圖所示:
-
自動檢查更新:默認狀況下,Docker Desktop配置爲自動檢查較新版本。若是您做爲組織的一員安裝了Docker Desktop,則可能沒法本身更新 Docker Desktop。在這種狀況下,請將您現有的組織升級爲團隊計劃,而後清除此複選框以禁用自動檢查更新。
-
登陸時啓動 Docker Desktop:打開會話時自動啓動Docker Desktop。
-
在 Time Machine 備份中包括 VM:選擇此選項以備份 Docker Desktop 虛擬機。默認狀況下未勾選此選項。
-
使用 gRPC FUSE 進行文件共享:清除此複選框可改用舊版 osxfs 文件共享。
-
發送使用狀況統計信息:Docker Desktop發送診斷、崩潰報告和使用狀況數據。此信息可幫助Docker 改善應用程序並進行故障排除。
-
顯示每週提示:顯示有關使用Docker的有用建議。
-
啓動時打開 Docker Desktop 儀表板:啓動 Docker Desktop 時自動打開儀表板。
3.2 資源高級配置
還有些關於資源的高級配置也很是強大,來瞧一瞧吧。
-
CPU:默認狀況下,Docker Desktop設置爲使用主機上可用處理器數量的一半。要提升處理能力,請將其設置爲更高的數字。
-
內存:默認狀況下,Docker Desktop設置爲使用
2
GB運行時內存,該內存是從Mac上的總可用內存分配的。要增長RAM,請將其設置爲更大的數字,若是要減小它,請下降數字。 -
交換:根據須要配置交換文件的大小,默認值爲1 GB。
-
磁盤映像大小:指定 磁盤映像的大小。
-
磁盤映像位置:指定Linux卷的容器和映像的存儲位置。
3.3 K8S
Docker Desktop 居然直接支持 kubernets(K8S) ,太酷了吧!
Docker Desktop 包含一個可在 Mac 上運行的獨立 Kubernetes 服務器,所以能夠測試在Kubernetes上部署 Docker 的工做負載。要啓用Kubernetes支持並安裝做爲Docker容器運行的Kubernetes獨立實例,請選擇Enable Kubernetes。
還有不少很是有用的功能,這裏就不一一介紹了,感興趣的能夠到官網上查看哦~
Docker 對於 M1 來講,絕對是優質暖男一枚!實錘了!🔨
4、約會
說了 Docker 的那麼多優勢,M1 終於願意和 Docker 談戀愛了,他們第一個約會活動
就是實戰 Redis。
4.1 下載 Redis 鏡像
先讓 Docker 下載個 Redis 鏡像試下:
sudo docker pull redis
咱們能夠經過 Docker 客戶端來看下鏡像是否下載成功,以下圖所示,確實下載成功。另外也能夠經過命令 docker ps 查看。
4.2 啓動 Redis
-
啓動 redis
docker run -d -p 6379:6379 redis
4.3 鏈接redis
docker exec -it <容器 id> redis-cli
須要經過 docker ps 找到 redis 容器 id,個人機器上運行的 redis 容器 id 是 17c...,命令中能夠簡寫,只要能識別這個容器就能夠。
鏈接成功後,會進入到 redis 命令行。
4.4 測試 Redis
設置a=100,返回OK
set a 100
獲取a的值,返回"100"
get a
說明 docker 在 M1 上 完美運行 Redis。
另外個人開源項目中要用 Elasticsearch 和 Kibana,可是都沒有適配的鏡像,這就很難受了啊!
看來 Docker 和 M1 還有很長的路要走,談戀愛磕磕碰碰
很正常,須要磨合
的還有不少,但悟空相信他們最終必定會走到一塊兒,並過上幸福的日子~
對於 M1 和 Docker 的愛情大家怎麼看?評論區見~
參考資料:
www.passjava.cn
https://github.com/Jackson0714/PassJava-Platform
https://docs.docker.com/docker-for-mac/apple-silicon
- END -
寫了兩本 PDF, 回覆 分佈式 或 PDF 下 載。
個人 JVM 專欄已上架,回覆 JVM 領取
我是悟空,努力變強,變身超級賽亞人!
本文分享自微信公衆號 - 悟空聊架構(PassJava666)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。