IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Docker (三)Dockerfile优化 -> 正文阅读

[系统运维]Docker (三)Dockerfile优化

未优化版

[root@localhost nginx0]# ls
Dockerfile  nginx-1.12.2.tar.gz
[root@localhost nginx0]# cat Dockerfile 
FROM centos:7    //基于centos:7镜像
RUN yum install -y gcc pcre pcre-devel devel zlib-devel make    //安装依赖环境
ADD nginx-1.12.2.tar.gz /mnt   //将源码复制到指定目录,并解压
WORKDIR /mnt/nginx-1.12.2    //为下面的指令指定执行目录
RUN sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc   //关闭Debug调试
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;"] //为了保持nginx的容器不退出,关闭nginx后台运行

[root@localhost nginx0]# docker build -t nginx:0 .  //使用当前目录下的文件构建标签为nginx:0的镜像
Successfully built ca43076dfbbc
Successfully tagged nginx:0
[root@localhost nginx0]# docker images   //镜像大小为419M
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        0         ca43076dfbbc   16 seconds ago   419MB
centos       7         8652b9f0cb4c   9 months ago     204MB

优化1.不需要输出的指令丢入/dev/null

[root@localhost nginx1]# ls
Dockerfile  nginx-1.12.2.tar.gz
[root@localhost nginx1]# cat Dockerfile 
FROM centos:7
RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && yum clean all
ADD nginx-1.12.2.tar.gz /mnt
WORKDIR /mnt/nginx-1.12.2
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.12.2   //删除不需要的文件
EXPOSE 80
VOLUME ["/usr/local/nginx/html"]
CMD ["/usr/local/nginx/sbin/nginx""-g","daemon off;"]
[root@localhost nginx1]# 

[root@localhost nginx1]# docker build -t nginx:1 .
Successfully built 4ad837b79831
Successfully tagged nginx:1
[root@localhost nginx1]# docker images  //镜像310M
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        1         4ad837b79831   12 seconds ago   310MB
nginx        0         ca43076dfbbc   11 minutes ago       419MB
centos       7         8652b9f0cb4c   9 months ago         204MB

优化2.减少RUN构建

[root@localhost nginx2]# ls
Dockerfile  nginx-1.12.2.tar.gz
[root@localhost nginx2]# cat Dockerfile   //因为RUN较少。所以效果不明显
FROM centos:7
ADD nginx-1.12.2.tar.gz /mnt 
WORKDIR /mnt/nginx-1.12.2
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.12.2 
EXPOSE 80
VOLUME ["/usr/local/nginx/html"]
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
[root@localhost nginx2]# 

[root@localhost nginx2]# docker build -t nginx:2 .
Successfully built e29d2d5899e2
Successfully tagged nginx:2
[root@localhost nginx2]# docker images   //镜像308M
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        2         e29d2d5899e2   7 minutes ago    308MB
nginx        1         4ad837b79831   14 minutes ago   310MB
nginx        0         ca43076dfbbc   24 minutes ago   419MB
centos       7         8652b9f0cb4c   9 months ago     204MB


优化3.多阶段构建

[root@localhost nginx3]# ls
Dockerfile  nginx-1.12.2.tar.gz
[root@localhost nginx3]# cat Dockerfile 
FROM centos:7 as build  //相当于别名
ADD nginx-1.12.2.tar.gz /mnt 
WORKDIR /mnt/nginx-1.12.2
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.12.2 

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;"]
[root@localhost nginx3]# 

[root@localhost nginx3]# docker build -t nginx:3 .
Successfully built a17bb6fd3c9d
Successfully tagged nginx:3
[root@localhost nginx3]# docker images   //镜像205M
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        3         a17bb6fd3c9d   40 seconds ago   205MB
<none>       <none>    85828e2bf156   41 seconds ago   308MB
nginx        2         e29d2d5899e2   22 minutes ago   308MB
nginx        1         4ad837b79831   29 minutes ago   310MB
nginx        0         ca43076dfbbc   39 minutes ago   419MB
centos       7         8652b9f0cb4c   9 months ago     204MB
[root@localhost nginx3]# 

测试运行结果

[root@localhost nginx3]# docker run -d -P --name nginx0 nginx:0  //创建容器
3fbb31acff42af03dacc033ed5983fc4399698af15b7bfffa267bc6b8e1433ce
[root@localhost nginx3]# docker run -d -P --name nginx1 nginx:1
fdd27e63c9e6bd08dae92c2f08e15540f02c3018fb03ad5dad2a3ddcfd20f2eb
[root@localhost nginx3]# docker run -d -P --name nginx2 nginx:2
759c89cf4414c3c3b88cb6420982726781736ef4850ae12aec3d28734a358ee9
[root@localhost nginx3]# docker run -d -P --name nginx3 nginx:3
f47aa73bf125f3286db8c316ec0d18ec77467e3f861e505ca506cbbefb3e3d34

[root@localhost nginx1]# docker ps  //查看映射端口
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                     NAMES
f47aa73bf125   nginx:3   "/usr/local/nginx/sb…"   7 minutes ago   Up 7 minutes   0.0.0.0:49156->80/tcp, :::49156->80/tcp   nginx3
759c89cf4414   nginx:2   "/usr/local/nginx/sb…"   7 minutes ago   Up 7 minutes   0.0.0.0:49155->80/tcp, :::49155->80/tcp   nginx2
676d0da7a8bc   nginx:1   "/usr/local/nginx/sb…"   5 seconds ago   Up 4 seconds   0.0.0.0:49154->80/tcp, :::49157->80/tcp   nginx1
3fbb31acff42   nginx:0   "/usr/local/nginx/sb…"   7 minutes ago   Up 7 minutes   0.0.0.0:49153->80/tcp, :::49153->80/tcp   nginx0

在这里插入图片描述

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

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-07 11:12:00  更:2021-09-07 11:12:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:43:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码