DOCKER 常用命令

啟動(dòng)docker

docker run

查看版本

docker version

查看本地鏡像

docker images
直接列出鏡像結(jié)果鸟廓,并且只包含鏡像ID和倉庫名:
image ls 就是 images
docker image ls --format "{{.ID}}: {{.Repository}}"
以表格等距顯示拘央,并且有標(biāo)題行,和默認(rèn)一樣,不過自己定義列:
不要打錯(cuò)單詞了
docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

下載鏡像

docker pull <$images>
例如: docker pull busybox

docker pull [選項(xiàng)] [Docker Registry 地址[:端口號(hào)]/] 倉庫名[:標(biāo)簽]
具體的選項(xiàng)可以通過 docker pull --help 命令看到采驻,這里我們說一下鏡像名稱的格式岩喷。

  • Docker 鏡像倉庫地址:地址的格式一般是 <域名/IP>[:端口號(hào)]。默認(rèn)地址是 Docker Hub强重。
  • 倉庫名:如之前所說绞呈,這里的倉庫名是兩段式名稱,即 <用戶名>/<軟件名>间景。對(duì)于 Docker Hub佃声,如果不給出用戶名,則默認(rèn)為 library倘要,也就是官方鏡像秉溉。

比如: docker pull ubuntu:16.04

進(jìn)入shell命令

docker run -i -t $IMAGE /bin/bash
$IMAGE是鏡像的名字,不能是容器的名字或者ID
-t:在新容器內(nèi)指定一個(gè)偽終端或終端碗誉。
-i:允許你對(duì)容器內(nèi)的標(biāo)準(zhǔn)輸入 (STDIN) 進(jìn)行交互召嘶。

docker run -it --rm ubuntu bash

  • -it:這是兩個(gè)參數(shù),一個(gè)是 -i:交互式操作哮缺,一個(gè)是 -t 終端弄跌。我們這里打算進(jìn)入 bash 執(zhí)行一些命令并查看返回結(jié)果,因此我們需要交互式終端尝苇。
  • --rm:這個(gè)參數(shù)是說容器退出后隨之將其刪除铛只。默認(rèn)情況下,為了排障需求糠溜,退出的容器并不會(huì)立即刪除淳玩,除非手動(dòng) docker rm。我們這里只是隨便執(zhí)行個(gè)命令非竿,看看結(jié)果蜕着,不需要排障和保留結(jié)果,因此使用 --rm 可以避免浪費(fèi)空間红柱。
  • ubuntu::這是指用 ubuntu 鏡像為基礎(chǔ)來啟動(dòng)容器承匣。
  • bash:放在鏡像名后的是命令,這里我們希望有個(gè)交互式 Shell锤悄,因此用的是 bash韧骗。

列出所有的容器

docker ps -a[-l]
如果只是docker ps則是列出當(dāng)前運(yùn)行的容器

列出容器的配置

docker inspect IMAGE_ID
IMAGE_ID可以通過docker ps -l命令查看到。

給容器重命名

docker run --name=container01-i -t ubuntu /bin/bash
ubutun是指的鏡像零聚,container01指的是重命名的名字
重命名后袍暴,使用docker ps -l列出所有容器時(shí)些侍,在最后一列的NAMES中顯示出來

重新啟動(dòng)停止的命令

docker start [-i] NAMES
NAMES是容器的名字,或者是容器的ID
每次使用鏡像啟動(dòng)時(shí)都會(huì)創(chuàng)建一個(gè)容器政模,使用該命令時(shí)就相當(dāng)于使用之前創(chuàng)建過的容器不會(huì)再次創(chuàng)建了岗宣。
如果需要打開交互終端,需要使用 -i 览徒,但不需要加上 -t
注意的是狈定,可能不會(huì)自動(dòng)顯示命令終端,所以還需要敲擊回車鍵习蓬。

刪除停止的容器

