Docker在非Linux環(huán)境下都是跑在虛擬機(jī)上的。
早期的Docker for Mac是跑在VirtualBox下,之后是基于蘋果的hyperkit來實(shí)現(xiàn)的。
但是,這兩種方式都是比較低效且占用過多的資源。
單一個(gè)docker hyperkit就占用內(nèi)存超過3GB。

Snipaste_2020-05-05_13-35-00.png
磁盤空間占用也非常之大。

Snipaste_2020-05-05_13-36-20.png
大名鼎鼎的Parallels desktop在mac上運(yùn)行起來算比較絲滑的了,那么能否將docker運(yùn)行在其之上呢?答案當(dāng)然是可以的,接下來將記錄整個(gè)步驟。
# 安裝docker
brew install docker
# 安裝docker-machine-parallels(會(huì)自動(dòng)安裝docker-machine),如果安裝失敗可嘗試使用二進(jìn)制安裝方式(見文章末尾)
brew install docker-machine-parallels
# 創(chuàng)建docker虛擬機(jī)(會(huì)拉取 boot2docker.iso 鏡像并在parallels創(chuàng)建default的虛擬機(jī))
docker-machine create --driver=parallels default
# 啟動(dòng)創(chuàng)建好的docker虛擬機(jī)
docker-machine start default
# 輸出相關(guān)環(huán)境變量
docker-machine env default
# 將上一步輸出的腳本在終端執(zhí)行一次。例如:
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://10.211.55.9:2376"
export DOCKER_CERT_PATH="/Users/fan/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# 或
eval $(docker-machine env default)
至此,已經(jīng)可以愉快的把玩docker了,后續(xù)的步驟將簡單來跑個(gè)demo。
# 拉取alpine鏡像
docker pull alpine
# 運(yùn)行鏡像
docker run -p 1080:80 -it alpine:latest sh
# 安裝nginx
apk add nginx
# 運(yùn)行nginx
nginx
# 查看docker虛擬機(jī)default的ip
docker-machine ip default
# 訪問服務(wù)
http://ip:1081
Parallels 為我們提供了端口映射服務(wù)。
Parallels desktop --> 系統(tǒng)偏好 --> 網(wǎng)絡(luò)設(shè)置,將本地端口與docker的虛擬機(jī)端口作映射。
例如:把本地1081映射到虛擬機(jī)上的1081端口。
這時(shí)候就可以在你的Mac物理機(jī)上通過http://localhost:1081來訪問容器中運(yùn)行的nginx服務(wù)了。
docker-machine-parallels、docker-machine 二進(jìn)制安裝方法
# 下載 docker-machine-parallels 二進(jìn)制文件
curl -L https://github.com/Parallels/docker-machine-parallels/releases/download/v2.0.1/docker-machine-driver-parallels > /usr/local/bin/docker-machine-driver-parallels
# 為下載下來的文件賦予權(quán)限
chmod +x /usr/local/bin/docker-machine-driver-parallels
# 安裝 docker-machine 并賦予權(quán)限
curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine && \
chmod +x /usr/local/bin/docker-machine