docker學(xué)習(xí)(1) 安裝

摘要: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)行正常.

參考文章:

https://docs.docker.com/engine/installation/centos/

原文鏈接

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末版仔,一起剝皮案震驚了整個(gè)濱河市游盲,隨后出現(xiàn)的幾起案子误墓,更是在濱河造成了極大的恐慌,老刑警劉巖益缎,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谜慌,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡莺奔,警方通過(guò)查閱死者的電腦和手機(jī)欣范,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)令哟,“玉大人熙卡,你說(shuō)我怎么就攤上這事±” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵滑燃,是天一觀的道長(zhǎng)役听。 經(jīng)常有香客問(wèn)我,道長(zhǎng)表窘,這世上最難降的妖魔是什么典予? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮乐严,結(jié)果婚禮上瘤袖,老公的妹妹穿的比我還像新娘。我一直安慰自己昂验,他們只是感情好捂敌,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著既琴,像睡著了一般占婉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上甫恩,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天逆济,我揣著相機(jī)與錄音,去河邊找鬼磺箕。 笑死奖慌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的松靡。 我是一名探鬼主播简僧,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼击困!你這毒婦竟也來(lái)了涎劈?” 一聲冷哼從身側(cè)響起广凸,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛛枚,沒(méi)想到半個(gè)月后谅海,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹦浦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年扭吁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盲镶。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡侥袜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出溉贿,到底是詐尸還是另有隱情枫吧,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布宇色,位于F島的核電站九杂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏宣蠕。R本人自食惡果不足惜例隆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抢蚀。 院中可真熱鬧镀层,春花似錦、人聲如沸皿曲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)屋休。三九已至惶我,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間博投,已是汗流浹背绸贡。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留毅哗,地道東北人听怕。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像虑绵,于是被迫代替她去往敵國(guó)和親尿瞭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容