Docker系列2.容器基礎(chǔ)

摘要:介紹Docker容器相關(guān)的操作命令。

知識(shí)點(diǎn):
run ps start attach exec top stop kill
inspect rm logs images rmi pull push
commit build

注:可以使用docker COMMAND --help來(lái)查看COMMAND的詳細(xì)用法惜浅,本文只介紹常用的子集瘫辩。

一.啟動(dòng)容器

啟動(dòng)之前未啟動(dòng)過(guò)的容器:

docker run [-d] [-i] [-t] IMAGE [Command] [Arguments]
· -d:daemon,啟動(dòng)守護(hù)式容器
· -i:interactive坛悉,啟動(dòng)交互式容器
· -t:tty伐厌,允許標(biāo)準(zhǔn)輸入輸出

還有一些其他的選項(xiàng)
· --name=NAME:給容器指定一個(gè)別名。否則尋找容器要用ID或系統(tǒng)自帶名字裸影,很不友好弧械。

啟動(dòng)執(zhí)行一次命令的容器

docker run ubuntu echo "hello world"

這樣的容器執(zhí)行一次命令就停止了。

啟動(dòng)交互式容器

docker run -i -t ubuntu /bin/bash

接下來(lái)就進(jìn)入了容器的bash中空民,可以執(zhí)行各種命令刃唐,好像虛擬機(jī)一樣。
此時(shí)想要退出容器界轩,可以使用exit退出并停止容器画饥,或【Ctrl+P】+【Ctrl+Q】的escape組合,退出而不停止容器浊猾。

啟動(dòng)守護(hù)式容器

這樣的容器能夠長(zhǎng)期運(yùn)行抖甘,沒(méi)有會(huì)話,適合運(yùn)行各種服務(wù)葫慎。下面是啟動(dòng)守護(hù)式容器的幾種方法:

  1. 在交互式容器中使用【Ctrl+P】+【Ctrl+Q】的命令返回衔彻,容器因?yàn)闆](méi)有停止,變?yōu)槭刈o(hù)式容器偷办。
    如果使用ps命令來(lái)查看艰额,會(huì)發(fā)現(xiàn)這個(gè)容器直接被列出。
    此時(shí)若想返回這個(gè)容器椒涯,要使用docker attach 容器名命令柄沮,附加到運(yùn)行的容器中。
  2. 使用run命令來(lái)建立:
    docker run -d 鏡像名 [command] [args]
    -d的意思是,使用后臺(tái)的方式啟動(dòng)守護(hù)式的容器,執(zhí)行命令祖搓。但是命令運(yùn)行結(jié)束后狱意,容器依然會(huì)停止。
    舉例:docker run --name=test -d ubuntu "while true ;do echo hello world; sleep 1; done"
    如果想要了解守護(hù)式容器中的運(yùn)行情況拯欧,需要使用log命令详囤,后文介紹。

重新啟動(dòng)已經(jīng)停止的容器:

docker start [-i] 容器名
· -i:以交互的方式重新啟動(dòng)镐作。
docker start -i NAME

二.操作容器

列出容器

docker ps [-a] [-l]
· -a:列出所有的容器(包括停止的)
· -l:列出新創(chuàng)建的容器
· 默認(rèn):只列出未停止的容器

執(zhí)行此命令后纬纪,docker將列出容器列表的信息。其中那一串很長(zhǎng)的無(wú)規(guī)律串就是容器的ID滑肉,而name一列就是你指定或系統(tǒng)指定的容器別名包各。

查看某個(gè)容器的配置docker inspect ID或者別名

執(zhí)行此命令后,docker以json格式列出指定容器很多信息靶庙。包括操作系統(tǒng)版本问畅,名稱(chēng),命令六荒,網(wǎng)絡(luò)配置等护姆。

刪除容器docker rm 容器名

