码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • dockerfile的优化和本地私有仓库的搭建


    目录

    一、dockerfile的优化

    1.1 将不需要输出的指令去丢入/dev/null

     1.2 减少run的使用

     1.3 多阶段的构建(使用FROM命令生成多个镜像,将指定的镜像做为其他镜像的基础镜像环境来构建)

    1.4 用更为轻量级的发行版本

    二、搭建本地私有仓库

    2.1 下载registry的镜像

    2.2 在daemon.json文件中添加私有镜像仓库的地址并去重启

    2.3 创建registry容器并开放端口

     2.4 给镜像打标签上传到私有仓库

     2.5 查看私有仓库列表看是否上传成功

     2.6 从私有仓库下载镜像


    一、dockerfile的优化

    例如优化nginx的文件

    未优化之前:

    mkdir /nginx
     
    FROM centos:7
    RUN yum install -y gcc pcre pcre-devel devel zlib-devel make
    ADD nginx-1.15.9.tar.gz /mnt 
    WORKDIR /mnt/nginx-1.15.9
    #关闭debug日志
    RUN sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc 
    RUN ./configure --prefix=/usr/local/nginx 
    RUN make
    RUN make install
    EXPOSE 80
    VOLUME ["/usr/local/nginx/html"]
    CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

    1.1 将不需要输出的指令去丢入/dev/null

    FROM centos:7
    RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && yum clean all
    ADD nginx-1.15.9.tar.gz /mnt
    WORKDIR /mnt/nginx-1.15.9
    #关闭debug日志
    RUN sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc
    RUN ./configure --prefix=/usr/local/nginx &> /dev/null
    RUN make &> /dev/null
    RUN make install &> /dev/null
    RUN rm -rf /mnt/nginx-1.15.9
    EXPOSE 80
    VOLUME ["/usr/local/nginx/html"]
    CMD ["/usr/local/nginx/sbin/nginx""-g","daemon off;"]
     
    docker build -t nginx:v1 . 

     1.2 减少run的使用

    FROM centos:7
    ADD nginx-1.15.9.tar.gz /mnt 
    WORKDIR /mnt/nginx-1.15.9
    RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && \
     yum clean all && \
     sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && \
     ./configure --prefix=/usr/local/nginx &> /dev/null && \
     make &> /dev/null && make install &> /dev/null &&\
     rm -rf /mnt/nginx-1.15.9 
    EXPOSE 80
    VOLUME ["/usr/local/nginx/html"]
    CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
     
    docker build -f Dockerfile -t nginx:v3 .

     1.3 多阶段的构建(使用FROM命令生成多个镜像,将指定的镜像做为其他镜像的基础镜像环境来构建)

    FROM centos:7 as build 
    ADD nginx-1.15.9.tar.gz /mnt 
    WORKDIR /mnt/nginx-1.15.9
    RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && \
     yum clean all &&\
     sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && \
     ./configure --prefix=/usr/local/nginx &> /dev/null && \
     make &>/dev/null && \
     make install &>/dev/null && \
     rm -rf /mnt/nginx-1.15.9 
     
     FROM centos:7 
    EXPOSE 80
    VOLUME ["/usr/local/nginx/html"]
    COPY --from=build /usr/local/nginx /usr/local/nginx
    CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

    1.4 用更为轻量级的发行版本

    debina、alpine、apt add、sandbox、busybox

     

    二、搭建本地私有仓库

    2.1 下载registry的镜像

    docker pull registry
     

     

    2.2 在daemon.json文件中添加私有镜像仓库的地址并去重启

    vim /etc/docker/daemon.json
    { 
      "insecure-registries": ["192.168.58.88:5000"], #添加此段,“,”不可少,ip是本机IP地址
      "registry-mirrors": ["https://4abdkxlk.mirror.aliyuncs.com"]
    }
     
    systemctl daemon-reload
    systemctl restart docker.service 

     

    2.3 创建registry容器并开放端口

    docker create -it registry /bin/bash
    docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry
    '//-p指定端口,一内一外;-v表示挂载,前者是宿主机,后者是容器' 

     

     2.4 给镜像打标签上传到私有仓库

    上传到私有仓库的前提是打上标签不然上传到共有的仓库

    #打标签
    docker tag nginx:latest 192.168.58.88:5000/nginx
    #上传
    docker push 192.168.58.88:5000/nginx

     

     2.5 查看私有仓库列表看是否上传成功

    curl -XGET http://192.168.58.88:5000/v2/_catalog
     
    '//若成功会返回以下值'
    {"repositories":["nginx"]}

     2.6 从私有仓库下载镜像

    #删除原有镜像
    docker rmi 192.168.58.88:5000/nginx:latest 
    #查看镜像
    docker images 
    #从本地仓库下载镜像
    docker pull 192.168.58.88:5000/nginx
    #查看镜像
    docker images  

  • 相关阅读:
    【leetcode】1137. 第 N 个泰波那契数
    运维工作的“本手、妙手、俗手”
    亚马逊、速卖通、国际站测评需要什么条件?怎么养号?
    QA-LORA: QUANTIZATION-AWARE LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
    nodejs+mysql航空飞机票销售酒店预订系统vue
    【linux命令讲解大全】014.Git:分布式版本控制系统的先驱和常用命令清单(三)
    PYTHON
    如何低成本运营独立站
    【华为机试真题 JAVA】第k个排列-100
    上海亚商投顾:沪指冲高回落 短剧、地产股集体走强
  • 原文地址:https://blog.csdn.net/zzn0109/article/details/126018309
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号