企业部分----docker镜像的搭建(nginx)

本文详细介绍了Docker镜像的构建过程,包括镜像的分层结构、使用Dockerfile搭建镜像的方法,以及从Docker Hub拉取镜像的技巧。对比了不同方式构建的nginx镜像大小,展示了如何利用Dockerfile精简镜像体积。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker镜像

docker镜像分层结构

在这里插入图片描述
在这里插入图片描述

Docker commit构建镜像三部曲

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Docker镜像搭建

实验环境
打开一台虚拟机,配置好yum源,安装docker-ce(最好把bash也安装上可以补全命令),开启docker服务
在这里插入图片描述
在这里插入图片描述在这里插入图片描述刚安装好后我们看镜像是空的
在这里插入图片描述
我们可以给docker添加镜像

docker load -i rhel7.tar
docker load -i distroless.tar

在这里插入图片描述
添加好之后,我们可以查看镜像

docker images

在这里插入图片描述
为了方便搭建镜像我们需要写Dockerfile

Dockerfile

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
我们除了自己添加镜像,也可以在虚拟机联网的情况下从网上拉取镜像

# docker search   查询镜像
# docker pull   拉取镜像
# docker push 推送镜像

镜像默认可以从 docker hub 上下载,这是 docker 官方的公共仓库,为我们免费提供了大量已经容器化的应用镜像,避免我们重复的去制造,添加。(这里下载镜像可以添加阿里云的镜像加速器,在网页上搜https://www.aliyun.com/,注册登陆,点击控制台,找到镜像加速器,获取自己的专属镜像加速器,把它复制到相对应的地方,拉取镜像的时候会快很多)
不过,从网上拉取的镜像和自己写的有什么区别
我们用nginx镜像举例:
这是我从网上拉的nginx镜像
在这里插入图片描述
他的大小有100多MB,而换另一种二进制写的Dockerfile的大小可能就只要20多MB
可以看一下Dockerfile里的内容,这个内容详情请见于gitub网页

FROM nginx:1.16.0 as base

# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
ARG Asia/Shanghai

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/libpcre.so.* /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libz.so.* /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libc.so.* /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libdl.so.* /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libpthread.so.* /opt && \
    cp -a --parents /lib/x86_64-linux-gnu/libcrypt.so.* /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_ZON:-ROC} /opt/etc/localtime

FROM gcr.io/distroless/base
COPY --from=base /opt /
EXPOSE 80 443
ENTRYPOINT ["nginx", "-g", "daemon off;"]

在这里插入图片描述
在这里插入图片描述
运行一下

docker build -t rhel7:v3

在这里插入图片描述
查看大小
在这里插入图片描述
当然也有传统易于理解的nginx镜像搭建方式(有好几种,我选了一种相对简化的来做示范)这个就是按照安装nginx的步骤来进行的

FROM rhel7 as build
COPY dvd.repo /etc/yum.repos.d
ADD nginx-1.15.8.tar.gz /mnt
EXPOSE 80
WORKDIR /mnt/nginx-1.15.8
RUN rpmdb --rebuilddb && yum install -y gcc make zlib-devel pcre-devel && rm -fr /var/cache/yum && sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx && make && make install && rm -fr nginx-*



FROM rhel7
COPY --from=build /usr/local/nginx /usr/local/nginx
EXPOSE 80
VOLUME ["/usr/share/nginx/html"]
CMD ["/usr/local/nginx/sbin/nginx", "-g" , "daemon off;"]

在这里插入图片描述

docker build -t rhel7:nginx .

构建成功,查看大小
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值