国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

docker指令學習記錄

bladefury / 3101人閱讀

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

前言

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

鏡像獲取
docker pull [options] [Docker Registry地址]<倉庫名>:<標簽>

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

Docker Registry地址默認為Docker Hub,一般格式為IP:端口號
倉庫名為兩段式 <用戶名>:<軟件名> 默認用戶名為library
標簽不填則默認為latest

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

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

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

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

commit會將容器的存儲層保存下來成為新的鏡像

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

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

盡量不要使用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í)行當前目錄下的Dockerfile并構(gòu)建鏡像,新的鏡像名為nginx:v3
docker build https://......   #直接從github構(gòu)建,會自動clone這個項目,切換到指定分支(默認為master),并進入指定目錄進行構(gòu)建

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

FROM

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

RUN

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

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

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

COPY 源路徑 目標路徑
COPY ["源路徑",...,"目標路徑"]

COPY hom* /mydir/
CMD

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

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

CMD ["nginx", "-g", "daemon off;"]
docker run -it ubuntu #直接進入bash,因為默認指令為/bin/bash
docker run -it ubuntu /etc/os-release #默認指令變成/etc/os-release
ENTRYPOINT

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

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

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

ENV KEY VALUE
ENV KEY1=VALUE2 KEY2=VALUE2
ARG

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

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

指定匿名卷,防止用戶忘記掛載,運行時用-v HOST_DIR/CONTAINER_DIR進行覆蓋

VOLUMN PATH
EXPOSE

聲明運行時容器提供的服務端口,運行時應用并不會因為這個聲明而打開這個端口。docker run -P時會對聲明的端口隨機映射

EXPOSE 端口一 端口二
WORKDIR

指定容器之后各層的工作目錄。因為本層的cd并不會順帶到下一層。

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ǔ)鏡像,被引用是才會真正執(zhí)行。可以提取出重復的部分,方便維護

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

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

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


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

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/27489.html

相關(guān)文章

  • 從零開始學習 Docker

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

    lily_wang 評論0 收藏0
  • awk在刪除鏡像過程中的用法及說明

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

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

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

    genefy 評論0 收藏0
  • Docker 快速上手指南

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

    derek_334892 評論0 收藏0
  • Fluented,Kubernetes和谷歌云平臺——處理日志流的解決方案

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

    ymyang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<