docker rm NAMES
只能用來刪除停止的容器纽什,正在運(yùn)行的容器不可刪除
NAMES可以是名字,也可以是ID

守護(hù)式容器進(jìn)入方式

首先創(chuàng)建一個(gè)容器
docker run -i -t ubuntu /bin/bash
然后使用ctrl + pctrl + q的組合鍵躲叼,即按住ctrl鍵然后按P和Q芦缰,而不是直接使用exit命令來退出了
使用docker ps可以看到上面的容器還是運(yùn)行著的
重新進(jìn)入運(yùn)行中的容器
docker attach NAMES
NAMES可以是容器的NAMES或者ID

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

docker run -d 鏡像名
使用這種方式可以替代上面那段中提到的方式。
糾正:如果只是使用docker run -d 鏡像名命令無法創(chuàng)建守護(hù)式容器枫慷,還是需要使用
docker run -it -d ubuntu /bin/bash才行让蕾,加上 <strong>-d</strong>
使用docker ps可以看到剛啟動(dòng)的容器在后臺(tái)運(yùn)行

查看容器日志

docker logs [-f] [-t] [--tail] 容器名
    -f --follows=true | false 默認(rèn)為false
    -t --timestamp=true | false 默認(rèn)為false
    --tail="all"

-f: 一直跟蹤日志的變化并返回結(jié)果
-t: 在返回的結(jié)果上加上時(shí)間戳
--tail: 在結(jié)尾上返回多少數(shù)量的日志,默認(rèn)為all或听,返回所有的日志
例如使用該命令
docker run --name dc01 -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
--name表示將該容器命名為dc01
在該容器中探孝,一直打印hello world
(1) docker logs dc01 會(huì)將所有日志打印出來,每一行只會(huì)顯示 hello world誉裆,不會(huì)自動(dòng)更新
(2) docker logs -t dc01 在(1)的基礎(chǔ)上顿颅,在每一行前面加上時(shí)間戳
(3) docker logs -tf dc01 在(2)的基礎(chǔ)上,會(huì)隔一秒自動(dòng)多打印一句 hello world足丢,自動(dòng)更新
(4) docker logs -tf --tail 10 dc01 會(huì)從底部開始粱腻,取出10條log,并且會(huì)自動(dòng)更新log斩跌,如果--tail的值為0绍些,就只會(huì)打印最新的日志

查看容器內(nèi)的進(jìn)程

docker top 容器名

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

docker exec [-d] [-i] [-t] 容器名 [COMMAND][ARGS]
之前的dc01容器沒有停止,在后臺(tái)運(yùn)行
執(zhí)行這條命令
docker exec -i -t dc01 /bin/bash耀鸦,使用ctrl+ p 和 ctr + q 讓容器稱為守護(hù)式容器
然后通過docker top dc01可以看到容器中多了一個(gè)進(jìn)程

停止守護(hù)式容器

docker stop 容器名
docker kill 容器名
stop命令是發(fā)送一條命令給容器柬批,等待容器的停止
kill命令直接停止容器

查看端口映射

docker post 容器名

查看鏡像詳細(xì)信息

docker inspect 鏡像名

刪除鏡像

docker rmi [OPTIONS] 鏡像名 [IMAGE...]
如果使用docker rmi ubuntu:14.04刪除鏡像的話,可能只是刪除對(duì)應(yīng)標(biāo)簽揭糕,可以使用
docker rmi 鏡像ID來刪除鏡像

搜索鏡像

docker search [OPTIONS] TERM
    --automated=false # 只會(huì)顯示自動(dòng)化構(gòu)建的鏡像
    --no-trunc=false # 如果為True萝快,將會(huì)顯示完整的信息
    -s, --stars=0 # 限定最小星級(jí)

一次最多返回25個(gè)結(jié)果。
例如著角,docker search ubuntu -s 3

拉取鏡像

docker pull [OPTIONS] NAME[:TAG]
    -a, --all-tags=false # 是否下載所有搜索到的版本

