大型闪亮服务器docker映像大小
目前,我正在将R笔记本电脑和闪亮的仪表板混合在一起,它们将在闪亮的服务器上提供服务。从Dockerfile中可以看出,我从一个大型闪亮服务器docker映像大小,r,docker,shiny,dockerfile,R,Docker,Shiny,Dockerfile,目前,我正在将R笔记本电脑和闪亮的仪表板混合在一起,它们将在闪亮的服务器上提供服务。从Dockerfile中可以看出,我从一个rocker/Shining图像开始,并完成以下构建步骤: 从renv.lock文件安装所需的软件包 执行将负责呈现.Rmd文件的main.R,并将.html输出放在/reports文件夹中 复制servin的Shining server文件夹中的编织文档和闪亮的仪表板 复制服务器配置文件 删除临时文件(工作目录和下载的包) 暴露8080端口 现在,以这种方式构建的结果图
rocker/Shining
图像开始,并完成以下构建步骤:
renv.lock
文件安装所需的软件包main.R
,并将.html输出放在/reports
文件夹中Shining server
文件夹中的编织文档和闪亮的仪表板8080
端口我想知道我遗漏了什么(可能是层重复太多?),或者
Dockerfile
有什么问题
项目文件夹结构:
.
├── cool-report.Rproj
├── Dockerfile
├── R
│ └── main.R
├── readme.md
├── renv
│ ├── activate.R
│ ├── library
│ ├── settings.dcf
│ └── staging
├── renv.lock
├── rmarkdown
│ ├── area1.Rmd
│ ├── area2.Rmd
│ └── data
│ ├── data_import_1.R
│ └── data_import_2.R
├── shiny
│ └── mtcars_example
│ └── app.R
└── shiny-server.conf
Dockerfile:
FROM rocker/shiny:latest
COPY . /tmp
WORKDIR /tmp
RUN echo "options(renv.consent=TRUE)" >> .Rprofile
# Install packages from renv
RUN R -e "install.packages('remotes', repos = c(CRAN = 'https://cloud.r-project.org'))" \
&& R -e "remotes::install_github('rstudio/renv')" \
&& R -e "renv::restore(confirm = FALSE)"
# Render report(s)
RUN Rscript ./R/main.R
# Copy reports and shiny dashboards
RUN cp -r ./reports /srv/shiny-server/reports \
&& cp -r shiny/* /srv/shiny-server/reports
WORKDIR /
# Copy config files and server executable
COPY shiny-server.conf /etc/shiny-server/shiny-server.conf
# Cleanup temp files
RUN rm -rf /tmp/*
# Expose port as on shiny-server.conf
EXPOSE 8080
docker图像历史记录-H
输出:
andodet@t480s:~/code/study/cool-report$ docker image history -H d21975ad912d
IMAGE CREATED CREATED BY SIZE COMMENT
d21975ad912d About an hour ago /bin/sh -c #(nop) EXPOSE 8080 0B
11345fbe7c72 About an hour ago /bin/sh -c rm -rf /tmp/* 0B
ce8b33984b85 About an hour ago /bin/sh -c #(nop) COPY file:1d2d0c462c909cc4… 741B
761bc2a982cd About an hour ago /bin/sh -c #(nop) WORKDIR / 0B
5aa2ae037138 About an hour ago /bin/sh -c cp -r ./reports /srv/shiny-server… 1.76MB
12b3a3505ae9 About an hour ago /bin/sh -c Rscript ./R/main.R 1.76MB
69cacc1ad08d About an hour ago /bin/sh -c R -e "install.packages('remotes',… 328MB
eb07c8335c8f 2 hours ago /bin/sh -c echo "options(renv.consent=TRUE)"… 53B
55a14476302f 2 hours ago /bin/sh -c #(nop) WORKDIR /tmp 0B
84e502e37546 2 hours ago /bin/sh -c #(nop) COPY dir:dfcc724126bc931ba… 31.3MB
f40ad3a5dadd 5 weeks ago /bin/sh -c #(nop) CMD ["/usr/bin/shiny-serv… 0B
<missing> 5 weeks ago /bin/sh -c #(nop) COPY file:fef7b189480bb622… 359B
<missing> 5 weeks ago /bin/sh -c #(nop) EXPOSE 3838 0B
<missing> 5 weeks ago /bin/sh -c wget --no-verbose https://downloa… 513MB
<missing> 5 weeks ago /bin/sh -c apt-get update && apt-get install… 313MB
<missing> 2 months ago /bin/sh -c #(nop) CMD ["R"] 0B
<missing> 2 months ago /bin/sh -c apt-get update && apt-get insta… 506MB
<missing> 2 months ago /bin/sh -c #(nop) ENV R_VERSION=3.6.1 LC_AL… 0B
<missing> 2 months ago /bin/sh -c #(nop) ENV BUILD_DATE=2019-12-12 0B
<missing> 2 months ago /bin/sh -c #(nop) ARG BUILD_DATE 0B
<missing> 2 months ago /bin/sh -c #(nop) ARG R_VERSION 0B
<missing> 2 months ago /bin/sh -c #(nop) LABEL org.label-schema.li… 0B
<missing> 2 months ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 2 months ago /bin/sh -c #(nop) ADD file:8f7dc710e276f54a3… 101MB
andodet@t480s:~/code/study/cool report$docker图像历史记录-H d21975ad912d
由大小注释创建的图像
d21975ad912d大约一小时前/bin/sh-c#(nop)曝光80800B
11345fbe7c72大约一小时前/bin/sh-c rm-rf/tmp/*0B
ce8b33984b85大约一小时前/bin/sh-c#(nop)复制文件:1d2d0c462c909cc4…741B
761bc2a982cd大约一小时前/bin/sh-c#(nop)WORKDIR/0B
5aa2ae037138大约一小时前/bin/sh-c cp-r./reports/srv/shinny server…1.76MB
12b3a3505ae9大约一小时前/bin/sh-crscript./R/main.R 1.76MB
69cacc1ad08d大约一小时前/bin/sh-c R-e“install.packages('remotes'),…328MB
eb07c8335c8f 2小时前/bin/sh-c echo“选项(renv.approve=TRUE)”…53B
55a14476302f 2小时前/bin/sh-c#(nop)WORKDIR/tmp 0B
84e502e37546 2小时前/bin/sh-c#(nop)复制目录:dfcc724126bc931ba…31.3MB
f40ad3a5dadd 5周前/bin/sh-c#(nop)CMD[“/usr/bin/shinny serv…0B
5周前/bin/sh-c#(nop)复制文件:fef7b189480bb622…359B
5周前/bin/sh-c#(nop)暴露3838 0B
5周前/bin/sh-c wget--没有详细说明https://downloa…513MB
5周前/bin/sh-c apt获取更新和apt获取安装…313MB
2个月前/bin/sh-c#(nop)CMD[“R”]0B
2个月前/bin/sh-c apt获取更新和apt获取安装…506MB
2个月前/bin/sh-c#(nop)ENV R#u VERSION=3.6.1 LC#u AL…0B
2个月前/bin/sh-c#(nop)环境建设日期=2019-12-12 0B
2个月前/bin/sh-c#(nop)ARG构建日期0B
2个月前/bin/sh-c#(nop)ARG R_版本0B
2个月前/bin/sh-c#(nop)LABEL org.LABEL schema.li…0B
2个月前/bin/sh-c#(nop)CMD[“bash”]0B
2个月前/bin/sh-c#(nop)添加文件:8f7dc710e276f54a3…101MB
使用rm-rf
删除文件不会释放任何空间。Docker映像由附加层组成,有点像Git历史记录中的提交—旧层将始终存在
您可以尝试多阶段构建,也可以将所有这些运行切换到调用shell脚本的单个运行中,该脚本将删除shell脚本末尾的文件。由于层仅在运行结束时创建,因此,如果在运行结束时临时文件消失,它们将不会占用任何空间。谢谢您的回复。我已移动前4个
RUN
命令非常小,令人惊讶的是,尽管调用的RUN
更少,但它并没有使图像大小变小。您还需要在shell脚本中删除任何不需要的文件。这不是真正的答案,但Docker Hub上显示的大小是压缩大小。如果您运行Docker images rocker/Shining:la在本地测试
,你会看到rocker/shiny
图像实际上是1.43GB未压缩的。其中大部分来自图像历史输出下半部分的wget
/apt get
步骤。这非常有意义@gregL,我将重建图像,包括--compress
标志,然后看看会发生什么out.hi@anddt,你有没有找到任何方法来缩小闪亮的图像大小?