摘要:docker是啥就不多講了棘脐,簡(jiǎn)言之就是更輕量、更牛叉的新一代虛擬機(jī)技術(shù)龙致。下面是安裝步驟: 一蛀缝、mac/windows平臺(tái)的安裝 docker是在linux內(nèi)核基礎(chǔ)上發(fā)展而來(lái)的,無(wú)法直接運(yùn)行在mac/windows上目代,需要借助docker-machine工具屈梁,先在mac/windows上建一個(gè)linux的虛擬機(jī),然后才能繼續(xù)玩下去榛了。
docker是啥就不多講了在讶,簡(jiǎn)言之就是更輕量、更牛叉的新一代虛擬機(jī)技術(shù)霜大。下面是安裝步驟:
一构哺、mac/windows平臺(tái)的安裝
docker是在linux內(nèi)核基礎(chǔ)上發(fā)展而來(lái)的,無(wú)法直接運(yùn)行在mac/windows上,需要借助docker-machine工具曙强,先在mac/windows上建一個(gè)linux的虛擬機(jī)残拐,然后才能繼續(xù)玩下去。默認(rèn)內(nèi)置的虛擬機(jī)引擎是Oracle的免費(fèi)軟件VirtualBox碟嘴,可支持vmware fusion之類的商業(yè)軟件溪食。
1.1下載docker toolbox
下載地址:http://www.docker.com/docker-toolbox,toolbox已集成了docker-machine娜扇,docker client错沃,virtualbox之插件,強(qiáng)烈建議在mac/windows上學(xué)習(xí)docker的同學(xué)用這種方式安裝docker(注:雖然mac上也可以通過(guò)brew install 方式安裝雀瓢,但是沒(méi)有圖形界面枢析,學(xué)習(xí)起來(lái)不方便)。
安裝過(guò)程很簡(jiǎn)單致燥,一路Next就可以了登疗,唯一要注意的是最后一個(gè)界面:
docker toolbox提供了二種運(yùn)行方式,終端命令行及圖形界面嫌蚤,建議初學(xué)者選擇圖形界面辐益,以降低學(xué)習(xí)難度。
進(jìn)入后脱吱,會(huì)要求先創(chuàng)建一個(gè)docker hub的賬號(hào)智政,注冊(cè)賬號(hào)完成郵箱驗(yàn)證后,就能進(jìn)入了箱蝠,docker hub上提供了大量的docker鏡像文件(可以理解各種虛擬機(jī)的模板续捂,不過(guò)建議翻~*墻,否則速度奇慢宦搬,甚至打不開)牙瓢,基本上可以滿足各種要求,比如:需要一個(gè)持續(xù)集成的虛擬機(jī)间校,可以直接使用jenkins鏡像矾克,需要一個(gè)mysql,可以直接使用mysql鏡像...
天朝的程序員估計(jì)是全世界幸福感最差的程序員憔足,所有外國(guó)的好東西胁附,要么不能用,要么龜速滓彰,docker hub下載巨慢控妻,第1次接觸慢慢等吧,后面會(huì)介紹如何使用國(guó)內(nèi)daocloud的代理進(jìn)行加速揭绑。
注:toolbox并沒(méi)有提供卸載工具弓候,如果出于某種原因需要卸載,可利用https://github.com/docker/toolbox/blob/master/osx/uninstall.sh這個(gè)腳本完成,腳本內(nèi)容如下:
#!/bin/bash
# Uninstall Script
if [ "${USER}" != "root" ]; then
echo "$0 must be run as root!"
exit 2
fi
while true; do
read -p "Remove all Docker Machine VMs? (Y/N): " yn
case $yn in
[Yy]* ) docker-machine rm -f $(docker-machine ls -q); break;;
[Nn]* ) break;;
* ) echo "Please answer yes or no."; exit 1;;
esac
done
echo "Removing Applications..."
rm -rf /Applications/Docker
echo "Removing docker binaries..."
rm -f /usr/local/bin/docker
rm -f /usr/local/bin/docker-machine
rm -r /usr/local/bin/docker-machine-driver*
rm -f /usr/local/bin/docker-compose
echo "Removing boot2docker.iso"
rm -rf /usr/local/share/boot2docker
echo "All Done!"
上面的腳本并沒(méi)有刪除virtualbox菇存,如果連virtualbox也要卸載彰居,自行到Application面板里,把virtualbox拖到垃圾箱里即可撰筷。
1.2 下載鏡像
先選一個(gè)小點(diǎn)兒的鏡像感受下,比如:用kitematic/hello-world-nginx測(cè)試下nginx
點(diǎn)擊New畦徘,搜索nginx就能找到毕籽,其文檔地址為:https://hub.docker.com/r/kitematic/hello-world-nginx/,通過(guò)GUI界面下載的過(guò)程井辆,等效于下面的命令:
docker pull kitematic/hello-world-nginx
1.3一些常規(guī)操作
下圖是KI的GUI界面关筒,打紅圈的地方可以直接操作,工具欄里的Start點(diǎn)擊一下杯缺,把nginx容器運(yùn)行起來(lái)
點(diǎn)擊上圖中"瀏覽nginx首頁(yè)"的按鈕蒸播,就可以直接在瀏覽器里看到nginx首頁(yè)了,很方便吧萍肆!工具欄里的STOP/RESTART這些按鈕看名字就知道用途了袍榆,不再啰嗦。
可以有同學(xué)注意到了塘揣,瀏覽器里的地址類似:http://192.168.99.100:32774包雀,如果想知道為啥是這個(gè)IP及端口,可以看下Ports頁(yè)亲铡,如下圖:
上圖的意思是才写,將docker容器中的80端口,映射到虛擬機(jī)的32774端口奖蔓,那么問(wèn)題來(lái)了赞草,192.168.99.100又是哪里來(lái)的?
點(diǎn)擊左下角的DOCKER CLI吆鹤,就能進(jìn)入docker終端厨疙,然后運(yùn)行:
docker-machine ls
會(huì)顯示出當(dāng)前創(chuàng)建的虛擬機(jī)(還記得本文最開頭說(shuō)的,mac上不能直接運(yùn)行docker檀头,必須先創(chuàng)建一個(gè)linux虛擬機(jī)吧)轰异,輸出的default就是虛擬機(jī)的名字,然后再運(yùn)行:
docker-machine ip default
就能看到virtual box給虛擬機(jī)default分配的IP. ?繼續(xù)暑始,點(diǎn)擊下圖中的Exec搭独,將進(jìn)入nginx docker容器的bash命令行模式:
輸入nginx -V查看配置文件的位置:
可以看出配置文件為/etc/nginx/nginx.conf,用cat命令查看一下:
從上圖看廊镜,網(wǎng)站的根目錄為/website_files牙肝,回到KI中,點(diǎn)擊Volumns標(biāo)簽
可以看到實(shí)際是上把mac本機(jī)的~/Documents/Kitematic/hello-world-nginx/website_files 映射到docker容器實(shí)例中的/website_files,大家可以嘗試把mac本機(jī)~/Documents/Kitematic/hello-world-nginx/website_files 中的index.html修改下配椭,再刷新下瀏覽器中nginx頁(yè)面虫溜,應(yīng)該馬上就能看到效果了。
1.4docker 命令行的秘密
如果直接在mac本機(jī)打開一個(gè)終端股缸,然后輸入docker ps之類的命令衡楞,會(huì)提示
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
但是從KI界面點(diǎn)擊DOCKER CLI進(jìn)入終端后,再輸入docker ps敦姻,能正常顯示正在運(yùn)行的容器信息:
原因在于:通過(guò)KI進(jìn)入終端后瘾境,會(huì)先執(zhí)行
bash -c "clear && DOCKER_HOST=tcp://192.168.99.100:2376 DOCKER_CERT_PATH=/Users/yjmyzz/.docker/machine/machines/default DOCKER_TLS_VERIFY=1 /bin/zsh"
大家在docker CLI終端里,按一下向上的箭頭就能發(fā)現(xiàn)這個(gè)秘密了镰惦,把這一行長(zhǎng)長(zhǎng)的命令換行整理一下迷守,
bash -c "
clear &&
DOCKER_HOST=tcp://192.168.99.100:2376
DOCKER_CERT_PATH=/Users/yjmyzz/.docker/machine/machines/default
DOCKER_TLS_VERIFY=1
/bin/zsh"
并沒(méi)有什么特別之處侦鹏,就是定義了幾個(gè)bash變量而已适袜,上面這一段不用死記,可以簡(jiǎn)化成:
docker-machine start default #啟動(dòng)虛擬機(jī)default盼产,如果vm未啟動(dòng)的話茵瘾,先執(zhí)行這一行
docker-machine env default #獲取default的環(huán)境變量
第二行執(zhí)行完以后礼华,會(huì)輸出:
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/yjmyzz/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env default)
注意最后一行,按提示復(fù)制 eval $(docker-machine env default)龄捡,然后執(zhí)行一下卓嫂,bash終端就有docker的上下文環(huán)境,然后執(zhí)行docker ps之類的聘殖,就不會(huì)報(bào)錯(cuò)了晨雳。
類似的,點(diǎn)擊頂部工具欄上的EXEC奸腺,實(shí)際上等效于
bash -c "clear && DOCKER_HOST=tcp://192.168.99.100:2376 DOCKER_CERT_PATH=/Users/yjmyzz/.docker/machine/machines/default DOCKER_TLS_VERIFY=1 docker exec -it hello-world-nginx sh"
換行整理一下:
bash -c "
clear &&
DOCKER_HOST=tcp://192.168.99.100:2376
DOCKER_CERT_PATH=/Users/yjmyzz/.docker/machine/machines/default
DOCKER_TLS_VERIFY=1
docker exec -it hello-world-nginx sh"
只是多了最后一行餐禁,所以上面這一段相當(dāng)于:
eval $(docker-machine env default)
docker exec -it hello-world-nginx sh
二、linux平臺(tái)的安裝(以centos為例)
注意:centos要求7以上版本突照,低版本的內(nèi)核docker不支持帮非。
curl -sSL https://get.daocloud.io/docker | sh
sudo chkconfig docker on
sudo systemctl start docker
3行代碼就搞定了,其中第1行讹蘑,是從國(guó)內(nèi)daocloud公司下載的末盔,如果你想從官網(wǎng)下載,可以改成 sudo yum install docker ?或 curl -sSL https://get.docker.com/ | sh, 安裝完成后座慰,執(zhí)行:
sudo systemctl status docker
查看docker deamon狀態(tài)陨舱,如果有active(running)字樣輸出,表示docker運(yùn)行正常.
參考文章: