Docker環(huán)境在windows系統(tǒng)下的安裝與配置

背景

配置開(kāi)發(fā)環(huán)境是目前我們開(kāi)發(fā)團(tuán)隊(duì)在進(jìn)行開(kāi)發(fā)工作之前的重要工作恩敌,對(duì)于需要使用我們自己封裝的開(kāi)發(fā)框架的java web程序員來(lái)說(shuō)更是如此焦履,一般來(lái)說(shuō)需要配置jdk岛琼、mysql配乓、tomcat仿滔、maven等一系列基礎(chǔ)環(huán)境,如果需要使用我們現(xiàn)有的開(kāi)發(fā)框架犹芹,還需要配置開(kāi)發(fā)工程的模板崎页、基礎(chǔ)服務(wù)的訪問(wèn)地址、統(tǒng)一的環(huán)境參數(shù)等等腰埂。這些工作做起來(lái)比較繁瑣飒焦,即使按照開(kāi)發(fā)文檔一步一步進(jìn)行也容易出現(xiàn)差錯(cuò),而且較為耗費(fèi)時(shí)間盐固。

Docker容器技術(shù)的出現(xiàn)使得這一工作得以改進(jìn)荒给,通過(guò)一段時(shí)間的研究,我們的底層框架開(kāi)發(fā)人員將以上環(huán)境全部使用Docker容器技術(shù)制作成為完整的鏡像刁卜,使得業(yè)務(wù)開(kāi)發(fā)人員不必再關(guān)心這些瑣碎工作志电,只需通過(guò)git下載我們的工程模板,通過(guò)執(zhí)行Docker命令自動(dòng)在本地完成開(kāi)發(fā)環(huán)境的構(gòu)建蛔趴。

然而由于docker是一個(gè)較新的技術(shù)挑辆,仍有很多開(kāi)發(fā)人員沒(méi)有接觸過(guò),上次我發(fā)的文章對(duì)于環(huán)境的配置描述的并不詳細(xì)孝情,這次專(zhuān)門(mén)針對(duì)windows下的開(kāi)發(fā)者如何配置docker環(huán)境做一次講解鱼蝉。如有必要,我將錄制專(zhuān)門(mén)的視頻來(lái)講解箫荡。

認(rèn)識(shí)Docker

Docker是一種容器技術(shù)魁亦,可以在操作系統(tǒng)中隔離出若干個(gè)獨(dú)立的程序運(yùn)行環(huán)境,這些環(huán)境既可以共享宿主機(jī)的資源羔挡,另一方面他們之間相互獨(dú)立洁奈,互不影響间唉,也不會(huì)對(duì)宿主機(jī)的環(huán)境產(chǎn)生影響。與虛擬化技術(shù)不同的是利术,Docker比較輕量級(jí)呈野,容器(隔離運(yùn)行環(huán)境)的啟動(dòng)和銷(xiāo)毀都比較快,這些運(yùn)行環(huán)境可以像現(xiàn)實(shí)世界中的集裝箱那樣印叁,打包成一個(gè)一個(gè)的鏡像被冒,同樣的鏡像在不同的Docker環(huán)境中部署運(yùn)行將會(huì)得到同樣的結(jié)果,就像同一首歌在不同的播放器播放那樣簡(jiǎn)單轮蜕。

Docker的出發(fā)點(diǎn)是將現(xiàn)在日趨復(fù)雜的web應(yīng)用系統(tǒng)部署變得像播放唱片那樣簡(jiǎn)單昨悼,但是它能做的卻遠(yuǎn)不止于此,如果使用得當(dāng)跃洛,我們將可以很容易實(shí)現(xiàn)“開(kāi)發(fā)”幔戏、“測(cè)試”、“生產(chǎn)”環(huán)境的完全一致(這在以前是十分困難的)税课,程序員以后也許再也說(shuō)不出“這功能在我這兒好使”這樣的話了。

作為開(kāi)發(fā)者痊剖,如果認(rèn)真思考過(guò)以上的問(wèn)題韩玩,當(dāng)遇到Docker這種容器技術(shù)時(shí),應(yīng)該很容易就想到針對(duì)自己工作的改進(jìn)方案陆馁,并且加以利用找颓。比如如果想嘗試某一個(gè)新技術(shù),以前可能需要在自己工作的操作系統(tǒng)上進(jìn)行安裝叮贩,不但配置麻煩击狮,而且存在將自己的系統(tǒng)弄壞的風(fēng)險(xiǎn)(很多人還愛(ài)重裝系統(tǒng)),現(xiàn)在不同了益老,只需要下載對(duì)應(yīng)的鏡像文件彪蓬,然后啟動(dòng)容器,即可體驗(yàn)捺萌。無(wú)論是golang档冬、node、java桃纯、python這些程序語(yǔ)言酷誓,還是spark、wordpress态坦、tomcat盐数、mysql這種應(yīng)用環(huán)境,都已經(jīng)有人封裝好了即開(kāi)即用的鏡像伞梯,隨時(shí)可以體驗(yàn)玫氢,而且用著不爽可以隨時(shí)清理帚屉。

