2贴汪、docker命令篇

一播赁、鏡像

1、獲取鏡像

?????? #docker pull NAME[:TAG] 默認會選擇latest標簽薪铜,及下載倉庫中最新版本的鏡像众弓。

?????? #docker pull ubuntu:14.04

2、查看鏡像信息

?????? #docker images 顯示的詳細字段如下:

?????? ?????? 來自于哪個倉庫隔箍,如ubunt倉庫谓娃;鏡像的標簽信息;鏡像的ID號(唯一)鞍恢;創(chuàng)建時間傻粘;鏡像大小

?????? ?????? 備注:可能出現(xiàn)兩個鏡像ID一致的情況每窖,其實指向了同一個鏡像文件帮掉,其tag號不一樣而已。

?????? #docker inspect [鏡像ID|容器ID]????? 查看鏡像或容器的詳細信息窒典,返回信息為JSON格式

?????? #docker inspect 容器ID |grep IP?????? 查看的Nerword信息

3蟆炊、搜索鏡像

?????? #docker search NAME

?????? ?????? -s=n 指定僅顯示評價微指定星級以上的鏡像

4、刪除鏡像

?????? #docker rmi NAME name可以為標簽或ID

?????? ?????? -f 強行刪除鏡像

5瀑志、創(chuàng)建鏡像

?????? #docker commit 備注信息 容器ID 創(chuàng)建鏡像名稱

?????? ?????? 備注信息:-a 作者信息 -m 提交信息 -p 提交時暫停容器運行

?????? ?????? 如:docker commit -m "abc" -a "my" bb62268edad2 nginx_save

6涩搓、存儲鏡像

?????? #docker save -o 保存名稱.tar 鏡像名稱:tag 保存在當(dāng)前目錄下

7、載入鏡像

?????? #docker load < 保存名稱.tar


二劈猪、容器

1昧甘、創(chuàng)建容器:docker create ... 新建并啟動:docker run ...

?????? -i 交互式操作 -t 終端。

?????? --rm 這個參數(shù)是說容器退出后隨之將其刪除战得〕浔撸可以避免浪費空間。

?????? -d后臺運行容器常侦,并返回容器ID浇冰;

?????? run來創(chuàng)建啟動容器時,運行標準操作如下

?????? ????? 1聋亡、創(chuàng)建本地是否存在指定鏡像肘习,不存在則從公有倉庫下載

?????? ????? 2、利用鏡像創(chuàng)建并啟動一個容器

?????? ????? 3坡倔、分配一個文件系統(tǒng)漂佩,并在只讀的鏡像層外面掛載一層可讀寫層

?????? ????? 4脖含、從宿主主機配置的王巧接口中橋接一個虛擬接口道容器中去

?????? ????? 5、從地址池配置一個IP地址給容器

?????? ????? 6仅仆、執(zhí)行用戶指定的應(yīng)用程序

?????? ????? 7器赞、執(zhí)行完畢后容器被終止

2、終止容器

?????? #docker stop NAME|ID

3墓拜、進入容器

?????? #docker exec -ti 容器ID /bin/bash

4港柜、刪除容器

?????? #docker rm 容器ID

?????? ?????? -f??? 強行終止并刪除一個運行中的容器

?????? ?????? -l??? 刪除容器的鏈接,但保留容器

?????? ?????? -v?? 刪除容器掛載的數(shù)據(jù)卷

????????? #docker? rm? $(docker ps -q -a)??? 刪除所有未開啟的容器

5咳榜、導(dǎo)出容器

?????? #docker export 容器ID > 保存路徑/test.save.tar

6夏醉、導(dǎo)入容器

?????? #cat test.save.tar | docker import - 鏡像名稱:tag 將導(dǎo)出的容器還原為鏡像


三、私有倉庫管理:

?????? 1涌韩、docker pull registry 獲取官方私有倉庫環(huán)境

?????? 2畔柔、docker run -d -p 5000:5000 registry 創(chuàng)建容器并映射本地5000端口

?????? ????? 或docker run -d -p 5000:5000 -v /本地理解:/tmp/registry registry

