簡(jiǎn)單介紹
Docker 是一款非常方便的虛擬化工具洒扎,與傳統(tǒng)的虛擬化工具區(qū)別在于虛擬的層次然眼,顯然 Docker 是屬于操作系統(tǒng)層面的揪阿。即同一個(gè)內(nèi)核伟骨,利用類似命名空間的方法來虛擬出多個(gè)輕量級(jí)互不可見的運(yùn)行環(huán)境沙箱厨钻。
Docker 的一個(gè)重要特性是自身復(fù)制和高兼容性扼雏,兩個(gè)方法可以讓 Docker 鏡像在遠(yuǎn)端服務(wù)器迅速?gòu)?fù)制出一個(gè)和本地一致的運(yùn)行環(huán)境。
- 使用 Dockerfile夯膀,只需把安裝本地環(huán)境的過程記錄到 Dockerfile 文件 并將之上傳到服務(wù)器構(gòu)建诗充。
- 把整個(gè)本地環(huán)境 commit 成鏡像,并且 docker push 到服務(wù)器的 Docker registry诱建。很好蝴蜓,這很 git push
失效問題
Docker 在 Linux 上通過命令行直接操作系統(tǒng)來進(jìn)行應(yīng)用環(huán)境虛擬化;在 macOX 和 Windows 上的原理是以虛擬機(jī)為運(yùn)行核心俺猿,通過ssh讓命令行可以和虛擬機(jī)進(jìn)行交互來完成茎匠。
啟動(dòng) docker 有兩種模式:
問題就出在當(dāng)命令行工具 如:iterm2 升級(jí)后,點(diǎn)擊 Docker Quickstart Terminal 圖標(biāo)并沒有啟動(dòng) macOX 的 default 虛擬機(jī)押袍,只打開普通的終端诵冒。
在沒有連接上虛擬機(jī)情況下,大部分 docker 命令會(huì)返回:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
原因
更新命令行工具會(huì)導(dǎo)致快捷啟動(dòng)失效谊惭,docker狀態(tài)正常汽馋,但不會(huì)啟動(dòng) deamon 服務(wù)端
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
基本上所有和服務(wù)端有交互的功能都不能用,在 macOS 下, docker 采用虛擬機(jī)模式來實(shí)現(xiàn)兼容圈盔,沒有和 linux 那么原生惭蟋,簡(jiǎn)單來講就是 Docker Quickstart Terminal 不能觸發(fā)啟動(dòng)虛擬機(jī)。
解決方法:
Docker Quickstart Terminal 本身是啟動(dòng)自身 app 包中的一個(gè) start.sh 腳本文件药磺,我用的是 item2 如果更新就會(huì)導(dǎo)致無法啟動(dòng)這個(gè)腳本告组。
解決方法有三:
- 重新安裝 Docker Quickstart Terminal 會(huì)修復(fù)這種默認(rèn)打開模式
- 使用 alias 運(yùn)行 app 包里的腳本文件
alias dockerup="sh /Applications/Docker/Docker\ Quickstart\ Terminal.app/Contents/Resources/Scripts/start.sh"
添加完之后無需點(diǎn)擊 Docker Quickstart Terminal 或其他客戶端來啟動(dòng) docker 服務(wù)端,當(dāng)出現(xiàn) Is the docker daemon running on this host?
癌佩,直接使用 dockerup
命令行來啟動(dòng)木缝。
- 替換 app 包中的啟動(dòng)腳本,修復(fù)為兼容 iTrem2
https://gist.github.com/gnachman/f61614d0335e185787b0/ea7a3f7b248390efa886557f6917e12a6c9c0cd6
注:先復(fù)制原文件出來围辙,使用 open -a "Script Editor" 來打開 applescript 文件我碟,修改后保存到桌面,再重新替換進(jìn)去姚建,需授權(quán)矫俺。包內(nèi)內(nèi)容無法直接修改。