在Windows環(huán)境下的安裝

如果是在Linux系統(tǒng)下干活,則比較簡(jiǎn)單琐旁,因?yàn)長(zhǎng)inux已經(jīng)實(shí)現(xiàn)對(duì)Docker技術(shù)的內(nèi)核級(jí)支持涮阔,CentOS的軟件倉(cāng)庫(kù)自帶了Docker最新版,可以直接通過(guò)命令安裝使用灰殴。

對(duì)于Windows來(lái)說(shuō)敬特,稍有些困難,但是目前也不是問(wèn)題了牺陶。首先需要看一下你的Windows環(huán)境伟阔,分兩種情況,一種是Windows 10 64位專(zhuān)業(yè)版掰伸,一種是其他版本(比如很多人仍然推崇的Win 7)皱炉。前者可以直接支持安裝Docker原生版,性能最好狮鸭,體驗(yàn)最佳合搅,后者只能使用Docker官方提供的一種過(guò)度技術(shù)(Docker ToolBox),這種技術(shù)不得不依賴(lài)Oracle的Virtualbox以在你的系統(tǒng)里創(chuàng)建一個(gè)虛擬機(jī)用以模擬Linux運(yùn)行環(huán)境歧蕉,好在封裝的比較好灾部,基本可以忽略這個(gè)虛擬機(jī)的存在,只需專(zhuān)心使用Docker即可惯退。

在Windows 10 64位專(zhuān)業(yè)版的安裝

這個(gè)最簡(jiǎn)單赌髓,需要確定兩個(gè)基礎(chǔ)環(huán)境:

  • 你的CPU支持虛擬化(一般都支持,如果在操作系統(tǒng)中沒(méi)看到催跪,則可以手動(dòng)到BIOS里打開(kāi)锁蠕,如果實(shí)在不支持,換臺(tái)新的電腦吧)懊蒸,具體可以通過(guò)任務(wù)管理器查看荣倾,如圖


    cpu.png
  • 你的操作系統(tǒng)需要開(kāi)啟Hyper-V,如圖


    hyper-v.png

然后到官方網(wǎng)站下載安裝包直接安裝即可骑丸,有時(shí)候可能存在網(wǎng)站被墻的情況逃呼,也可以到我上傳的網(wǎng)盤(pán)里下載,鏈接在此 https://yunpan.cn/cMRZNp6BaXeEF 訪問(wèn)密碼 80e6

非Windows 10 64位專(zhuān)業(yè)版(無(wú)法使用原生Docker)的安裝

這個(gè)稍微麻煩者娱,也需要確定兩個(gè)基礎(chǔ)環(huán)境:

  • 你的CPU支持虛擬化
  • 你的操作系統(tǒng)需要關(guān)閉(注意是關(guān)閉B樟)Hyper-V

然后到官方網(wǎng)站下載安裝包,如果網(wǎng)站被墻黄鳍,可以訪問(wèn)這個(gè)地址推姻,也可以到我上傳的網(wǎng)盤(pán)里下載,鏈接在此https://yunpan.cn/cMSaWneaYPE5K 訪問(wèn)密碼 c8fa

安裝過(guò)程無(wú)特別之處框沟,需要注意的是藏古,如果你的系統(tǒng)內(nèi)沒(méi)有安裝過(guò)Oracle Virtualbox增炭,安裝程序會(huì)自動(dòng)給你安裝一個(gè),不用理會(huì)拧晕,直接一直點(diǎn)擊“下一步”即可隙姿。安裝完成后直接點(diǎn)擊快捷方式“Docker Quick Start”即可,如果是第一次運(yùn)行厂捞,將會(huì)耗費(fèi)一些時(shí)間(因?yàn)樾枰獎(jiǎng)?chuàng)建虛擬機(jī))输玷,在這個(gè)過(guò)程中,系統(tǒng)可能會(huì)彈出若干次UAC提示讓你授權(quán)靡馁,果斷點(diǎn)擊“同意”即可欲鹏。

環(huán)境的配置和使用

安裝完成之后,就可以隨意使用了臭墨,但是赔嚎,受?chē)?guó)內(nèi)網(wǎng)絡(luò)環(huán)境的影響,還有一些需要調(diào)整胧弛,因?yàn)樵趪?guó)內(nèi)訪問(wèn)國(guó)外的鏡像庫(kù)(docker默認(rèn)的那個(gè))比較慢尤误,一般鏡像又都比較大(動(dòng)輒幾百兆),所以我們還需要配置一個(gè)國(guó)內(nèi)的鏡像倉(cāng)庫(kù)结缚,推薦DaoCloud或者阿里云的袄膏,這里以阿里云舉例。

