成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

docker指令學(xué)習(xí)記錄

bladefury / 3107人閱讀

摘要:當(dāng)在中需要引用相對(duì)路徑時(shí),就是以該上下文作為當(dāng)前指令執(zhí)行的目錄。指令會(huì)新建一層并在其上執(zhí)行指令,指令完成之后再該鏡像。所以指令中的內(nèi)容應(yīng)當(dāng)盡可能合并,并且記得清除冗余的內(nèi)容如緩存等。從而實(shí)現(xiàn)我們?cè)阽R像時(shí)可以根據(jù)配置修改啟動(dòng)指令的參數(shù)。

前言

本文為學(xué)習(xí)整理和參考文章,不具有教程的功能。其次,后面將會(huì)陸續(xù)更新各種應(yīng)用的容器化部署的實(shí)踐,如MySQL容器化,Jenkins容器化,以供讀者參考。

鏡像獲取
docker pull [options] [Docker Registry地址]<倉(cāng)庫(kù)名>:<標(biāo)簽>

-a, --all-tags: 下載該鏡像的所有版本

Docker Registry地址默認(rèn)為Docker Hub,一般格式為IP:端口號(hào)
倉(cāng)庫(kù)名為兩段式 <用戶(hù)名>:<軟件名> 默認(rèn)用戶(hù)名為library
標(biāo)簽不填則默認(rèn)為latest

列出鏡像
docker images [options] [Repository[:tag]]
默認(rèn)情況會(huì)展示所有最終鏡像,如果加上了鏡像名,則會(huì)展示該鏡像的所有信息
-a, --all: 展示所有鏡像,包括中間層
-f, --filter filter: 根據(jù)某種條件對(duì)鏡像進(jìn)行篩選
--format string: 使用go的模板語(yǔ)法
-q, --quiet: 只返回鏡像的ID

docker images -f since=mongo:3.2  #查看mongo3.2版本之后建立的鏡像,如果是要在之前,則使用before
docker images --format "{{.ID}}:{{.Repository}}" #輸出結(jié)構(gòu)為ID:Repository
虛懸鏡像

虛懸鏡像是指既沒(méi)有倉(cāng)庫(kù)名,也沒(méi)有標(biāo)簽的鏡像。這種鏡像的產(chǎn)生常常由于當(dāng)前的倉(cāng)庫(kù)名和標(biāo)簽被更新版本占用,導(dǎo)致當(dāng)前境像失效。

docker images -f danling=true #列出所有虛懸鏡像
docker rmi $(docker images -q -f dangling=true) #利用復(fù)合指令刪除虛懸鏡像
commit鏡像

commit會(huì)將容器的存儲(chǔ)層保存下來(lái)成為新的鏡像

docker commit [options] <容器ID或容器名> [<倉(cāng)庫(kù)名>[:<標(biāo)簽>]]
-a, --author string: 容器所有者
-c, --change list: 在容器上執(zhí)行Dockerfile指令
-m, --message string: 提交信息
-p, --pause: 提交過(guò)程中停止容器的運(yùn)行,默認(rèn)為true

docker history IMAGE #顯示鏡像的歷史記錄
docker diff CONTAINER #查看容器的改動(dòng)

盡量不要使用commit指令構(gòu)建鏡像

Dockerfile 構(gòu)建鏡像

利用Dockerfile構(gòu)建鏡像。

docker build [options] PATH | URL | -
-f, --file string: Dockerfile的路徑
--rm: 成功構(gòu)建后刪除中間鏡像
-t, --tag: 以name:tag的形式為鏡像命名
docker build -t nginx:v3 . #執(zhí)行當(dāng)前目錄下的Dockerfile并構(gòu)建鏡像,新的鏡像名為nginx:v3
docker build https://......   #直接從github構(gòu)建,會(huì)自動(dòng)clone這個(gè)項(xiàng)目,切換到指定分支(默認(rèn)為master),并進(jìn)入指定目錄進(jìn)行構(gòu)建

最后的路徑是指鏡像構(gòu)建的上下文,docker在build的時(shí)候會(huì)把該上下文中的而所有內(nèi)容全部打包上傳給docker引擎。當(dāng)在Dockerfile中需要引用相對(duì)路徑時(shí),就是以該上下文作為當(dāng)前指令執(zhí)行的目錄。可以編寫(xiě).dockerignore文件來(lái)剔除無(wú)需打包的文件。
在默認(rèn)情況下,如果不指定Dockerfile的位置,就會(huì)從構(gòu)建的上下文尋找Dockerfile來(lái)執(zhí)行

