考慮到效率問題以及鏡像速度以及容器尺寸等等因素杨赤,決定使用Docker而放棄Vagrant制作開發(fā)環(huán)境蓝丙。我對(duì)開發(fā)環(huán)境的需求就兩條:
- 可以通過共享文件夾本地編輯,容器中運(yùn)行
- 有遠(yuǎn)程訪問的端口望拖,可以登錄各種服務(wù)、遠(yuǎn)程調(diào)試等
風(fēng)聞alpine尺寸很小挫鸽,本打算用apline做基礎(chǔ)鏡像说敏。后來發(fā)現(xiàn)主要應(yīng)用面為嵌入式設(shè)備,沒有g(shù)cc丢郊,用的是musl-libc盔沫;所使用的binutils也是busybox版本医咨;此外一些bash命令功能不完全,如diff
沒有--exclude
選項(xiàng)架诞。所以還是老老實(shí)實(shí)回歸ubuntu了拟淮。
最新的Docker for Windows 10已經(jīng)不用Docker Toolbox(使用virtualbox做虛擬化)了,改用了微軟原生的Hyper-V技術(shù)谴忧,理論上后者是從硬件開始虛擬化很泊,效率會(huì)更高。然而二者是互斥的沾谓,也就是說當(dāng)你打開了Hyper-V支持之后委造,virtualbox就用不了了。下面開工:
- 下載Docker for Windows均驶,無它昏兆。
- 添加國內(nèi)鏡像:狀態(tài)欄右鍵docker圖標(biāo)->Settings->Daemon->"Registry mirrors",加入Docker的官方國內(nèi)鏡像“https://registry.docker-cn.com”
- 添加共享盤符:狀態(tài)欄右鍵docker圖標(biāo)->Settings->Shared Drives妇穴,勾選共享目錄
- 執(zhí)行
docker pull ubuntu
下載ubuntu鏡像 - 執(zhí)行
docker create -it -v D:\works:/works ubuntu
創(chuàng)建包含ubuntu的容器爬虱,并掛載本地目錄D:\works到容器中的/works目錄下。其中參數(shù)-i
打開交互腾它,-t
為容器打開終端跑筝,合起來就是為容器打開一個(gè)可交互的終端。而-v
則指明了本地目錄和容器目錄之間的映射携狭。你還可以加上--name *YOUR_NAME*
參數(shù)為你新創(chuàng)建的容器起一個(gè)華麗的名字继蜡。 - 執(zhí)行
docker ps -a
查找剛創(chuàng)建的容器的id,然后執(zhí)行docker start CONTAINER_ID
后臺(tái)啟動(dòng)該容器逛腿。若要進(jìn)入該容器稀并,需要執(zhí)行docker exec -it CONTAINER_ID sh
讓容器執(zhí)行命令bash
。這三步有可能存在的問題是docker start
之后容器無事可做就退出了单默,而docker exec
只能在運(yùn)行中的容器里執(zhí)行命令碘举。于是利用docker run
將以上種種合成一步,具體為:
docker run -it -v D:\works:/works --name YOUR_NAME ubuntu bash
如此創(chuàng)建的目錄映射搁廓,即使系統(tǒng)的docker服務(wù)重啟了都還是存在的引颈。注意:本地目錄需要采用絕對(duì)路徑(Linux下可以使用'~'),如果是相對(duì)路徑的話境蜕,docker會(huì)認(rèn)為是其服務(wù)默認(rèn)路徑(太長(zhǎng)太難找)下的子目錄蝙场,并自動(dòng)創(chuàng)建之。
- 修改ubuntu的鏡像為國內(nèi)鏡像粱年,如阿里云的鏡像售滤。
# 備份原始文件
cp /etc/apk/repositories /etc/apt/sources.list.bak
# 修改為國內(nèi)鏡像源,將所有的archive.ubuntu.com替換為mirros.aliyun.com
sudo gedit /etc/apt/sources.list
# 更新索引
sudo apt-get update
- 安裝必須的包,如:
apt-get install git
等完箩,可以開工了赐俗。使用build-dep參數(shù)安裝包的時(shí)候,嘗試將/etc/apt/sources.list里面的dep-src源的注釋去掉弊知,如“xenial main restricted”的阻逮。不然會(huì)出現(xiàn)類似“Unable to find a source package for qemu”的錯(cuò)誤。如果想添加源秩彤,會(huì)用到add-apt-repository
命令叔扼,該命令不是由python-software-properties包提供∧盘颍可以安裝apt-file
命令币励,用apt-file search
查找包含該命令的需要安裝的包。