設(shè)置使用國內(nèi)的鏡像加速網(wǎng)站

http://624869e7.m.daocloud.io
修改文件vim /etc/default/docker,加入語句

DOCKER_OPTS = "--registry-mirror=http://624869e7.m.daocloud.io"

重啟docker

sudo service docker restart

推送鏡像

docker push 鏡像名

刪除所有的image

docker rmi -f $(docker images -qa)

后臺(tái)程序機(jī)制

docker run -d centos
問題旋恼,使用上面的命令后吏口, 會(huì)發(fā)現(xiàn)啟動(dòng)后的容器已經(jīng)退出了奄容。
這個(gè)問題很需要,需要說明一下:Docker容器后臺(tái)運(yùn)行产徊,就必須要有一個(gè)前臺(tái)進(jìn)程昂勒。
容器運(yùn)行的命令如果不是那些一直掛起的命令,例如top舟铜,tail等戈盈,是會(huì)自動(dòng)退出的。
這是docker的機(jī)制問題谆刨,比如web容器塘娶,已nginx為例,正常情況下痊夭,配置啟動(dòng)服務(wù)只需要響應(yīng)的service即可刁岸,例如service nginx start。但是這樣做的話她我,nginx為后臺(tái)模式運(yùn)行虹曙,就導(dǎo)致docker前臺(tái)沒有運(yùn)行的應(yīng)用,這樣的容器后臺(tái)啟動(dòng)后悔立即自殺番舆,因?yàn)樗X得無事可做酝碳。
最佳的解決方案是,將要運(yùn)行的程序以前臺(tái)進(jìn)程的形式運(yùn)行恨狈。

進(jìn)入正在運(yùn)行的容器并以命令行交互

  • docker exec -it 容器ID /bin/bash
  • docker attach 容器ID
    這兩個(gè)命令的不同疏哗,attach是直接進(jìn)入容器,不會(huì)啟動(dòng)新的進(jìn)程拴事;exec打開新的終端沃斤,并可以啟動(dòng)新的進(jìn)程。
    例如刃宵,使用exec可以執(zhí)行這種命令:
    docker exec -t mycentos ls -l /tmp
    會(huì)在mycentos容器內(nèi)部使用ls -l /tmp命令衡瓶,并將結(jié)果返回到docker上,而不需要到容器內(nèi)部去執(zhí)行命令了牲证。

docker啟動(dòng)容器幾個(gè)重要的命令

  • docker run --name=mycentos centos會(huì)創(chuàng)建一個(gè)叫mycentos的centos容器哮针,該命令只會(huì)創(chuàng)建容器不會(huì)運(yùn)行
  • docker run -d --name=mycentos2 centos會(huì)創(chuàng)建一個(gè)在后臺(tái)運(yùn)行的容器,但由于docker機(jī)制(見上面解釋)坦袍,會(huì)立即殺死十厢,所以當(dāng)使用docker ps查看時(shí),也沒有在后臺(tái)運(yùn)行
  • docker run -it --name=mycentos3docker run -it --name=mycentos4 /bin/bash都創(chuàng)建一個(gè)容器后捂齐,會(huì)打開容器的shell界面蛮放,可以使用ctrl + pctrl + q將容器放到后臺(tái)進(jìn)程去
  • docker run --name=mycentos5 /bin/bashdocker run --name=mycentos centos命令效果一樣,后面的/bin/bash不生效
進(jìn)入運(yùn)行中的容器
  • docker start mycentos3不會(huì)進(jìn)入shell界面
  • docker start -i mycentos3會(huì)進(jìn)入容器的shell界面
  • docker attach mycentos3會(huì)進(jìn)入容器的shell界面
  • docker exec -it mycentos3 /bin/bash可以進(jìn)入容器的shell界面奠宜,會(huì)創(chuàng)建一個(gè)新的進(jìn)程(即打開一個(gè)新的shell終端)
  • docker exec -it mycentos3不會(huì)進(jìn)入