Windows10下的鏡像倉(cāng)庫(kù)配置

原生的Docker配置比較簡(jiǎn)單掺冠,官方還提供了可視化的配置界面,操作步驟如下:

  • 右鍵點(diǎn)擊系統(tǒng)托盤(pán)的Dcoker圖標(biāo)码党,選擇Settings
  • 進(jìn)入Docker Daemon選項(xiàng)德崭,在右側(cè)窗口填入鏡像倉(cāng)庫(kù)的地址(可以自行去阿里云申請(qǐng),我這里有一個(gè)示例)
  • 示例如圖


    鏡像倉(cāng)庫(kù).png

配置完成后揖盘,在命令行窗口執(zhí)行一個(gè)拉取鏡像的命令(docker pull tomcat)試試看眉厨,會(huì)發(fā)現(xiàn)速度杠杠的。

DockerToolbox鏡像倉(cāng)庫(kù)的配置

這個(gè)略微麻煩一些兽狭,不過(guò)還可以接受憾股,需要在命令行進(jìn)行操作:

  • 先執(zhí)行這個(gè)命令(鏡像地址可以自行替換)docker-machine ssh default "echo 'EXTRA_ARGS=\"--registry-mirror=https://xks740zc.mirror.aliyuncs.com\"' | sudo tee -a /var/lib/boot2docker/profile"
  • 再執(zhí)行這個(gè)命令 docker-machine restart default 會(huì)重啟Docker虛擬機(jī)
  • 然后執(zhí)行命令docker-machine ssh default 即可進(jìn)入docker命令行環(huán)境了

關(guān)于DockerToolbox的特殊之處

  • 在容器中暴露的應(yīng)用端口,需要注意箕慧,他的訪問(wèn)地址不是你的主機(jī)localhost服球,而是一個(gè)虛擬機(jī)的ip地址,一般為192.168.99.100颠焦,如果你在容器中跑起來(lái)一個(gè)web程序并且暴露了8080端口斩熊,那么想在外面訪問(wèn)的話,地址為http://192.168.99.100:8080 伐庭,如果是win10下的原生docker就會(huì)沒(méi)有這個(gè)迷惑粉渠,直接localhost了分冈。
  • 共享宿主機(jī)的文件給容器,需要注意霸株,我們?cè)谑褂萌萜鲿r(shí)雕沉,一般會(huì)通過(guò)掛載卷的形式將系統(tǒng)的文件共享給容器使用,對(duì)于DockerToolbox來(lái)說(shuō)去件,它默認(rèn)給你設(shè)置了系統(tǒng)盤(pán)的User文件夾具有可以掛載共享文件的能力坡椒,也就是說(shuō),你需要使用掛載卷的時(shí)候箫攀,必須確保文件在這個(gè)根目錄之下(比如放在C:/Users/xxx/Dcouments/xxxx)肠牲。
    如果是window10系統(tǒng)的原生docker技術(shù)則可通過(guò)圖形設(shè)置界面完成,如圖


    share.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末靴跛,一起剝皮案震驚了整個(gè)濱河市缀雳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌梢睛,老刑警劉巖肥印,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異绝葡,居然都是意外死亡深碱,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)藏畅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)敷硅,“玉大人,你說(shuō)我怎么就攤上這事愉阎〗时模” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵榜旦,是天一觀的道長(zhǎng)幽七。 經(jīng)常有香客問(wèn)我,道長(zhǎng)溅呢,這世上最難降的妖魔是什么澡屡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮咐旧,結(jié)果婚禮上驶鹉,老公的妹妹穿的比我還像新娘。我一直安慰自己铣墨,他們只是感情好梁厉,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般词顾。 火紅的嫁衣襯著肌膚如雪八秃。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天肉盹,我揣著相機(jī)與錄音昔驱,去河邊找鬼。 笑死上忍,一個(gè)胖子當(dāng)著我的面吹牛骤肛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播窍蓝,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼腋颠,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了吓笙?” 一聲冷哼從身側(cè)響起淑玫,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎面睛,沒(méi)想到半個(gè)月后絮蒿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叁鉴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年土涝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幌墓。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡但壮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出常侣,到底是詐尸還是另有隱情蜡饵,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布袭祟,位于F島的核電站,受9級(jí)特大地震影響捞附,放射性物質(zhì)發(fā)生泄漏巾乳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一鸟召、第九天 我趴在偏房一處隱蔽的房頂上張望胆绊。 院中可真熱鬧,春花似錦欧募、人聲如沸压状。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)种冬。三九已至镣丑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間娱两,已是汗流浹背莺匠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留十兢,地道東北人趣竣。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像旱物,于是被迫代替她去往敵國(guó)和親遥缕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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