栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker--封装镜像及优化

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker--封装镜像及优化

镜像分层结构

1.共享宿主机的kernel
2.base镜像提供的是最小的Linux发行版
3.同一docker主机支持运行多种Linux发行版
4.采用分层结构的最大好处是:共享资源

比如当你已经拉取Nginx 1.17版本的镜像之后,若再次拉取Nginx 1.16 版本时,只需要下载不同的层即可,相同的层可以共享使用,这样就可以节省资源和网络带宽。当你删除其中某个镜像版本时,也只会删除掉不一样的层,因为其中共享的层另一个版本需要使用。

镜像的构建

运行容器+修改容器+将容器保存为新的镜像

缺点:
效率低、可重复性弱、容易出错
使用者无法对镜像进行审计,存在安全隐患


交互式运行此镜像
-it交互式

删除

运行

封装镜像
把刚才创建的三个文件封装到v1,如果只退出docker,不会被删

多加了一层,目前所在的操作都在demo里,而不是busybox

–rm 退出时,自动删除,回收


之前的只封装在最上面一层,删除时也只删除了一层

Dockfile



定制一个首页,放进目录路径里



missing代表在官方,而不是本机执行



相对路径,不能把文件放在根底下,最好创建一个空的文件夹比如/docker




在宿主机自动创建目录,挂载在容器内



删除之后还在,卷的目的就是持久化

换一个centos镜像





如果直接ctrl+d就会删除,ctrl+q+p之后,就会暂时保存。attach又会恢复

dockerfile常用命令

1.FROM
指定base镜像,如果本地不存在会从远程仓库下载
2.MAINTAINER
设置镜像的作者
3.COPY





shell和exec的区别



cmd可以被覆盖

做一个完整的nginx封装
FROM centos:7
ADD nginx-1.21.1.tar.gz /mnt
RUN yum install -y gcc make pcre-devel openssl-devel
WORKDIR /mnt/nginx-1.21.1
RUN sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc
RUN ./configure --with-http_ssl_module --with-http_stub_status_module
RUN make
RUN make install
COPY index.html /usr/local/nginx/html
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]




镜像的优化


太大了,开始优化

减少镜像层
FROM centos:7
ADD nginx-1.21.1.tar.gz /mnt
WORKDIR /mnt/nginx-1.21.1
RUN yum install -y gcc make pcre-devel openssl-devel && sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc &&  ./configure --with-http_ssl_module --with-http_stub_status_module &&  make &&  make install && yum clean all  && rm -rf /mnt/nginx-1.21.1
COPY index.html /usr/local/nginx/html
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]



报错
添加:net.ipv4.ip_forward=1


多阶段构建
FROM centos:7 as build
ADD nginx-1.21.1.tar.gz /mnt
WORKDIR /mnt/nginx-1.21.1
RUN yum install -y gcc make pcre-devel openssl-devel && sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc &&  ./configure --with-http_ssl_module --with-http_stub_status_module &&  make &&  make install && yum clean all  && rm -rf /mnt/nginx-1.21.1
FROM centos:7
COPY --from=build  /usr/local/nginx /usr/local/nginx
COPY index.html /usr/local/nginx/html
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]



选择更加精简的基础镜像
FROM nginx:latest as base

ARG TIME_ZONE
RUN mkdir -p /opt/var/cache/nginx && 
    cp -a --parents /usr/lib/nginx /opt && 
    cp -a --parents /usr/share/nginx /opt && 
    cp -a --parents /var/log/nginx /opt && 
    cp -aL --parents /var/run /opt && 
    cp -a --parents /etc/nginx /opt && 
    cp -a --parents /etc/passwd /opt && 
    cp -a --parents /etc/group /opt && 
    cp -a --parents /usr/sbin/nginx /opt && 
    cp -a --parents /usr/sbin/nginx-debug /opt && 
    cp -a --parents /lib/x86_64-linux-gnu/ld-* /opt && 
    cp -a --parents /lib/x86_64-linux-gnu/libpcre.so.* /opt && 
    cp -a --parents /lib/x86_64-linux-gnu/libz.so.* /opt && 
    cp -a --parents /lib/x86_64-linux-gnu/libc* /opt && 
    cp -a --parents /lib/x86_64-linux-gnu/libdl* /opt && 
    cp -a --parents /lib/x86_64-linux-gnu/libpthread* /opt && 
    cp -a --parents /lib/x86_64-linux-gnu/libcrypt* /opt && 
    cp -a --parents /usr/lib/x86_64-linux-gnu/libssl.so.* /opt && 
    cp -a --parents /usr/lib/x86_64-linux-gnu/libcrypto.so.* /opt && 
    cp /usr/share/zoneinfo/${TIME_ZONE:-ROC} /opt/etc/localtime

FROM gcr.io/distroless/base-debian10

COPY --from=base /opt /

EXPOSE 80 443

CMD ["nginx", "-g", "daemon off;"]




转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/868755.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号