亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 基礎常識 > 正文

Docker的Dockerfile腳本基本使用指南

2020-10-21 21:51:08
字體:
來源:轉載
供稿:網友

Dockerfile是由一系列命令和參數構成的腳本,這些命令應用于基礎鏡像并最終創建一個新的鏡像。它們簡化了從頭到尾的流程并極大的簡化了部署工作。Dockerfile從FROM命令開始,緊接著跟隨者各種方法,命令和參數。其產出為一個新的可以用于創建容器的鏡像。

Dockerfile 語法
在我們深入討論Dockerfile之前,讓我們快速過一下Dockerfile的語法和它們的意義。
什么是語法?
非常簡單,在編程中,語法意味著一個調用命令,輸入參數去讓應用執行程序的文法結構。這些語法被規則或明或暗的約束。程序員遵循語法規范以和計算機 交互。如果一段程序語法不正確,計算機將無法識別。Dockerfile使用簡單的,清楚的和干凈的語法結構,極為易于使用。這些語法可以自我釋義,支持注釋。

Dockerfile 語法示例
Dockerfile語法由兩部分構成,注釋和命令+參數
一個簡單的例子:

復制代碼
代碼如下:

# Print "Hello docker!"
RUN echo "Hello docker!"

Dockerfile 命令
Dockerfile有十幾條命令可用于構建鏡像,下文將簡略介紹這些命令。

FROM 命令

復制代碼
代碼如下:

FROM <image>



復制代碼
代碼如下:

FROM <image>:<tag>

這個設置基本的鏡像,為后續的命令使用,所以應該作為Dockerfile的第一條指令。
比如:

復制代碼
代碼如下:

FROM ubuntu

如果沒有指定 tag ,則默認tag是latest,如果都沒有則會報錯。

RUN 命令
RUN命令會在上面FROM指定的鏡像里執行任何命令,然后提交(commit)結果,提交的鏡像會在后面繼續用到。
兩種格式:

復制代碼
代碼如下:

RUN <command> (the command is run in a shell - `/bin/sh -c`)

或:

復制代碼
代碼如下:

RUN ["executable", "param1", "param2" ... ] (exec form)

RUN命令等價于:

復制代碼
代碼如下:

docker run image command
docker commit container_id


注釋
使用 # 作為注釋
如:

復制代碼
代碼如下:

# Memcached
#
# VERSION 1.0</p><p># use the ubuntu base image provided by dotCloud
FROM ubuntu</p><p># make sure the package repository is up to date
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
RUN apt-get update</p><p># install memcached
RUN apt-get install -y memcached

MAINTAINER 命令
MAINTAINER <name>
MAINTAINER命令用來指定維護者的姓名和聯系方式
如:

復制代碼
代碼如下:

MAINTAINER Guillaume J. Charmes, guillaume@dotcloud.com

ENTRYPOINT 命令
有兩種語法格式,一種就是上面的(shell方式):

復制代碼
代碼如下:

ENTRYPOINT cmd param1 param2 ...

第二種是 exec 格式:

復制代碼
代碼如下:

ENTRYPOINT ["cmd", "param1", "param2"...]

如:

復制代碼
代碼如下:

ENTRYPOINT ["echo", "Whale you be my container"]

ENTRYPOINT 命令設置在容器啟動時執行命令

復制代碼
代碼如下:

root@tankywoo-docker:~# cat Dockerfile
FROM ubuntu
ENTRYPOINT echo "Welcome!"</p><p>root@tankywoo-docker:~# docker run 62fda5e450d5
Welcome!

USER 命令
比如指定 memcached 的運行用戶,可以使用上面的 ENTRYPOINT 來實現:

復制代碼
代碼如下:

ENTRYPOINT ["memcached", "-u", "daemon"]

更好的方式是:

復制代碼
代碼如下:

ENTRYPOINT ["memcached"]
USER daemon

EXPOSE 命令
EXPOSE 命令可以設置一個端口在運行的鏡像中暴露在外

復制代碼
代碼如下:

EXPOSE <port> [<port>...]

比如memcached使用端口 11211,可以把這個端口暴露在外,這樣容器外可以看到這個端口并與其通信。

復制代碼
代碼如下:

EXPOSE 11211

一個完整的例子:

復制代碼
代碼如下:

# Memcached
#
# VERSION 2.2</p><p># use the ubuntu base image provided by dotCloud
FROM ubuntu</p><p>MAINTAINER Victor Coisne victor.coisne@dotcloud.com</p><p># make sure the package repository is up to date
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
RUN apt-get update</p><p># install memcached
RUN apt-get install -y memcached</p><p># Launch memcached when launching the container
ENTRYPOINT ["memcached"]</p><p># run memcached as the daemon user
USER daemon</p><p># expose memcached port
EXPOSE 11211

