python docker快速入門2安裝

簡介

本章中,您將學(xué)習(xí)如何安裝Docker绰垂。并學(xué)習(xí)Docker術(shù)語室奏,如映像、容器劲装、Dockerfiles和 Docker組件胧沫。您還將使用一些簡單的Docker命令來工作。用于創(chuàng)建占业、運(yùn)行和停止Docker容器绒怨。

安裝

Docker公司提供了社區(qū)版和企業(yè)版。的Docker平臺(tái)谦疾。企業(yè)版的功能與Docker平臺(tái)相同南蹂。社區(qū)版,但它提供了額外的支持和認(rèn)證的念恍。容器六剥、插件和基礎(chǔ)設(shè)施。對于大多數(shù)一般的開發(fā)和生產(chǎn)使用峰伙,社區(qū)版 合適的疗疟。

在Windows上安裝Docker 在Windows上安裝Docker之前,你需要滿足一定的先決條件瞳氓。這些包括以下內(nèi)容策彤。

  • Hyper-V支持 - 硬件虛擬化支持,通常在系統(tǒng)BIOS中啟用 - 只有64位版本的Windows 10(Pro/Education/)才能安裝匣摘。這看起來像一個(gè)虛擬化設(shè)置需要店诗,而你在上一章了解到,Docker并不是虛擬化音榜。

那么為什么Docker for Windows需要虛擬化所需的功能呢必搞?簡短的回答是,Docker依賴于眾多的功能囊咏,比如命名空間和cgroups,而這些在Windows上是不可用的塔橡。為了繞過這一限制梅割,Docker for Windows創(chuàng)建了一個(gè)運(yùn)行Linux內(nèi)核的輕量級(jí)Hyper-V容器。

在撰寫本文時(shí)葛家,Docker包括對Native容器的實(shí)驗(yàn)性支持户辞,允許在不需要Hyper-V的情況下創(chuàng)建容器。

<u>https://hub.docker.com/editions/community/docker-ce-desktop-windows</u>

<u>https://hub.docker.com/editions/community/docker-ce-desktop-mac</u>

<u>https://www.docker.com/community-edition</u>

sudo apt install docker.io

docker run --rm hello-world

參考資料

基本概念

現(xiàn)在我們已經(jīng)安裝并運(yùn)行了Docker底燎,讓我們來了解與Docker相關(guān)的不同術(shù)語刃榨。

Layer: Image是應(yīng)用于Docker鏡像的修改,由Docker文件中的指令來表示双仍。通常情況下枢希,當(dāng)一個(gè)基礎(chǔ)鏡像被改變時(shí),就會(huì)創(chuàng)建一個(gè)圖層--例如朱沃,考慮一個(gè)看起來像這樣的Dockerfile苞轿。

FROM ubuntu

Run mkdir /tmp/logs

RUN apt-get install vim

RUN apt-get install htop

現(xiàn)在在這種情況下,Docker會(huì)將Ubuntu鏡像作為基礎(chǔ)鏡像逗物,并添加三個(gè)層搬卒。

  • 一個(gè)層用于創(chuàng)建/tmp/logs - 另一個(gè)層安裝vim - 第三個(gè)層安裝htop。

當(dāng)Docker構(gòu)建鏡像時(shí)翎卓,每個(gè)層都會(huì)疊加在下一個(gè)層上契邀,并使用聯(lián)合文件系統(tǒng)合并成一個(gè)層。層使用sha256哈希值進(jìn)行唯一識(shí)別失暴。這使其易于重用和緩存坯门。當(dāng)Docker掃描基礎(chǔ)鏡像時(shí),它會(huì)掃描構(gòu)成鏡像的所有層的ID锐帜,并開始下載層田盈。如果某個(gè)層存在于本地緩存中,它就會(huì)跳過下載緩存的鏡像缴阎。

Docker Image:Docker image是一個(gè)只讀的模板允瞧,它構(gòu)成了你的應(yīng)用程序的基礎(chǔ)。一個(gè)Docker鏡像從一個(gè)基礎(chǔ)鏡像開始--通常選擇的是大家最熟悉的操作系統(tǒng)的鏡像蛮拔,比如Ubuntu述暂。在這個(gè)鏡像之上,我們可以添加構(gòu)建我們的應(yīng)用棧建炫,在需要的時(shí)候添加包畦韭。

有許多預(yù)構(gòu)建的鏡像,用于一些最常見的應(yīng)用程序堆棧肛跌,如Django艺配、PHP-FPM與nginx。

等衍慎。

我們可以從相關(guān)的Dockerfile中構(gòu)建自己的鏡像转唉,然后將構(gòu)建好的鏡像發(fā)布到注冊表中。我們將在以后的章節(jié)中深入研究Dockerfile∥壤Γ現(xiàn)在赠法,將Docker鏡像視為最終的可執(zhí)行包,它包含了運(yùn)行應(yīng)用程序的一切乔夯。這包括源代碼砖织、所需的庫和任何依賴關(guān)系款侵。