FROM

指定基礎(chǔ)鏡像,Dockerfile的第一行必須制定基礎(chǔ)鏡像

RUN

執(zhí)行命令。RUN指令會(huì)新建一層并在其上執(zhí)行指令,指令完成之后再commit該鏡像。所以RUN指令中的內(nèi)容應(yīng)當(dāng)盡可能合并,并且記得清除冗余的內(nèi)容如緩存等。

RUN <指令>
RUN ["可執(zhí)行文件", "參數(shù)1", "參數(shù)2"]
RUN mkdir newDir 
   && touch newFile
COPY

將構(gòu)建上下文中源路徑中的內(nèi)容復(fù)制到目標(biāo)路徑之下。可以使用通配符。如果目標(biāo)目錄不存在,容器會(huì)幫助創(chuàng)建。復(fù)制過(guò)程不改變文件屬性。

COPY 源路徑 目標(biāo)路徑
COPY ["源路徑",...,"目標(biāo)路徑"]

COPY hom* /mydir/
CMD

默認(rèn)的容器的主進(jìn)程的啟動(dòng)命令,在運(yùn)行時(shí)可以指定新的命令來(lái)替代鏡像設(shè)置中的默認(rèn)命令。比如ubuntu的默認(rèn)指令是/bin/bash。如果使用第一種形式,則會(huì)以sh -c的形式執(zhí)行,這樣就能夠得到環(huán)境變量。容器中的應(yīng)用都應(yīng)該前臺(tái)執(zhí)行。

CMD <命令>
CMD ["可執(zhí)行文件", "參數(shù)一", "參數(shù)二", ...]
CMD ["參數(shù)一", "參數(shù)二"...]

CMD ["nginx", "-g", "daemon off;"]
docker run -it ubuntu #直接進(jìn)入bash,因?yàn)槟J(rèn)指令為/bin/bash
docker run -it ubuntu /etc/os-release #默認(rèn)指令變成/etc/os-release
ENTRYPOINT

指定容器啟動(dòng)程序及參數(shù),當(dāng)指定了ENTRYPOINT之后,CMD的含義就變成了ENTRYPOINT的參數(shù)。從而實(shí)現(xiàn)我們?cè)赽uild鏡像時(shí)可以根據(jù)配置修改啟動(dòng)指令的參數(shù)。在docker run運(yùn)行時(shí)可以用--entrypoint覆蓋

ENTRYPOINT "CMD"
ENTRYPOINT ["可執(zhí)行文件", "參數(shù)一", "參數(shù)二"...]
ENV

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

ENV KEY VALUE
ENV KEY1=VALUE2 KEY2=VALUE2
ARG

同ENV,設(shè)置環(huán)境變量并為其提供默認(rèn)值,不同的是在容器運(yùn)行時(shí),這些值將不存在。在運(yùn)行時(shí)可以用--build-arg <參數(shù)名>:<值>覆蓋

ARG <參數(shù)名>[=默認(rèn)值]
VOLUMN

指定匿名卷,防止用戶(hù)忘記掛載,運(yùn)行時(shí)用-v HOST_DIR/CONTAINER_DIR進(jìn)行覆蓋

VOLUMN PATH
EXPOSE

聲明運(yùn)行時(shí)容器提供的服務(wù)端口,運(yùn)行時(shí)應(yīng)用并不會(huì)因?yàn)檫@個(gè)聲明而打開(kāi)這個(gè)端口。docker run -P時(shí)會(huì)對(duì)聲明的端口隨機(jī)映射

EXPOSE 端口一 端口二
WORKDIR

指定容器之后各層的工作目錄。因?yàn)楸緦拥腸d并不會(huì)順帶到下一層。

WORKDIR PATH
USER

改變之后層執(zhí)行RUN,ENTRYPOINT等指令的身份

RUN groupadd -r redis && useradd -r -g redis redis
USER redis
RUN ["redis-server"]
ONBUILD
ONBUILD 其它指令

用于構(gòu)建基礎(chǔ)鏡像,被引用是才會(huì)真正執(zhí)行??梢蕴崛〕鲋貜?fù)的部分,方便維護(hù)

刪除
docker rmi [options]  [....] #刪除鏡像
docker rm [options]  [...] #刪除容器
進(jìn)入容器
docker attach CONTAINER_NAME
查看數(shù)據(jù)卷信息
docker inspect CONTAINER_NAME

