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

首頁 > 服務器 > Web服務器 > 正文

DOCKERFILE學習及使用注意事項

2024-09-01 13:50:46
字體:
來源:轉載
供稿:網友

準則

  1. 盡量將Dockerfile放在空目錄中,如果目錄中必須有其他文件,則使用.dockerignore文件。
  2. 避免安裝不必須的包。
  3. 每個容器應該只關注一個功能點。
  4. 最小化鏡像的層數。
  5. 多行參數時應該分類。這樣更清晰直白,便于閱讀和review,另外,在每個換行符/前都增加一個空格。
  6. 對構建緩存要有清楚的認識。

指令注意事項

FROM

    Dockerfile reference for the FROM instruction

  任何時候,盡量使用官方鏡像源作為你鏡像的基礎鏡像。我們建議使用Debian Image,因為其被很好地管理著,并且作為一個完整的發布包,但體積卻保持著最小化(當前不足150MB)。

  1. FROM必須是除了注釋以外的第一行;
  2. 可以有多個FROM語句,來創建多個image;

LABEL
  Dockerfile reference for the LABEL instruction

RUN
  Dockerfile reference for the RUN instruction

  RUN語句有兩種格式:

1. RUN (the command is run in a shell - /bin/sh -c - shell form)
2. RUN ["executable", "param1", "param2"] (exec form)

apt-get

  盡量避免使用RUN apt-get upgrade或者dist-upgrade,因為基礎鏡像的很多核心包不會再未授權的容器中升級。
  要結合RUN apt-get update和apt-get install在同一個RUN語句下一起使用。如:

  RUN apt-get update && apt-get install -y /    package-bar /    package-baz /    package-foo

  如果將update和install分開使用,執行多個Dockerfile時,會引起緩存問題,導致后面執行的install語句會失敗。
  另外,執行完apt-get語句后,最后最好加上刪除安裝包的語句,以減小鏡像的體積。如:

RUN apt-get update && apt-get install -y /  aufs-tools /  automake /  build-essential / && rm -rf /var/lib/apt/lists/*

  注意:官方的Debian和Ubuntu鏡像會自動執行“RUN apt-get clean”,所以不需要明確地刪除指令。

管道使用

  很多RUN命令都需要使用到管道,如:

RUN wget -O - https://some.site | wc -l > /number

  Docker使用/bin/sh -c解釋器來執行這些命令,該解釋器只評估管道最后一個操作的返回值來判斷整個命令是否成功。在上面的例子中,只要wc -l命令成功了,即使wget命令失敗了,也會創建一個新鏡像。為了避免上述情況,可以在語句首部加上set -o pipefail &&。比如:

RUN set -o pipefail && wget -O - https://some.site | wc -l > /number

  注意:并非所有的shell都支持-o pipefail選項,比如說基于Debian的鏡像下的模式shell:dash shell。這種情況下,我們可以使用exec格式的RUN命令來顯示地選擇shell來支持pipefail選項。如:

RUN ["/bin/bash", "-c", "set -o pipefail && wget -O - https://some.site | wc -l > /number"]

CMD

  Dockerfile reference for the CMD instruction

  CMD語句與RUN不同,RUN是在build鏡像的時候運行,而CMD語句是在build結束后運行。一個Dockerfile鐘可以有多個RUN語句,雖然也可以有多個CMD語句,但是卻只有最后一條CMD語句會執行。CMD語句格式為:

CMD [“executable”, “param1”, “param2”…]

EXPOSE

  Dockerfile reference for the EXPOSE instruction

  EXPOSE指令指明容器會監聽鏈接的端口。因此,最好使用常用的、傳統的應用端口。比如,Apache web服務器使用EXPOSE 80等。
  為了給外部鏈接使用,你需要使用docker run命令來制定容器端口和host端口的映射。

ENV

  Dockerfile reference for the ENV instruction
  用于設置環境變量,設置后,后面的RUM指令就可以使用之前的環境變量了。同時,還可以通過docker run --env key=value,在容器啟動時設置環境變量。如:

ENV PG_MAJOR 9.3ENV PG_VERSION 9.3.4RUN curl -SL http://example.com/postgres-$PG_VERSION.tar.xz | tar -xJC /usr/src/postgress && …ENV PATH /usr/local/postgres-$PG_MAJOR/bin:$PATH

ADD和COPY

Dockerfile reference for the ADD instruction
Dockerfile reference for the COPY instruction

  雖然ADD和COPY功能相似,但一般來講,更建議使用COPY。因為COPY比ADD更透明,COPY只支持從本地文件到容器的拷貝,但是ADD還有一些其他不明顯的特性(比如本地tar包解壓縮和遠程URL支持)。因此,ADD的最優用處是本地tar包自動解壓縮到鏡像中。如:ADD rootfs.tar.xz /。

  如果有多個Dockerfile步驟用于處理不同的文件,建議分開COPY它們,而不是一次性拷貝。這可以保證每個步驟的build緩存只在對應的文件改變時才無效。比如:

COPY requirements.txt /tmp/RUN pip install --requirement /tmp/requirements.txtCOPY . /tmp/

  鏡像的大小很重要,因此不鼓勵使用ADD從遠端URL獲取包;可以使用curl或者wget來代替。這種方式你可以刪除不再需要的文件,如解壓縮后的tar包,從而不需要再添加額外的layer到鏡像中。比如,你應該避免這樣使用:

ADD http://example.com/big.tar.xz /usr/src/things/RUN tar -xJf /usr/src/things/big.tar.xz -C /usr/src/thingsRUN make -C /usr/src/things all

  而應該如此:

RUN mkdir -p /usr/src/things /  && curl -SL http://example.com/big.tar.xz /  | tar -xJC /usr/src/things /  && make -C /usr/src/things all

  對于不需要使用ADD命令tar包自動解壓縮功能的文件和目錄,你應該總是使用COPY。

ENTRYPOINT

Dockerfile reference for the ENTRYPOINT instruction

  使用ENTRYPOINT來設置鏡像的主命令,就像這個鏡像運行時就是這條命令一樣(然后再使用CMD作為默認的flag)。
  我們使用s3cmd命令作為鏡像的主命令。

ENTRYPOINT ["s3cmd"]
CMD ["--help"]

VOLUME

Dockerfile reference for the VOLUME instruction

  VOLUME指令一般用于數據庫的存儲區域,配置存儲,或者docker容器創建的文件和目錄。

USER

Dockerfile reference for the USER instruction
  如果服務可以在不需要特權的情況下運行,那么就應該使用USER來切換用戶至非root用戶??梢杂肦UN命令創建用戶組和用戶如:

RUN groupadd -r postgres && useradd -r -g postgres postgres

  應該避免安裝和使用sudo,因為它有不可預知的TTY和信號轉移特性,會產生很多問題。如果的確一定要使用類似sudo的功能(如root下初始化daemon,非root下運行),可以使用“gosu”。

WORKDIR

Dockerfile reference for the WORKDIR instruction

  為了Dockerfile內容更加清晰和可靠,最好總是使用絕對路徑。同樣地,應該使用WORKDIR,而不是使用類似“cd … && do-something”這樣的指令,因為那樣會導致難以閱讀、查找錯誤和維護。

ONBUILD

Dockerfile reference for the ONBUILD instruction


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲无线码a| 国产精品第一页在线| 91久久久久久久一区二区| 日韩免费观看高清| 成人激情视频小说免费下载| 国产精品盗摄久久久| 欧美激情国产日韩精品一区18| 另类图片亚洲另类| 日韩精品视频在线观看网址| 日韩最新免费不卡| 国产欧美va欧美va香蕉在线| 国产女同一区二区| 98精品国产高清在线xxxx天堂| 欧美重口另类videos人妖| 成人网在线免费看| 亚洲网站视频福利| 自拍亚洲一区欧美另类| 国产精品视频自在线| 国产午夜精品全部视频在线播放| 国产999精品久久久影片官网| 国产精品一区二区三区成人| 久久电影一区二区| 国产精品视频大全| 91在线视频免费| 国产成人精品网站| 日韩美女主播视频| 国产亚洲一区二区在线| 日韩电影中文字幕在线观看| 欧美亚洲国产精品| 18久久久久久| 国产xxx69麻豆国语对白| 亚洲另类欧美自拍| 97视频在线观看免费高清完整版在线观看| 欧美日韩成人免费| 欧美成人手机在线| 日韩激情视频在线播放| 日韩成人久久久| 国产精品久久久久高潮| 国产91对白在线播放| 欧美人与物videos| 国产精品久久99久久| 国产成人精品综合| 亚洲欧美日韩国产中文| xxxxxxxxx欧美| 日韩国产欧美精品一区二区三区| 亚洲人线精品午夜| 国产一区二区三区毛片| 伊是香蕉大人久久| 国产自摸综合网| 57pao成人永久免费视频| 91大神福利视频在线| 精品亚洲aⅴ在线观看| 福利视频导航一区| 亚洲最新在线视频| 欧美美女15p| 久久久久久久激情视频| 国产精品视频色| 欧美性猛交xxxx免费看久久久| 久久久久久香蕉网| 韩日精品中文字幕| 久久久久久久999精品视频| 国产不卡视频在线| 91亚洲精品久久久久久久久久久久| 中文精品99久久国产香蕉| 久久精品国产一区二区三区| 国产欧美欧洲在线观看| 欧美精品videosex牲欧美| 亚洲伊人久久综合| 色婷婷av一区二区三区在线观看| 中文字幕日本欧美| 久久精品最新地址| 成人黄色短视频在线观看| 国产精品成熟老女人| 欧美日韩国产成人在线| 欧美电影免费看| 久久精品国产欧美亚洲人人爽| 国产成人精品在线观看| 久久国产精品视频| 欧美老肥婆性猛交视频| 国产精品久久久久久久久久新婚| 国产精品流白浆视频| 97成人精品视频在线观看| 最新国产精品亚洲| 亚洲成人精品久久| 狠狠躁夜夜躁久久躁别揉| 欧美成人免费va影院高清| 亚洲美女性视频| 亚洲性生活视频| 国产精品免费一区豆花| 日韩一区视频在线| 国产69精品久久久久9999| 国产日产久久高清欧美一区| 久久国产精品视频| 亚洲久久久久久久久久| 欧美成人精品一区| 日本免费久久高清视频| 欧美性猛交xxxx久久久| 久久久亚洲精选| 亚洲国产精品成人精品| 日韩精品在线第一页| 欧美精品一区二区三区国产精品| 国产欧美日韩中文字幕在线| 亚洲国产精品国自产拍av秋霞| 国产精品情侣自拍| 国产精品免费久久久久久| 亚洲男人天堂2024| 国产suv精品一区二区三区88区| 日韩亚洲在线观看| 国产成人黄色av| 亚洲性av在线| 538国产精品视频一区二区| 中文字幕免费精品一区高清| 日韩成人在线视频观看| 国产成+人+综合+亚洲欧洲| 欧美插天视频在线播放| 91精品视频观看| 国产丝袜一区二区三区免费视频| 伊人青青综合网站| 午夜精品免费视频| 国产中文欧美精品| 国产中文字幕日韩| 国产91在线播放精品91| 国产精品精品视频| 国产日本欧美一区二区三区在线| 91亚洲一区精品| 国产精品高潮视频| 亚洲一区二区三区四区视频| 色爱av美腿丝袜综合粉嫩av| 国产日韩精品视频| 日韩成人av网| 欧美日韩亚洲精品一区二区三区| 亚洲男人天堂2019| 在线视频欧美性高潮| 亚洲精品自在久久| 欧美在线一区二区视频| 国产精品视频精品视频| 国产婷婷97碰碰久久人人蜜臀| 777国产偷窥盗摄精品视频| 2019日本中文字幕| 性欧美xxxx交| 韩国三级日本三级少妇99| 亚洲一区二区三区sesese| 欧美老女人www| 欧美性猛交xxxx免费看久久久| 亚洲福利视频免费观看| 亚洲美女av黄| 韩国日本不卡在线| 亚洲网在线观看| 国产免费久久av| 国产乱人伦真实精品视频| 国产v综合ⅴ日韩v欧美大片| 亚洲激情视频网| 欧美日韩亚洲一区二区三区| 欧美精品生活片| 欧美成人精品不卡视频在线观看| 亚洲成人网久久久| 国产精品成av人在线视午夜片| 国产亚洲精品一区二区| 韩国三级电影久久久久久| 黑人极品videos精品欧美裸| 欧美激情精品久久久久久久变态| 国产精品久久久久久久av大片| 高清欧美性猛交xxxx| 中文字幕日韩精品在线观看|