Docker容器:Docker鏡像在主機(jī)中運(yùn)行時(shí),會(huì)生成一個(gè)有自己命名空間的進(jìn)程侧纯,稱為Docker容器新锈。Docker鏡像與容器的主要區(qū)別在于,Docker鏡像存在一個(gè)薄薄的讀/寫的容器茂蚓。壕鹉。對容器的文件系統(tǒng)的任何改變,如寫入新文件或修改現(xiàn)有文件聋涨,都是在這個(gè)可寫容器層上完成的晾浴,而不是在下層。

綁定掛載和卷:我們在前面提到牍白,當(dāng)一個(gè)容器運(yùn)行時(shí)脊凰,對容器的任何更改都存在于文件系統(tǒng)的容器層中。當(dāng)一個(gè)容器被殺死時(shí)茂腥,這些更改就會(huì)丟失狸涌,數(shù)據(jù)也無法再訪問。即使在容器運(yùn)行時(shí)最岗,從容器中獲取數(shù)據(jù)也不是很直接帕胆。此外,向容器的可寫層寫入數(shù)據(jù)需要一個(gè)存儲(chǔ)驅(qū)動(dòng)來管理文件系統(tǒng)般渡。存儲(chǔ)驅(qū)動(dòng)在文件系統(tǒng)上提供了一個(gè)可用來持久化變化的抽象懒豹,這種抽象往往會(huì)降低性能。

基于這些原因驯用,Docker提供了不同的方式來從Docker主機(jī)將數(shù)據(jù)掛載到容器中:卷脸秽、綁定掛載和tmpfs卷。tmpfs卷只存儲(chǔ)在主機(jī)系統(tǒng)的內(nèi)存中蝴乔,而綁定掛載和卷則存儲(chǔ)在主機(jī)文件系統(tǒng)中记餐。

Docker Registry:我們在前面提到過,你可以利用常見應(yīng)用棧的現(xiàn)有鏡像--你有沒有想過這些鏡像在哪里薇正,以及如何在構(gòu)建應(yīng)用時(shí)使用它們片酝?Docker Registry是一個(gè)可以存儲(chǔ)Docker鏡像的地方,這樣就可以將它們作為基礎(chǔ)來使用

的應(yīng)用棧挖腰。一些常見的Docker注冊中心的例子包括以下幾個(gè)雕沿。

? Docker Hub

? Google Container Registry

? Amazon Elastic Container Registry

? JFrog Artifactory

Dockerfile:Dockerfile是一組告訴Docker如何構(gòu)建鏡像的指令。

一個(gè)典型的Dockerfile由以下內(nèi)容組成曙聂。

  • 一個(gè)FROM指令,告訴Docker什么是基礎(chǔ)鏡像 - 一個(gè)ENV指令鞠鲜,傳遞一個(gè)環(huán)境變量 - 一個(gè)RUN指令宁脊,運(yùn)行一些shell命令(例如断国,基礎(chǔ)鏡像中不可用的依賴安裝的程序)。

  • 一個(gè)CMD或一個(gè)ENTRYPOINT指令榆苞,告訴Docker在容器啟動(dòng)時(shí)運(yùn)行哪個(gè)可執(zhí)行文件 正如你所看到的稳衬,Dockerfile指令集的語法清晰而簡單,這使得它很容易理解坐漏。我們將在本書后面對Dockerfiles進(jìn)行深入的研究薄疚。

Docker Engine:Docker Engine是Docker的核心部分。Docker Engine是一個(gè)客戶端-服務(wù)器應(yīng)用程序赊琳,它為構(gòu)建和管理Docker鏡像街夭、Docker容器等提供平臺(tái)、運(yùn)行時(shí)和工具躏筏。

Docker Engine提供了以下內(nèi)容板丽。

? Docker daemon

? Docker CLI

? Docker API-

Docker Daemon - 。

Docker守護(hù)進(jìn)程是一個(gè)在主機(jī)后臺(tái)運(yùn)行的服務(wù)趁尼,處理大部分Docker命令的重任埃碱。

守護(hù)進(jìn)程監(jiān)聽用于創(chuàng)建和管理Docker對象(如容器)的API請求。

Docker守護(hù)進(jìn)程還可以與其他守護(hù)進(jìn)程對話酥泞,以管理和監(jiān)控Docker容器砚殿。守護(hù)進(jìn)程間通信的一些例子包括用于容器指標(biāo)監(jiān)控的通信Datadog和用于容器安全監(jiān)控的Aqua。

Docker CLI是你與Docker交互的主要方式芝囤。Docker CLI公開了一組你可以提供的命令似炎。Docker CLI將請求轉(zhuǎn)發(fā)到Docker daemon,然后由Docker daemon執(zhí)行必要的工作凡人。

