環(huán)境:系統(tǒng)macOS13,芯片M1Pro,內(nèi)存16GB
在mac環(huán)境中運(yùn)行docker,則會(huì)出現(xiàn)內(nèi)存占用過高的情況,如下圖:
?
具體原因如下所介紹:
?
也就是說,docker是無法直接運(yùn)行在macOS中的,雖然它們都是類unix的。故而我猜測(cè)在每次運(yùn)行一個(gè)container容器時(shí),可能都會(huì)創(chuàng)建一個(gè)虛擬的Linux環(huán)境,導(dǎo)致內(nèi)存占用過高。
既然問題已經(jīng)出現(xiàn),總要想辦法解決。我的思路是創(chuàng)建一個(gè)Linux虛擬機(jī),在這個(gè)虛擬機(jī)里面跑docker。也就是說不要直接在macOS中使用docker,而是找一個(gè)“替身”虛擬機(jī)跑docker。
這里介紹一下ubuntu家新出的一個(gè)工具:multipass。在我觀察下來它似乎也是一個(gè)類似于docker一樣的虛擬容器,但是好處是運(yùn)行起來十分方便。本人之前也試過使用vmware創(chuàng)建centos虛擬機(jī)和使用docker直接創(chuàng)建一個(gè)centos容器,但是這兩者都有各自的缺點(diǎn):vmware fusion是預(yù)覽版,不定時(shí)收費(fèi),同時(shí)centos7這個(gè)經(jīng)典版有些地方不支持m1的芯片,同時(shí)centos stream也開始出現(xiàn)了,所以遲遲的在猶豫;docker運(yùn)行centos容器的操作是很騷,但是一來會(huì)同樣的遇到內(nèi)存問題,二是會(huì)出現(xiàn)權(quán)限的錯(cuò)誤(具體記不太清楚了,總之就是進(jìn)入容器后甚至無法使用systemctl這個(gè)命令,試了很久也沒解決,后來發(fā)現(xiàn)是官方的一個(gè)問題,棄)。
總之是兜兜轉(zhuǎn)轉(zhuǎn)換到了ubuntu。而ubuntu最近一直在推他們家的multipass,于是就去試用了一下,不得不說體驗(yàn)感非常好,兩分鐘就運(yùn)行起來了一個(gè)虛擬機(jī)。官網(wǎng)在這里:Multipass orchestrates virtual Ubuntu instances
當(dāng)運(yùn)行起來之后,就按照正常的Linux安裝docker的方式去做就可以了。附上現(xiàn)在的運(yùn)行圖
文章來源:http://www.zghlxwxcb.cn/news/detail-519276.html
運(yùn)行了四個(gè)容器:?文章來源地址http://www.zghlxwxcb.cn/news/detail-519276.html
到了這里,關(guān)于docker占用內(nèi)存過高的解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!