上面是官方例子,國內建議換成163或sohu的源,不然太慢了。

復制代碼
代碼如下:

root@tankywoo-docker:~# docker build -t tankywoo - < dck [38/480]
Uploading context 2.56 kB
Uploading context
Step 0 : FROM ubuntu
---> 99ec81b80c55
Step 1 : MAINTAINER Victor Coisne victor.coisne@dotcloud.com
---> Using cache
---> 2b58110877f6
Step 2 : RUN echo "deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse" > /etc/apt/sources.list
---> Running in f55a4a8bb069
---> d48c6a965398
Step 3 : RUN apt-get update
---> Running in da091a1dd6e7
Ign http://mirrors.163.com precise InRelease
Get:1 http://mirrors.163.com precise Release.gpg [198 B]</p><p>....</p><p>Processing triggers for libc-bin (2.19-0ubuntu6) ...
Processing triggers for ureadahead (0.100.0-16) ...
---> 2886671b5b86
Step 5 : ENTRYPOINT ["memcached"]
---> Running in e8aeeab92cb6
---> 7148293a4053
Step 6 : USER daemon
---> Running in 288766b19606
---> 235e7f630ffa
Step 7 : EXPOSE 11211
---> Running in c6f881b9d51f
---> 666c5d65f396
Successfully built 666c5d65f396
Removing intermediate container f55a4a8bb069
Removing intermediate container da091a1dd6e7
Removing intermediate container f23631d3d45a
Removing intermediate container e8aeeab92cb6
Removing intermediate container 288766b19606
Removing intermediate container c6f881b9d51f

ENV 命令
用于設置環境變量

復制代碼
代碼如下:

ENV <key> <value>

設置了后,后續的RUN命令都可以使用。
使用此dockerfile生成的image新建container,可以通過 docker inspect 看到這個環境變量:

復制代碼
代碼如下:

root@tankywoo-docker:~# docker inspect 49bfc7a9817f
...
"Env": [
"name=tanky",
"HOME=/",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
...

里面的name=tanky就是設置的。
也可以通過在docker run時設置或修改環境變量:

復制代碼
代碼如下:

docker run -i -t --env name="tanky" ubuntu:newtest /bin/bash


ADD 命令
從src復制文件到container的dest路徑:

復制代碼
代碼如下:

ADD <src> <dest>

<src> 是相對被構建的源目錄的相對路徑,可以是文件或目錄的路徑,也可以是一個遠程的文件url
<dest> 是container中的絕對路徑
VOLUME 命令

復制代碼
代碼如下:

VOLUME ["<mountpoint>"]

如:

復制代碼
代碼如下:

VOLUME ["/data"]

創建一個掛載點用于共享目錄


WORKDIR 命令

復制代碼
代碼如下:

WORKDIR /path/to/workdir

配置RUN, CMD, ENTRYPOINT 命令設置當前工作路徑
可以設置多次,如果是相對路徑,則相對前一個 WORKDIR 命令
比如:

復制代碼
代碼如下:

WORKDIR /a WORKDIR b WORKDIR c RUN pwd

其實是在 /a/b/c 下執行 pwd

CMD 命令
有三種格式:

復制代碼
代碼如下:

CMD ["executable","param1","param2"] (like an exec, preferred form)
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
CMD command param1 param2 (as a shell)

一個Dockerfile里只能有一個CMD,如果有多個,只有最后一個生效。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕在线看视频国产欧美在线看完整| 91黑丝高跟在线| 国语自产精品视频在线看抢先版图片| 亚洲精品在线视频| 福利微拍一区二区| 亚洲偷熟乱区亚洲香蕉av| 久久影院在线观看| 欧美第一黄色网| 亚洲成人久久电影| 欧美另类99xxxxx| 粉嫩老牛aⅴ一区二区三区| 欧美日韩国内自拍| 国产噜噜噜噜噜久久久久久久久| 亚洲精品www久久久久久广东| 国产成+人+综合+亚洲欧美丁香花| 日韩美女主播视频| 久久精品久久久久久国产 免费| 亚洲欧美日韩一区二区三区在线| 欧美日韩精品在线播放| 国产中文字幕日韩| 国产精品成人在线| 日韩国产在线播放| 欧美人与性动交a欧美精品| 亚洲一区二区自拍| 亚洲一区二区中文字幕| www国产亚洲精品久久网站| 欧美激情va永久在线播放| 亚洲伊人一本大道中文字幕| 亚洲成人免费在线视频| 国产精品国产三级国产aⅴ9色| 国产精品久久久久福利| 久久99精品视频一区97| 97视频色精品| 亚洲电影免费观看高清完整版在线观看| 中文在线不卡视频| 国产精品成人va在线观看| 中文字幕亚洲激情| 富二代精品短视频| 久久久久久亚洲精品中文字幕| 日韩中文字幕av| 精品人伦一区二区三区蜜桃免费| 亚洲精品www| 国产精品久久久久久av福利| 精品久久久久久久久中文字幕| 久久久97精品| 91精品国产成人www| 日韩av中文字幕在线免费观看| 亚洲精品国产欧美| 亚洲最大激情中文字幕| 欧美在线一级va免费观看| 久久噜噜噜精品国产亚洲综合| 中文字幕欧美精品日韩中文字幕| 成人免费观看49www在线观看| 久久综合久中文字幕青草| 国模极品一区二区三区| 成人国产精品久久久久久亚洲| 亚洲色图15p| 日韩精品久久久久久福利| 日韩在线高清视频| 91免费精品国偷自产在线| 亚洲四色影视在线观看| 一区二区日韩精品| 国产精品亚洲片夜色在线| 国产精品色悠悠| 欧美另类69精品久久久久9999| 亚洲国产精品大全| 精品国内产的精品视频在线观看| 亚洲永久免费观看| 亚洲黄色av网站| 日韩免费观看视频| 亚洲精品福利资源站| 欧美日韩国产一区二区三区| 日韩在线观看免费高清完整版| 中文字幕亚洲第一| 国产成人精品国内自产拍免费看| 欧美综合国产精品久久丁香| 国产精品观看在线亚洲人成网| 欧美视频在线观看免费网址| 成人动漫网站在线观看| 欧美另类暴力丝袜| 日韩激情视频在线播放| 久久久久久久久久久免费精品| 少妇高潮久久77777| 精品毛片网大全| 欧美在线国产精品| 久久久久久亚洲| 欧美精品一区在线播放| 精品久久久中文| 国产一区二区三区在线播放免费观看| 欧美日韩免费区域视频在线观看| 91禁外国网站| 国产精品丝袜一区二区三区| 亚洲成人三级在线| 日韩在线观看成人| 亚洲国产成人精品女人久久久| 国产玖玖精品视频| 国产精品久久久久久久久粉嫩av| 国产成人免费91av在线| 久久综合久中文字幕青草| 自拍偷拍免费精品| 国产精品成久久久久三级| 亚洲无亚洲人成网站77777| 黑人精品xxx一区一二区| 日韩视频免费在线观看| 国产精品久久久久久久av大片| 久久久久久国产免费| 欧美老女人性视频| 欧美精品一区三区| 欧美午夜激情在线| 97视频在线观看视频免费视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美激情小视频| 日韩精品欧美国产精品忘忧草| 91在线精品视频| 国产精品九九九| 成人夜晚看av| 中文字幕国产日韩| 岛国av一区二区在线在线观看| 久久亚洲国产精品成人av秋霞| 欧美老少配视频| 精品视频—区二区三区免费| 4438全国亚洲精品在线观看视频| 欧美日韩激情视频8区| 欧美日韩美女在线观看| 国产精品久久久久久久久久久久久久| 黑人精品xxx一区一二区| 国产视频福利一区| 丁香五六月婷婷久久激情| 亚洲国产精品国自产拍av秋霞| 欧美性黄网官网| 久久综合免费视频影院| 久久精品一偷一偷国产| 国产亚洲欧美一区| 国产精品视频成人| 亚洲在线www| 亚洲精品www久久久久久广东| 久久手机精品视频| 日韩av资源在线播放| 在线中文字幕日韩| 国产成人综合久久| 亚洲精品按摩视频| 亚洲爱爱爱爱爱| 国产91免费观看| 久久国产加勒比精品无码| 91精品久久久久久久久久久久久| 久久久999国产| 精品香蕉一区二区三区| 国产成人精品a视频一区www| 中文字幕日韩在线播放| 国产91亚洲精品| 国产精品第一页在线| 亚洲成人精品久久| 亚洲国产日韩欧美在线图片| 国产欧美一区二区三区久久人妖| 国产精品99久久久久久www| 欧美性生交大片免费| 免费av在线一区| 欧美国产日韩二区| 国产99久久精品一区二区| 日韩欧美在线视频免费观看| 久久久www成人免费精品| 日韩精品免费视频| 日韩欧美综合在线视频| 久久视频在线观看免费|