build

pull

run

exec

雖然Docker CLI包括種類繁多的命令和子命令名党,但我們在本書中最常用的命令如前所述。

<u>https://docs.docker.com/engine/reference/commandline/cli/</u>

在任何時(shí)候挠轴,給一個(gè)命令添加幫助传睹,都會(huì)顯示出該命令所需的文檔。例如岸晦,如果你不太確定從哪里開始使用Docker CLI欧啤,你可以鍵入以下內(nèi)容。

docker help

docker help pull

Docker API

Docker還提供了一個(gè)與Docker引擎交互的API启上。如果需要在應(yīng)用程序中創(chuàng)建或管理容器邢隧,這一點(diǎn)特別有用。幾乎所有Docker CLI支持的操作都可以通過API來完成冈在。

最簡單的方法是使用curl發(fā)送API請求來啟動(dòng)Docker API倒慧。對于Windows Docker主機(jī),我們可以通過TCP端點(diǎn)到達(dá)。

curl <u>http://localhost:2375/images/json</u>

curl --unix-socket /var/run/docker.sock -X POST <u>http://images/json</u>

Docker Compose是一個(gè)定義和運(yùn)行多容器應(yīng)用程序的工具纫谅。就像Docker允許你為你的應(yīng)用程序構(gòu)建一個(gè)鏡像并在你的容器中運(yùn)行一樣炫贤,Compose使用相同的鏡像與定義文件(稱為compose文件)相結(jié)合來構(gòu)建。啟動(dòng)和運(yùn)行多容器應(yīng)用程序付秕,包括依賴和鏈接容器兰珍。

Docker Compose最常見的用例是運(yùn)行應(yīng)用程序及其依賴的服務(wù)(如數(shù)據(jù)庫和緩存提供商)。

以與運(yùn)行單個(gè)容器應(yīng)用同樣簡單询吴、精簡的方式掠河。

Docker Machine是一個(gè)用于在多個(gè)虛擬主機(jī)上安裝Docker引擎,然后管理主機(jī)的工具猛计。Docker Machine允許你在本地以及遠(yuǎn)程系統(tǒng)上創(chuàng)建Docker主機(jī)唠摹,包括在Amazon Web Services、DigitalOcean和Microsoft Azure等云平臺(tái)上有滑。

使用Docker鏡像 讓我們來看看可用的Docker鏡像跃闹。要做到這一點(diǎn),請鍵入以下命令毛好。

docker image ls 這是本地可用鏡像的列表望艺。

下面是有些常用的命令,可以自己實(shí)踐體驗(yàn)下肌访。

docker image inspect hello-world

docker pull nginx

docker pull nginx:1.12-alpine-perl

docker pull docker-private.registry:1337/nginx

docker login docker-private.registry:1337

docker run -p 80:80 nginx

docker image inspect nginx | jq .[].Config.ExposedPorts

docker ps

docker ps -a

-n required-name

docker stop <container-id>

docker kill 3ed1222964de

docker rm <container-id>

docker image ls

docker rmi 3f8a4339aadd

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末找默,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吼驶,更是在濱河造成了極大的恐慌惩激,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蟹演,死亡現(xiàn)場離奇詭異风钻,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)酒请,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門骡技,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人羞反,你說我怎么就攤上這事芒涡∩ゴ龋” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵陵吸,是天一觀的道長冬三。 經(jīng)常有香客問我王凑,道長紊馏,這世上最難降的妖魔是什么硬贯? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任富雅,我火速辦了婚禮,結(jié)果婚禮上肛搬,老公的妹妹穿的比我還像新娘吹榴。我一直安慰自己,他們只是感情好滚婉,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著帅刀,像睡著了一般让腹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扣溺,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天骇窍,我揣著相機(jī)與錄音,去河邊找鬼锥余。 笑死腹纳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的驱犹。 我是一名探鬼主播嘲恍,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼雄驹!你這毒婦竟也來了佃牛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對情侶失蹤医舆,失蹤者是張志新(化名)和其女友劉穎俘侠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔬将,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡爷速,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了霞怀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惫东。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖里烦,靈堂內(nèi)的尸體忽然破棺而出凿蒜,到底是詐尸還是另有隱情,我是刑警寧澤胁黑,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布废封,位于F島的核電站,受9級(jí)特大地震影響丧蘸,放射性物質(zhì)發(fā)生泄漏漂洋。R本人自食惡果不足惜遥皂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刽漂。 院中可真熱鬧演训,春花似錦、人聲如沸贝咙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庭猩。三九已至窟她,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蔼水,已是汗流浹背震糖。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留趴腋,地道東北人吊说。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像优炬,于是被迫代替她去往敵國和親颁井。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345