只能刪除已經(jīng)停止的容器,不能刪除運(yùn)行中的容器掏击。
刪除后卵皂,ps命令會(huì)找不到那個(gè)容器。

查看容器的運(yùn)行情況

docker logs [-f] [-t] [--tail]

  • -f:--follows=true|false砚亭,告訴日志灯变,一直跟蹤容器的變化。
  • -t:--timestamps=true|false捅膘,為返回的結(jié)果時(shí)間戳添祸。
  • --tail:選擇返回結(jié)尾處多少數(shù)量的日志。不指定的話寻仗,返回所有日志刃泌。

舉例:docker logs --tail=5 -tf test查看test容器最后五條命令,帶時(shí)間戳并且隨時(shí)更新署尤。

查看容器中的進(jìn)程情況

docker top 容器名

在運(yùn)行的程序中啟動(dòng)新的進(jìn)程

docker exec [-d] [-i] [-t] 容器名 [command] [args]
舉例:docker exec -i -t test /bin/bash啟動(dòng)一個(gè)新的bash進(jìn)程

停止容器

  • stop命令:給容器發(fā)送一個(gè)信號(hào)耙替,等待容器的停止。
    docker stop 容器名
  • kill命令:直接停止一個(gè)容器
    docker kill 容器名

三.操作鏡像

鏡像存放在倉(cāng)庫(kù)(repository)中曹体,而這個(gè)倉(cāng)庫(kù)存放在倉(cāng)庫(kù)(registory)中俗扇。
鏡像由Repository和Tag唯一指定,比如ubuntu:14.04混坞,ubuntu:latest狐援,這里14.04和latest就是Tag,ubuntu就是Repository究孕。如果沒(méi)有指定Tag啥酱,則會(huì)使用默認(rèn)的latest。

查看本地鏡像列表

docker images [-a] [-f] [-q] [--no-trunc]

  • -a:--all厨诸,列出所有
  • -f:--filter镶殷,指定過(guò)濾器
  • -q:--quiet,只列出ID
  • --no-trunc:不截?cái)郔D
  • 可以使用Repository的名字作為參數(shù)微酬,它會(huì)返回對(duì)應(yīng)名字的所有鏡像绘趋。

查看特定鏡像信息

docker inspect 鏡像倉(cāng)庫(kù)名+Tag名,或者鏡像ID

刪除鏡像

docker rmi [-f] [--no-prune=false] 鏡像倉(cāng)庫(kù)名+Tag名颗管,或者鏡像ID

  • -f:--force陷遮,強(qiáng)制刪除。如果有容器在鏡像基礎(chǔ)上生成垦江,必須用這個(gè)選項(xiàng)帽馋。
  • --no-prune:不要?jiǎng)h除未打標(biāo)簽的父鏡像。

如果一個(gè)鏡像ID對(duì)應(yīng)了多個(gè)鏡像標(biāo)簽比吭,那么使用Image ID才可以刪除鏡像绽族,如果使用倉(cāng)庫(kù)名+標(biāo)簽,只能刪除對(duì)應(yīng)的標(biāo)簽衩藤。
如果想要?jiǎng)h除鏡像倉(cāng)庫(kù)下的多個(gè)鏡像吧慢,可以用如下語(yǔ)法:
docker rmi $(docker images -q ubuntu)

在遠(yuǎn)程鏡像倉(cāng)庫(kù)搜索鏡像

docker search [options] 鏡像倉(cāng)庫(kù)名

  • --automated=false:只顯示自動(dòng)構(gòu)建的鏡像
  • -s:--stars X:只顯示不小于X星級(jí)的鏡像

注意:search命令最多只能顯示25個(gè)結(jié)果。搜索結(jié)果后赏表,將返回鏡像的信息(星級(jí)检诗,是否官方,ID瓢剿,標(biāo)簽...)

把鏡像下載到本地

docker pull [options] NAME [:TAG]

  • -a:--all-tags=false|true岁诉,把所有打了標(biāo)簽的鏡像都下載到本地。