?????? 3、docker tag unbuntu:14:04 192.168.12.235:5000/test 修改鏡像tag

?????? 4臣樱、docker push 192.168.12.235:5000/test 上傳鏡像

?????? ????? 如有報錯請參考如下:http://ylw6006.blog.51cto.com/470441/1597873/http://blog.csdn.net/wangtaoking1/article/details/44180901/

?????? 5靶擦、docker pull 192.168.12.235:5000/test 客戶端下載


四、數(shù)據(jù)管理(-v與--volunmes-from 可以多次使用)

?????? #run -v 主機路徑:容器路徑 ubuntu /bin/bash 掛載一個主機目錄作為數(shù)據(jù)卷

?????? 數(shù)據(jù)卷容器

?????? ?????? #docker run -it -v /dbdata --name dbdata ubuntu

?????? ?????? #docker run -it --volumes-from dbdata(容器名稱) --name db1 ubuntu

?????? ?????? #docker run -it --volumes-from dbdata(容器名稱) --name db2 ubuntu

?????? ?????? 此時dbdata雇毫、db1玄捕、db2共用dbdata目錄

?????? 數(shù)據(jù)卷容器遷移:備份



五、網(wǎng)絡(luò)基礎(chǔ)配置(-p可以多次使用)

????? ??????-P 隨機從主機一個49000~49900端口映射至容器中某個開放的網(wǎng)絡(luò)端口棚放。

????? ??????-p 8080:80 宿主機的8080端口映射到容器中的80端口

????? ??????-p ip:8080:80 映射到指定地址的指定端口

????? ??????-p ip::80/udp 映射到指定地址的任意端口枚粘,并且指定端口為udp


????? ??????查看容器端口映射信息

????? ????? #docker port 容器ID


六、容器互聯(lián)(容器名稱是唯一的)

????? ????? 1飘蚯、docker run -d --name db training/postgres 創(chuàng)建db容器

????? ????? 2馍迄、docker run -d -P --name web --link db:db training/webapp python app.py

????? ????? --link name:alias (name要鏈接的容器名稱,alias鏈接后的別名)


??????????? Docker 通過 2 種方式為容器公開連接信息:

環(huán)境變量

更新 /etc/hosts 文件



----------------------------------------------------------------------------------------------------------------------------

以下命令針對于Dockerfile:

COPY-------復(fù)制文件

COPY <源路徑>... <目標路徑>

COPY ["<源路徑1>",... "<目標路徑>"]

COPY 指令將從構(gòu)建上下文目錄中 <源路徑> 的文件/目錄復(fù)制到新的一層的鏡像內(nèi)的 <目標路徑> 位置局骤。比如:#COPY package.json /usr/src/app/

支持統(tǒng)配符號攀圈,如:#COPY hom* /mydir/

源文件的各種元數(shù)據(jù)都會保留。文件權(quán)限峦甩、文件變更時間等

----------------------------------------------------------------------------------------------------------------------------

ADD-------更高級的復(fù)制文件(在COPY基礎(chǔ)上增加了一些功能)

使用場景較少赘来、COPY一般已滿足使用。

僅在需要自動解壓縮的場合使用 ADD穴店,如:#ADD ubuntu-amd64- root.tar.gz

----------------------------------------------------------------------------------------------------------------------------

CMD-------容器啟動

shell 格式:CMD <命令>

exec 格式:CMD ["可執(zhí)行文件", "參數(shù)1", "參數(shù)2"...]

參數(shù)列表格式:CMD ["參數(shù)1", "參數(shù)2"...]撕捍。在指定了 ENTRYPOINT 指令后,用 CMD 指定具體的參數(shù)泣洞。

如果使用shell格式的話忧风,實際的命令會被包裝為sh -c的參數(shù)形式進行執(zhí)行,如:CMD echo $HOME球凰;實際表達為:CMD [ "sh", "-c", "echo $HOME" ]

正確的做法是直接執(zhí)行Nginx 可執(zhí)行文件狮腿,并且要求以前臺形式允許腿宰,如:CMD ["nginx", "-g", "daemon off;"]