啟動(dòng)已創(chuàng)建但未運(yùn)行的容器

docker start mycentos包颁,需要注意一個(gè)很讓人困惑的問題瞻想,mycentos從來沒有啟動(dòng)過后者進(jìn)入后臺(tái)進(jìn)程過,無法使用該命令啟動(dòng)娩嚼;但mycentos3已經(jīng)啟動(dòng)過但使用exit退出后(或者使用stop蘑险,kill命令殺死容器進(jìn)程),都是可以使用該命令正常啟動(dòng)的岳悟,很困惑的一個(gè)問題佃迄,待解。

從docker容器復(fù)制文件到linux系統(tǒng)

docker cp 容器名(容器ID):/tmp/yum.log(文件具體路徑) /home/flynngod(目的路徑)

從宿主機(jī)復(fù)制文件到docker容器

docker cp cp.txt(系統(tǒng)文件路徑) 容器名(容器ID):/tmp(容器文件路徑)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贵少,一起剝皮案震驚了整個(gè)濱河市呵俏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌春瞬,老刑警劉巖柴信,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異宽气,居然都是意外死亡随常,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門萄涯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绪氛,“玉大人,你說我怎么就攤上這事涝影≡娌欤” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵燃逻,是天一觀的道長序目。 經(jīng)常有香客問我,道長伯襟,這世上最難降的妖魔是什么猿涨? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮姆怪,結(jié)果婚禮上叛赚,老公的妹妹穿的比我還像新娘。我一直安慰自己稽揭,他們只是感情好俺附,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著溪掀,像睡著了一般事镣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上揪胃,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天蛮浑,我揣著相機(jī)與錄音唠叛,去河邊找鬼只嚣。 笑死沮稚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的册舞。 我是一名探鬼主播蕴掏,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼调鲸!你這毒婦竟也來了盛杰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤藐石,失蹤者是張志新(化名)和其女友劉穎即供,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體于微,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逗嫡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了株依。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驱证。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖恋腕,靈堂內(nèi)的尸體忽然破棺而出抹锄,到底是詐尸還是另有隱情,我是刑警寧澤荠藤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布伙单,位于F島的核電站,受9級(jí)特大地震影響哈肖,放射性物質(zhì)發(fā)生泄漏吻育。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一牡彻、第九天 我趴在偏房一處隱蔽的房頂上張望扫沼。 院中可真熱鬧,春花似錦庄吼、人聲如沸缎除。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽器罐。三九已至,卻和暖如春渐行,著一層夾襖步出監(jiān)牢的瞬間轰坊,已是汗流浹背铸董。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肴沫,地道東北人粟害。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像颤芬,于是被迫代替她去往敵國和親悲幅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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

  • docker常用命令詳解 - CSDN博客 本文只記錄docker命令在大部分情境下的使用站蝠,如果想了解每一個(gè)選項(xiàng)的...
    Meathill大魔王閱讀 810評(píng)論 1 2
  • Docker常用命令使用 docker ps列出容器使用語法:docker ps [options]options...
    StrongZhao閱讀 638評(píng)論 0 0
  • 本文只記錄docker命令在大部分情境下的使用汰具,如果想了解每一個(gè)選項(xiàng)的細(xì)節(jié),請(qǐng)參考官方文檔菱魔,這里只作為自己以后的備...
    Joncc閱讀 278評(píng)論 0 0
  • Docker — 云時(shí)代的程序分發(fā)方式 要說最近一年云計(jì)算業(yè)界有什么大事件留荔?Google Compute Engi...
    ahohoho閱讀 15,530評(píng)論 15 147
  • 沙盤小組中出現(xiàn)了這樣的頭像,那就把她了解清楚澜倦。 貝斯特女神聚蝶,即埃及貓神,象征著月亮的溫暖和女性魅力力量肥隆。她的膜拜最...
    花兒心理閱讀 2,208評(píng)論 0 0