把鏡像推送到遠(yuǎn)程

docker push NAME
需要提供用戶名跋选,密碼和郵箱涕癣。
Docker不會(huì)上傳整個(gè)鏡像,而只會(huì)上傳修改的部分前标。
鏡像默認(rèn)是公共的坠韩,可以在Docker Hub轉(zhuǎn)為私有。

構(gòu)建鏡像

鏡像的構(gòu)建非常重要炼列。我們可以自定義一個(gè)容器只搁,安裝好自己需要的一些文件,然后構(gòu)建成鏡像以方便復(fù)用俭尖。

1.通過(guò)容器構(gòu)建

docker commit [options] 容器名 [Repository[:TAG]]

  • -a:指定鏡像的作者氢惋,一般是作者名和聯(lián)系方式
  • -m:記錄鏡像構(gòu)建的信息
  • -p:正常在構(gòu)建鏡像時(shí)會(huì)使容器暫停洞翩,使用-p告訴容器不要暫停

2.通過(guò)dockerfile文件來(lái)構(gòu)建

首先要?jiǎng)?chuàng)建dockerfile文件,它是一種包含一系列命令的文本文件焰望。
舉例:

#First Dockerfile
FROM ubuntu:14.04
MAINTAINER RaidriarB "raidriarb@foxmail.com"
RUN apt-get update
RUN apt-get install nginx
EXPOSE 80

然后執(zhí)行build的命令來(lái)構(gòu)建鏡像骚亿。
docker build [options] path|url

  • -t:指定鏡像的標(biāo)簽
  • 還有一些選項(xiàng):--force-rm --no-cache --pull --quiet --rm
  • path要指定dockerfile的文件目錄。

docker會(huì)在build的過(guò)程中熊赖,每一步都生成一個(gè)ID来屠,這就是構(gòu)建時(shí)的中間層鏡像。如果使用ps命令查看震鹉,會(huì)發(fā)現(xiàn)他們的標(biāo)簽和倉(cāng)庫(kù)名都是none俱笛。如果想要取消構(gòu)建中間層鏡像,只需要使用--quiet或者-q選項(xiàng)传趾。
dockerfile類(lèi)似批處理文件迎膜,是一種非常強(qiáng)大的構(gòu)建鏡像方式。后面會(huì)詳細(xì)介紹dockerfile的功能浆兰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末星虹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子镊讼,更是在濱河造成了極大的恐慌宽涌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝶棋,死亡現(xiàn)場(chǎng)離奇詭異卸亮,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)玩裙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)兼贸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人吃溅,你說(shuō)我怎么就攤上這事溶诞。” “怎么了决侈?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵螺垢,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我赖歌,道長(zhǎng)枉圃,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任庐冯,我火速辦了婚禮孽亲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘展父。我一直安慰自己返劲,他們只是感情好玲昧,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著篮绿,像睡著了一般孵延。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上搔耕,一...
    開(kāi)封第一講書(shū)人閱讀 52,156評(píng)論 1 308
  • 那天隙袁,我揣著相機(jī)與錄音痰娱,去河邊找鬼弃榨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛梨睁,可吹牛的內(nèi)容都是我干的鲸睛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼坡贺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼官辈!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起遍坟,我...
    開(kāi)封第一講書(shū)人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拳亿,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后愿伴,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體肺魁,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年隔节,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鹅经。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怎诫,死狀恐怖瘾晃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情幻妓,我是刑警寧澤蹦误,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站肉津,受9級(jí)特大地震影響胖缤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜阀圾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一哪廓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧初烘,春花似錦涡真、人聲如沸分俯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缸剪。三九已至,卻和暖如春东亦,著一層夾襖步出監(jiān)牢的瞬間杏节,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工典阵, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奋渔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓壮啊,卻偏偏與公主長(zhǎng)得像嫉鲸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子歹啼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359