----------------------------------------------------------------------------------------------------------------------------

ENTRYPOINT--入口點

ENTRYPOINT 的目的和 CMD 一樣,都是在指定容器啟動程序及參數(shù)缘厢。

----------------------------------------------------------------------------------------------------------------------------

ENV ---------設(shè)置環(huán)境變量

ENV

ENV = =...

使用方式如:ENV VERSION=1.0 DEBUG=on \

或:ENV NODE_VERSION 7.2.0

----------------------------------------------------------------------------------------------------------------------------

ARG-------構(gòu)建參數(shù)

構(gòu)建參數(shù)和 ENV 的效果一樣吃度,都是設(shè)置環(huán)境變量。所不同的是贴硫,ARG 所設(shè)置的構(gòu)建環(huán)境的環(huán)境變量椿每,在將來容器運行時是不會存在這些環(huán)境變量的。

VOLUME---定義匿名卷

VOLUME ["<路徑1>", "<路徑2>"...]

VOLUME <路徑>

使用方法:#VOLUME /data 指定匿名卷后英遭,在運行時如果用戶不指定掛載间护,其應(yīng)用也可以正常運行,不會向容器存儲層寫入大量數(shù)據(jù)挖诸。

運行時替換匿名卷的掛載地址#docker run -d -v mydata:/data xxxx 從/data替換為/mydata

----------------------------------------------------------------------------------------------------------------------------

EXPOSE----聲明端口

????????? 格式為 EXPOSE <端口1> [<端口2>...]汁尺。

????????? EXPOSE 指令是聲明運行時容器提供服務(wù)端口,這只是一個聲明多律,在運行時并不會因為這個聲明應(yīng)用就會開啟這個端口的服務(wù)痴突。

????????? 好處1:幫助鏡像使用者理解這個鏡像服務(wù)的守護端口,以方便配置映射狼荞;

????????? 好處2:在運行時使用隨機端口映射時辽装,也就是 docker run -P 時,會自動隨機映射 EXPOSE 的端口粘秆。

----------------------------------------------------------------------------------------------------------------------------

WORKDIR----指定工作目錄

????????? 格式為 WORKDIR <工作目錄路徑>

????????? 使用 WORKDIR 指令可以來指定工作目錄(或者稱為當(dāng)前目錄)如迟,以后各層的當(dāng)前目錄就被改為指定的目錄收毫,如該目錄不存在攻走,WORKDIR 會幫你建立目錄。

????????? 錯誤使用如:RUN cd /app

????????? ???????? ???????? ???????? RUN echo "hello" > world.txt(第二層執(zhí)行是并非在/app目錄下)

????????? 正確使用如:WORKDIR /app

????????? ???????? ???????? ???????? RUN echo "hello" > world.txt

----------------------------------------------------------------------------------------------------------------------------

USER--------指定當(dāng)前用戶

????????? 格式:USER <用戶名>

????????? USER 指令和 WORKDIR 相似此再,都是改變環(huán)境狀態(tài)并影響以后的層昔搂。WORKDIR 是改變工作目錄,USER 則是改變之后層的執(zhí)行 RUN, CMD 以及 ???????? ENTRYPOINT 這類命令的身份输拇。

????????? 用戶必須是事先建立好的摘符,否則無法切換。使用如下:

????????? RUN groupadd -r redis && useradd -r -g redis redis

????????? USER redis

????????? RUN [ "redis-server" ]

----------------------------------------------------------------------------------------------------------------------------

HEALTHCHECK----健康檢查

HEALTHCHECK [選項] CMD <命令>:設(shè)置檢查容器健康狀況的命令

HEALTHCHECK NONE:如果基礎(chǔ)鏡像有健康檢查指令策吠,使用這行可以屏蔽掉其健康檢查指令

--interval=<間隔>:兩次健康檢查的間隔逛裤,默認為 30 秒;

--timeout=<時長>:健康檢查命令運行超時時間猴抹,如果超過這個時間带族,本次健康檢查就被視為失敗,默認 30 秒蟀给;

