热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

企业部分----docker镜像的搭建(nginx),Go语言社区,Golang程序员人脉社

文章目录

    • docker镜像
      • docker镜像分层结构
      • Docker commit构建镜像三部曲
    • Docker镜像搭建
      • Dockerfile


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 .

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




推荐阅读
author-avatar
手机用户2502939421
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有