日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Dockerfile常见指令优化

發布時間:2025/1/21 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dockerfile常见指令优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、指令格式化

LABEL

LABEL vendor=ACME\ Incorporated \com.example.is-beta= \com.example.is-production="" \com.example.version="0.0.1-beta" \com.example.release-date="2015-02-12"

ENV

Dockerfile中ENV指令像RUN指令一樣,每一個都會創建一個臨時層。

ENV JAVA_HOME=/opt/jdk1.8.0_241 \CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib ENV PATH=$PATH:$JAVA_HOME/bin

RUN

RUN apt-get update && \apt-get install -y --no-install-recommends \apt-transport-https \ca-certificates && \rm -rf /var/lib/apt/lists/*

二、指令優化

1、減少RUN指令,合并命令

RUN useradd -s /sbin/nologin -m -u 1001 curiouser && \mkdir -p /home/curiouser/{data,logs} && \rm -rf /etc/yum.repos.d/C* && \yum install -q -y git && \yum clean all && \curl -s http://192.168.1.7/repository/tools/jdk-8u241-linux-x64.tar.gz | tar -xC /opt/

2、使用COPY來代替ADD

對于使用ADD指令下載遠程服務器上的tar包并解壓,建議使用以下方式代替

RUN curl -s http://192.168.1.7/repository/tools/jdk-8u241-linux-x64.tar.gz | tar -xC /opt/

三、最小化基礎鏡像,減小鏡像體積

1、盡量使用Alpine作為基礎鏡像

  • Alpine鏡像大小最多才幾MB。
  • 使用APK命令裝最小化需求的軟件包
FROM alpine:3.11.5 RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories \&& apk add --no-cache git

四、盡量不使用root用戶

在做基礎運行時鏡像時,創建運行時普通用戶和用戶組,并做工作區與權限限制,啟動服務時盡量使用普通用戶。

gosu

FROM alpine:3.11.5 RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories \&& apk add --no-cache gosu

參考:

https://blog.csdn.net/boling_cavalry/article/details/93380447

五、使用進程管理工具來處理進程信號

為防止容器中的進程變成僵尸進程,

dumb-init

Github地址:https://github.com/Yelp/dumb-init

FROM alpine:3.11.5 RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories \&& apk add --no-cache dumb-init# Runs "/usr/bin/dumb-init -- /my/script --with --args" ENTRYPOINT ["dumb-init", "--"]# or if you use --rewrite or other cli flags # ENTRYPOINT ["dumb-init", "--rewrite", "2:3", "--"]CMD ["/my/script", "--with", "--args"]

參考:

https://www.infoq.cn/article/2016/01/dumb-init-Docker

https://www.cnblogs.com/sunsky303/p/11046681.html

六、移除所有緩存等不必要信息

  • 刪除解壓后的源壓縮包(參考第二章第二節)

  • 清理包管理器下載安裝軟件時的緩存

    • 使用Alipine鏡像中APK命令安裝包時記得加上--no-cache
    • 使用Ubuntu鏡像中的APT命令安裝軟件后記得rm -rf /var/lib/apt/lists/*

七、使用合理的ENTRYPOINT腳本

示例:

#!/bin/bash set -eif [ "$1" = 'postgres' ]; thenchown -R postgres "$PGDATA"if [ -z "$(ls -A "$PGDATA")" ]; thengosu postgres initdbfiexec gosu postgres "$@" fiexec"$@"

八、其他建議

1、設置時區

FROM alpine:3.11.5 ENV TZ=Asia/Shanghai RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \&& apk add --no-cache tzdata \&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo "Asia/Shanghai" > /etc/timezone

2、設置系統語言

FROM alpine:3.11.5 ENV LANG=en_US.UTF-8 \LANGUAGE=en_US.UTF-8RUN apk --no-cache add ca-certificates \ && wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub \ && wget -q https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.29-r0/glibc-2.29-r0.apk \ && wget -q https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.29-r0/glibc-bin-2.29-r0.apk \&& wget -q https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.29-r0/glibc-i18n-2.29-r0.apk \&& apk add glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk \&& rm -rf /usr/lib/jvm glibc-2.29-r0.apk glibc-bin-2.29-r0.apk glibc-i18n-2.29-r0.apk \&& /usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 "$LANG" || true \&& echo "export LANG=$LANG" > /etc/profile.d/locale.sh \&& apk del glibc-i18n

3、使用Label標注作者、軟件版本等元信息

FROM alpine:3.11.5 LABEL Author=Curiouser \Mail=****@163.com \PHP=7.3 \Tools=“git、vim、curl” \Update="添加用戶組"

4、指定工作區

WORKDIR /var/wwww

5、RUN指令顯示優化

RUN set -eux ; \ls -al

九、鏡像構建

1、命名

原則是見名知意。可使用三段式

鏡像倉庫地址/類型庫/鏡像名:版本號

  • registry/runtime/Java:8.1.2
  • registry/runtime/php-fpm-nginx:7.3-1.14
  • registry/cicd/kubctl-helm:1.17-3.0
  • registry/cicd/git-compose-docker:v1
  • registry/applications/demo:git_commit_id

2、使用Makefile

IMAGE_BASE = registry/runtime IMAGE_NAME = php-fpm IMAGE_VERSION = 7.3 all: build push build:docker build --rm -f Dockerfile -t ${IMAGE_BASE}/${IMAGE_NAME}:${IMAGE_VERSION} . push:docker push ${IMAGE_BASE}/${IMAGE_NAME}:${IMAGE_VERSION} # 構建并推送 make # 僅構建 make build # 僅推送 make push

參考

  • https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
  • https://www.artindustrial-it.com/2017/09/20/10-best-practices-for-creating-good-docker-images/
  • https://gist.github.com/StevenACoffman/41fee08e8782b411a4a26b9700ad7af5
  • https://snyk.io/blog/10-docker-image-security-best-practices/
    • 原文出處:https://gitbook.curiouser.top/origin/dockerfile-optimization.html#

    總結

    以上是生活随笔為你收集整理的Dockerfile常见指令优化的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产做爰高潮呻吟视频 | 国产馆在线观看 | 老熟妇仑乱视频一区二区 | 黑丝久久| 黄色在线小视频 | 美女靠逼视频网站 | 欧美性大战久久久久久 | 免费观看黄色网 | 国产免费无码XXXXX视频 | 艳妇乳肉豪妇荡乳 | 成人精品一区日本无码网 | av网址在线看 | 国产精品黄在线观看 | 日本一级理论片在线大全 | 中文字幕亚洲在线观看 | 亚洲无吗在线 | 色七七视频 | 亚洲免费大片 | 日韩一区二区三区高清 | 国偷自产视频一区二区久 | 欧美一区二区最爽乱淫视频免费看 | 人妻体内射精一区二区 | 日本人妻换人妻毛片 | 成年人视频网 | 亚洲欧美一区二区在线观看 | 国产一区二区三区免费播放 | 国产精品美女一区二区 | 中文字幕在线视频第一页 | 中文字幕一区二区人妻在线不卡 | 在线免费观看欧美大片 | 91精品婷婷国产综合久久蝌蚪 | 久婷婷| 人妻体内射精一区二区三区 | 久久久久久久国产 | 亚洲成人一区二区 | 啪免费视频 | 密乳av | 日韩一区二区久久 | 福利小视频在线观看 | 五月天视频 | 中文字幕高清一区 | 人妻体内射精一区二区三区 | 中文字幕无码精品亚洲 | 黄色av网址在线 | 成人黄色免费观看 | av香蕉 | 高h调教冰块play男男双性文 | 国内自拍第二页 | 国产精品色 | 国产精品69久久久久孕妇欧美 | 国产精品乱码一区二区视频 | 免费在线观看亚洲 | 天天舔天天摸 | 青青青免费视频观看在线 | 日韩专区av | 亚洲欧美日韩不卡 | 国产精品电影院 | 黄网av| 91黄色国产 | 国产电影免费观看高清完整版视频 | 台湾性生生活1 | 五月天激情综合网 | 亚洲视频成人 | 夜夜艹天天干 | 国产视频综合在线 | 国产精品第100页 | 人人草人人爽 | 在线一区二区不卡 | 99久久久久无码国产精品 | 国语对白永久免费 | 在线不卡的av | 成人免费毛片嘿嘿连载视频 | 奇米影视777在线观看 | 亚洲精品在线观 | 亚洲一区二区三区四区在线观看 | 97成人人妻一区二区三区 | 香蕉在线视频观看 | 精品午夜福利视频 | 黄色成人在线 | 婷婷综合另类小说色区 | 日本在线不卡一区二区三区 | 大粗鳮巴久久久久久久久 | 99在线成人精品视频 | 国产成人精品视频在线 | 色噜噜一区二区三区 | 污污污www精品国产网站 | av网在线| 中国免费黄色片 | 99热这里只有精品99 | 国产精品一品二区三区的使用体验 | 激情丁香六月 | 国产成人三级在线 | 欧美男人天堂网 | 国产一二三四五区 | 影音先锋啪啪资源 | 日韩欧美偷拍 | 免费黄色在线看 | 国产一区二区三区黄 | 婷婷激情四射 |