--retries=<次數(shù)>:當(dāng)連續(xù)失敗指定次數(shù)后蝙砌,則將容器狀態(tài)視為 unhealthy阳堕,默認 3 次。

#docker ps 可查看狀態(tài)health/unhealthy

----------------------------------------------------------------------------------------------------------------------------

ONBUILD-----為他人做嫁衣裳

????????? 格式:ONBUILD <其它指令>

????????? ONBUILD 是一個特殊的指令择克,它后面跟的是其它指令恬总,比如 RUN, COPY 等,而這些指令肚邢,在當(dāng)前鏡像構(gòu)建時并不會被執(zhí)行壹堰。只有當(dāng)以當(dāng)前鏡像為基礎(chǔ)鏡像,去構(gòu)建下一級鏡像的時候才會被執(zhí)行骡湖。

????????? FROM node:slim

????????? RUN "mkdir /app"

????????? WORKDIR /app

????????? ONBUILD COPY ./package.json /app

????????? ONBUILD? RUN [ "npm", "install" ]

????????? ONBUILD? COPY . /app/

????????? CMD [ "npm", "start" ]


????????? FROM my-node

????????? 在各個項目目錄中缀旁,用這個只有一行的 Dockerfile 構(gòu)建鏡像時,之前基礎(chǔ)鏡像的那三行 ONBUILD 就會開始執(zhí)行勺鸦,成功的將當(dāng)前項目的代碼復(fù)制進鏡像并巍、并且針對本項目執(zhí)行 npm install,生成應(yīng)用鏡像换途。

----------------------------------------------------------------------------------------------------------------------------

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末懊渡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子军拟,更是在濱河造成了極大的恐慌剃执,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件懈息,死亡現(xiàn)場離奇詭異肾档,居然都是意外死亡,警方通過查閱死者的電腦和手機辫继,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門怒见,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姑宽,你說我怎么就攤上這事遣耍。” “怎么了炮车?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵舵变,是天一觀的道長。 經(jīng)常有香客問我瘦穆,道長纪隙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任扛或,我火速辦了婚禮绵咱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘告喊。我一直安慰自己麸拄,他們只是感情好派昧,可當(dāng)我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拢切,像睡著了一般蒂萎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上淮椰,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天五慈,我揣著相機與錄音,去河邊找鬼主穗。 笑死泻拦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的忽媒。 我是一名探鬼主播争拐,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼晦雨!你這毒婦竟也來了架曹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤闹瞧,失蹤者是張志新(化名)和其女友劉穎绑雄,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奥邮,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡万牺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了洽腺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脚粟。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖已脓,靈堂內(nèi)的尸體忽然破棺而出珊楼,到底是詐尸還是另有隱情通殃,我是刑警寧澤度液,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站画舌,受9級特大地震影響堕担,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜曲聂,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一霹购、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧朋腋,春花似錦齐疙、人聲如沸膜楷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赌厅。三九已至,卻和暖如春轿塔,著一層夾襖步出監(jiān)牢的瞬間特愿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工勾缭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留揍障,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓俩由,卻偏偏與公主長得像毒嫡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子幻梯,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,728評論 2 351

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

  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一审胚、Docker 簡介 Docke...
    極客圈閱讀 10,481評論 0 120
  • 0. 前言 docker是什么?docker是用GO語言開發(fā)的應(yīng)用容器引擎礼旅,基于容器化膳叨,沙箱機制的應(yīng)用部署技術(shù)《幌担可...
    sessionboy閱讀 3,846評論 2 49
  • 五菲嘴、Docker 端口映射 無論如何,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機是訪問不到的汰翠。此外龄坪,除了...
    R_X閱讀 1,740評論 0 7
  • docker基本概念 1. Image Definition 鏡像 Image 就是一堆只讀層 read-only...
    慢清塵閱讀 8,732評論 1 21
  • 一、競爭之下复唤,同工不同酬現(xiàn)象趨于消失 1健田、如果存在一個同工不同酬的情況 例如:一男一女兩個打字員,打字速度和錯誤率...
    爺有蔓草閱讀 1,536評論 0 1