Docker基本概念和操作

Docker基本概念

Docker是一個(gè)能夠把開發(fā)的應(yīng)用程序自動(dòng)部署到容器的開源引擎摹芙。相比虛擬機(jī)纯路,容器更加輕量級(jí),因?yàn)樗苯诱{(diào)用OS接口,而不是運(yùn)行一個(gè)虛擬機(jī)上鞠。通過容器际邻,可以很容易的獲得一個(gè)完整的程序運(yùn)行環(huán)境,我們可以用它來開發(fā)或者學(xué)習(xí)芍阎。
簡單來說世曾,如果使用Windows,希望用一個(gè)Linux環(huán)境來做一些事情谴咸,那么現(xiàn)在可以不用虛擬機(jī)了(不用安裝VMWare或VirtualBox)轮听,也可以不用Vagrant,而是直接運(yùn)行一個(gè)Docker容器就可以了岭佳。

Docker客戶端和服務(wù)器

Docker是C/S架構(gòu)的程序血巍。用戶在Docker客戶端執(zhí)行命令,客戶端向服務(wù)器發(fā)起請(qǐng)求珊随,服務(wù)器處理并返回結(jié)果述寡,最終結(jié)果顯示到客戶端。

鏡像(Image)

Image包含了一個(gè)基本的OS(比如Ubuntu)和應(yīng)用需要的運(yùn)行環(huán)境(即文件系統(tǒng))叶洞,這些文件系統(tǒng)中的文件可能是存在于多個(gè)layer的鲫凶,最終呈現(xiàn)結(jié)果是這些layer的疊加結(jié)果。
通過Dockerfile可以構(gòu)建一個(gè)Image衩辟,Dockerfile定義了使用的base操作系統(tǒng)螟炫,和一系列操作,比如RUN執(zhí)行命令艺晴,或者COPY把 Dockerfile同一級(jí)目錄的其他文件拷貝到Image中昼钻。每個(gè)命令的執(zhí)行都會(huì)產(chǎn)生一個(gè)新的Layer。
底層的Layer實(shí)際上是無法被修改的财饥,所以不要期待后面的刪除命令可以讓Image的size變小换吧。要減小size折晦,只能是執(zhí)行命令讓size變大后的同一個(gè)RUN命令中钥星,刪除不需要的垃圾,避免垃圾留在某一個(gè)layer中满着。
Image運(yùn)行時(shí)谦炒,除了Image中包含的若干Layer,還在最上面有一個(gè)可寫的Layer风喇。運(yùn)行環(huán)境中的操作宁改,都體現(xiàn)在可寫的Layer上。如果用docker commit提交魂莫,可以產(chǎn)生一個(gè)新的鏡像还蹲。

Rigistry

Docker用Rigistry來保存用戶構(gòu)建的鏡像,Docker公司運(yùn)營的Rigistry叫Docker Hub。用戶可以在Docker Hub上注冊賬號(hào)谜喊,從而發(fā)布自己構(gòu)建的鏡像潭兽。而且,還可以在github上建立一個(gè)git倉斗遏,放入Dockerfile山卦,然后在Docker Hub上創(chuàng)建一個(gè)自動(dòng)構(gòu)建項(xiàng)目,關(guān)聯(lián)到上述github倉诵次,則可以在git倉有更新時(shí)账蓉,自動(dòng)觸發(fā)構(gòu)建。這種方式逾一,可以非常有效的規(guī)避網(wǎng)絡(luò)不穩(wěn)定帶來的本地構(gòu)建鏡像的問題铸本,比如apt-get安裝程序失敗。

容器(Container)

容器提供了程序的運(yùn)行環(huán)境嬉荆,把Image運(yùn)行起來归敬,就是一個(gè)容器。

Docker基本操作

查看Image

docker images
輸出結(jié)果:

|REPOSITORY|TAG|IMAGE ID|CREATED|SIZE|
|----------|---|--------|-------|----|
|friendlyhello|latest|6b7d6b366676|About a minute ago| 194 MB|
|python|2.7-slim|faea7032fa5c|3 days ago|183 MB|
|hello-world|latest|48b5124b2768|3 months ago|1.84 kB|

運(yùn)行Image

docker run -i -t image-name /bin/bash

注1:-i表示交互式鄙早,-t表示啟動(dòng)一個(gè)終端汪茧,/bin/bash表示啟動(dòng)后運(yùn)行一個(gè)交互式shell。
注2: image-name可以用上面查詢出的repository:tag表示(沒有沖突時(shí)用repository也行)限番,或者用image id舱污。
注3:執(zhí)行某個(gè)image時(shí),如果該image還未下載弥虐,則會(huì)自動(dòng)下載扩灯。當(dāng)然也可以先執(zhí)行docker pull image-name下載。
注4:如果沒有本地Image,可以在Docker Hub查找需要的image運(yùn)行霜瘪。

查看Docker容器

docker ps

注1:不帶參數(shù)查詢正在運(yùn)行的docker容器珠插。
注2:帶-a參數(shù)查看所有docker容器。
注3:帶-l -q參數(shù)查看最近退出的docker容器id颖对。

重新進(jìn)入正在運(yùn)行的Docker容器命令行

方法一:重新附著到容器
docker attach container_name
方法二:在容器內(nèi)開啟一個(gè)執(zhí)行交互命令的進(jìn)程
docker exec -t -i container_name /bin/bash

查看運(yùn)行的Docker容器的統(tǒng)計(jì)信息

docker stats

停止容器

docker stop container_name

注1:容器名稱可以用容器ID捻撑。
注2:如果不是deamon形式的容器,交互式shell退出時(shí)容器也退出了缤底。

刪除容器

docker rm container_id

刪除鏡像

docker rmi image_id

提交修改的鏡像

docker commit container_id image_name

注:修改后會(huì)產(chǎn)生一個(gè)新的Layer顾患。

用Dockerfile構(gòu)建鏡像

docker build -t docker_image_tag .

Dockerfile編寫注意

  1. 每個(gè)RUN命令,都會(huì)產(chǎn)生一個(gè)Layer个唧,所以一個(gè)命令有垃圾產(chǎn)生江解,則在同一個(gè)RUN命令中把它清理掉。
  2. 可以在下面網(wǎng)站編寫徙歼,它會(huì)檢查是否可以優(yōu)化:https://www.fromlatest.io/#/犁河。
  3. COPY命令可以把Dorckerfile同一級(jí)目錄/文件拷貝到容器image鳖枕。
  4. 安裝程序的命令添加選項(xiàng)禁止安裝推薦的軟件包,eg: apt-get install -y --no-install-recommends wget.

Docker容器和本地電腦拷貝文件/目錄

容器到本地:
docker cp container_name:/path/to/file .
本地到容器:
docker cp /path/to/file container_name:/dest/path

查詢Docker信息

docker info

注1:此命令可以查詢很多docker信息桨螺,包括docker虛擬機(jī)運(yùn)行時(shí)使用的代理參數(shù)等耕魄。
注2:如果是在內(nèi)網(wǎng)使用,需要配置docker代理彭谁,Ubuntu 14.04是在 /etc/defaults/docker中配置export https_proxy=https://user:pass@proxyurl.com:8080/ 以及 http_proxy的代理吸奴,然后重啟docker服務(wù):sudo service docker restart。

保存Docker image(持久化Docker鏡像)

docker save image_name -o file_path
把一個(gè)當(dāng)前未在運(yùn)行的docker image保存到文件缠局。

加載Docker image

docker load -i file_path
加載Docker鏡像则奥。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市狭园,隨后出現(xiàn)的幾起案子读处,更是在濱河造成了極大的恐慌,老刑警劉巖唱矛,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罚舱,死亡現(xiàn)場離奇詭異,居然都是意外死亡绎谦,警方通過查閱死者的電腦和手機(jī)管闷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窃肠,“玉大人包个,你說我怎么就攤上這事≡┝簦” “怎么了碧囊?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長纤怒。 經(jīng)常有香客問我糯而,道長,這世上最難降的妖魔是什么泊窘? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任熄驼,我火速辦了婚禮,結(jié)果婚禮上州既,老公的妹妹穿的比我還像新娘谜洽。我一直安慰自己萝映,他們只是感情好吴叶,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著序臂,像睡著了一般蚌卤。 火紅的嫁衣襯著肌膚如雪实束。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天逊彭,我揣著相機(jī)與錄音咸灿,去河邊找鬼。 笑死侮叮,一個(gè)胖子當(dāng)著我的面吹牛避矢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播囊榜,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼审胸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了卸勺?” 一聲冷哼從身側(cè)響起砂沛,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎曙求,沒想到半個(gè)月后碍庵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡悟狱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年静浴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挤渐。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡马绝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挣菲,到底是詐尸還是另有隱情富稻,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布白胀,位于F島的核電站椭赋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏或杠。R本人自食惡果不足惜哪怔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望向抢。 院中可真熱鬧认境,春花似錦、人聲如沸挟鸠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽艘希。三九已至硼身,卻和暖如春硅急,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背佳遂。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國打工营袜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人丑罪。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓荚板,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吩屹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子啸驯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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