中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Dockerfile詳解

發布時間:2020-07-04 07:39:01 來源:網絡 閱讀:243 作者:zrxhx 欄目:系統運維

制作Docker image有兩種方式: 一是使用Docker container(docker save container_name -o test.tar ) ,再導出image,而是使用Dockerfile, 將所有動作導入到文件中,使用build命令制作成鏡像。
一,Dockerfile基本結構
一般的Dockerfile分為四個部分:基礎鏡像信息,維護者信息,鏡像操作指令和容器啟動時的指令
FROM nginx:1.13.5-alpine MAINTAINER SXY Team <http://cywx.cn> #設置時區 RUN echo 'Asia/Shanghai' >/etc/timezone ARG SIBE_VERSION=0 COPY images/files/entrypoint.sh /usr/local/bin/ RUN chmod u+x /usr/local/bin/entrypoint.sh # Update to get support for Zip/Unzip, Bash RUN apk --update add zip unzip bash wget ENV WWW_TARGET /var/www/html/ COPY images/files/mysite.template /etc/nginx/conf.d/default.conf ADD dist/ /tmp/ RUN mkdir -p ${WWW_TARGET} \ && mv /tmp/ ${WWW_TARGET} \ && rm -rf /tmp/ ENV MGMT_API_URL http://192.168.3.223:19980 ENV MGMT_API_AUTHORIZATION d2ViX2FwcDpjaGFuZ2VpdA== RUN cp /var/www/html/scripts/http/configuration.json /var/www/html/scripts/http/configuration.json.template RUN cp /var/www/html/scripts/http/configuration.json /var/www/html/scripts/http/configuration.json.template2 # forward request and error logs to docker log collector RUN mkdir -p /var/log/webui && ln -sf /dev/stdout /var/log/webui/access.log \ && ln -sf /dev/stderr /var/log/webui/error.log EXPOSE 80 443 ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] CMD ["nginx", "-g", "daemon off;"] entrypoint中的信息 [root@test-227 files]# cat entrypoint.sh #!/bin/bash setup() { echo "Configure 1 management api url to ${MGMT_API_URL}" cat /var/www/html/scripts/http/configuration.json.template | \ sed "s#http://192.168.3.223:19980#${MGMT_API_URL}#g" > /var/www/html/scripts/http/configuration.json.template2 cat /var/www/html/scripts/http/configuration.json.template2 echo "Configure 2 AUTHORIZATION to ${MGMT_API_AUTHORIZATION}" cat /var/www/html/scripts/http/configuration.json.template2 | \ sed "s#d2ViX2FwcDpjaGFuZ2VpdA==#${MGMT_API_AUTHORIZATION}#g" > /var/www/html/scripts/http/configuration.json cat /var/www/html/scripts/http/configuration.json } setup exec "$@"
FROM:指定基礎鏡像,要在哪個鏡像建立
FROM <image> 或者 FROM <image>:<tag>
第一條指令必須為FROM指令

MAINTAINER: 指定維護者信息
MAINTAINER <name>

RUN: 在鏡像中要執行的命令
RUN <command> 或者 RUN ["executable","param1","param2"]
前者將shell終端中運行命令,即/bin/bash -c;后者則使用exec執行,指定使用其他終端可以通過第二種方式實現,例如RUN ["/bin/bash", "-c", "echo hello"]

WORKDIR: 指定當前工作目錄,相當于cd
WORKDIR /path/to/workdir
為后續的RUN,CMD,ENTRYPOINT指令配置工作目錄,可以使用多個WORKDIR指令,后續命令如果參數是相對路徑,則會基于之前命令指定的路徑,例如
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
則最終的路徑/a/b/c

EXPOSE:指定容器需要被打開的端口
EXPOSE 80
告訴docker服務容器需要暴露的端口,但是目前只在容器中暴露,如果想要在節點進行暴露則需要-p 80:80,或者-P(主機將為其暴露一個隨機端口)

ENV: 定義環境變量
ENV <key> <value>
指定一個環境變量在容器中生成
ENV managementapi http://192.168.3.226

COPY: 復制本地dockerfile路徑根目錄下的文件到容器文件中
COPY <src> <dest>

ADD: 相當于COPY,但比COPY功能強大
ADD <src> <dest>
此命令也是將主機任何地方文件到容器文件中,但是可以復制tar文件時,也會自動展開

VOLUME: 掛載目錄
VOLUME ["/data"]
創建一個可以從本地主機或者其他容器的掛載點,一般用來存放數據

USER:
USER daemon
指定運行容器時的用戶名或UID,后續的RUN也會使用指定用戶。當服務不需要管理員權限時,可以通過該命令指定運行用戶,并且可以在之前創建需要的用戶 RUN useradd -s /sbin/nologin -M www。

ENTRYPOINT
兩種格式:
ENTRYPOINT ["executable","param1","param2"]
ENTRYPOINT command param1 param2 (shell)
配置容器啟動后執行的命令,并且不可被docker run參數覆蓋,每個Dockerfile中只能有一個ENTRYPOINT,當指定多個時,只有最后一個生效

CMD:
支持三種格式
CMD ["executable","param1","param2"] 使用exec執行
CMD command1 command2 command3 在/bin/bash中執行,提供給需要交互應用
CMD ["param1","param2"] 提供給 ENTRYPOINT 的默認參數;
指定啟動容器時執行的命令,每個Dockerfile只能有一條CMD命令。如果指定了多條命令,只有最后一條會被執行,則會覆蓋掉CMD指定命令

ENTRYPOINT和CMD的區別: ENTRYPOINT指定了該鏡像啟動時入口,CMD則指定了容器啟動時的命令,當兩者共用時,完整的啟動命令像是ENTRYPOINT+CMD,使用ENTRYPOINT的好處是在我們啟動鏡像就像是啟動了一個可執行程序,在CMD上僅需要指定參數;另外在我們自定義CMD時不容易出錯

使用CMD的Dockerfile:
FROM mysql
CMD ["echo","test"]

使用ENTRYPOINT的Dockerfile
FROM mysql
ENTRYPOINT ["echo","test"]

ENTRYPOINT不能覆蓋掉執行時的參數,會把啟動鏡像是的命令當參數,而CMD可以覆蓋掉默認的參數

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

无锡市| 南涧| 菏泽市| 交口县| 灌云县| 彰化县| 荣成市| 西乡县| 武宁县| 玛多县| 松原市| 甘孜县| 高尔夫| 东明县| 色达县| 大安市| 达尔| 清河县| 云浮市| 安国市| 鄂托克前旗| 宁阳县| 渝中区| 皮山县| 黄平县| 南木林县| 荔波县| 永兴县| 宣恩县| 乌兰察布市| 犍为县| 六盘水市| 长治县| 罗甸县| 洛宁县| 平陆县| 陕西省| 怀宁县| 寻甸| 德阳市| 五家渠市|