匿名的數(shù)據(jù)卷默認(rèn)位于/var/lib/docker/volumes之下

查看容器
docker logs [-f] container
查看端口映射配置
docker port container container_port
容器鏈接
--link container_name:alias


想要了解更多開(kāi)發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾號(hào)!將會(huì)不定期的發(fā)放福利哦~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27489.html

相關(guān)文章

  • 從零開(kāi)始學(xué)習(xí) Docker

    摘要:此命令下載測(cè)試鏡像并在容器中運(yùn)行它。國(guó)內(nèi)很多云服務(wù)商都提供了加速器服務(wù),例如阿里云加速器注冊(cè)用戶(hù)并且申請(qǐng)加速器,會(huì)獲得如這樣的地址。獲取鏡像阿里云鏡像庫(kù)上有大量的高質(zhì)量的鏡像可以用,這里我們就說(shuō)一下怎么獲取這些鏡像并運(yùn)行。 showImg(https://segmentfault.com/img/remote/1460000012924583); 這篇文章是我學(xué)習(xí) Docker 的記錄...

    lily_wang 評(píng)論0 收藏0
  • awk在刪除鏡像過(guò)程中的用法及說(shuō)明

    摘要:實(shí)際上,認(rèn)為文本文件都是結(jié)構(gòu)化的,它將每一個(gè)輸入行定義為一個(gè)記錄,行中的每個(gè)字符串定義為一個(gè)域段,域和域之間使用分割符分割。 看到一篇Docker 技巧:刪除 Docker 容器和鏡像其中提到刪除標(biāo)簽為none的鏡像的方法,其中用到了awk,就去查了下,下面舉例說(shuō)明: docker rmi $(docker images | awk $1 == && $2 == {print $3...

    lentoo 評(píng)論0 收藏0
  • 如何用Dockerfile構(gòu)建鏡像

    摘要:用于配置當(dāng)前所創(chuàng)建的鏡像作為其它新創(chuàng)建鏡像的基礎(chǔ)鏡像時(shí),所執(zhí)行的操作指令。運(yùn)行構(gòu)建命令構(gòu)建命令用于使用創(chuàng)建鏡像。 本文旨在用通俗的語(yǔ)言講述枯燥的知識(shí) 前面講到鏡像的構(gòu)建時(shí),講述的是用commit的方式構(gòu)建鏡像,而Dockerfile是另一種構(gòu)建鏡像的方式。 Dockerfile構(gòu)建鏡像是以基礎(chǔ)鏡像為基礎(chǔ)的,Dockerfile是一個(gè)文本文件,內(nèi)容是用戶(hù)編寫(xiě)的一些docker指令,每一條...

    genefy 評(píng)論0 收藏0
  • Docker 快速上手指南

    摘要:型網(wǎng)絡(luò)這是容器的默認(rèn)網(wǎng)絡(luò)類(lèi)型,網(wǎng)橋模式意味著容器間可以互相通信,而對(duì)外的通信需要借助宿主機(jī),這一形式通常表現(xiàn)為端口號(hào)的映射。 以下記錄 Docker 中的常用操作、指令,使得大家能夠快速地使用 Docker。 為什使用 Docker? 為什么要使用 Docker?就個(gè)人而言,Docker 能提供的最大便利在于這種技術(shù)面對(duì)程序環(huán)境遷移時(shí)所表現(xiàn)的卓越性。 這種性能使得我們不必在分享代碼或項(xiàng)...

    derek_334892 評(píng)論0 收藏0
  • Fluented,Kubernetes和谷歌云平臺(tái)——處理日志流的解決方案

    摘要:最后,我們用和適當(dāng)?shù)莫?dú)特后綴來(lái)標(biāo)注數(shù)據(jù)流。將數(shù)據(jù)流分離到兩個(gè)不同的目的地在這里,我們解析自動(dòng)定量日志,管理我們的緩沖區(qū),查詢(xún)和區(qū)塊大小。 也許你對(duì)Fluentd的統(tǒng)一日志記錄層已經(jīng)有所耳聞。可能你對(duì)日志是流不是文件這個(gè)概念也已經(jīng)很熟悉,所以現(xiàn)在就讓我們用這個(gè)方法來(lái)思考日志層。事實(shí)上,最后導(dǎo)致決定性的一點(diǎn)就是fluentd是如何被配置的。全部都是關(guān)于我們?nèi)绾翁幚韘tream的不同元素的:...

    ymyang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<