菜的像徐坤
排名
7
文章
192
粉丝
15
评论
16
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

docker构建镜像缓慢

7219人阅读 2023/2/14 17:46 总访问:959946 评论:0 收藏:0 手机
分类: Linux

前言

dockerfile 在加载环境的时候十分缓慢,有些时候还需要下载一些依赖,往往这些依赖是国外的,就算配置了国内加速下载环境也得几分钟。 
所以,有没有什么办法避免每次都去重新构建一个环境呢,我想到的是将所有依赖的东西都整理成一个基础镜像,再将这个镜像上传到阿里云,每次重新拉去这个基础镜像,这样速度会不会快一点
实测:会快

构建基础镜像的DockerFile(net6.0 和 libgdiplus的环境)

  1. FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base 
  2. ENV TZ=Asia/Shanghai
  3. RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
  4. # 切换apt源为网易
  5. RUN echo "" > /etc/apt/sources.list \ 
  6.    && echo "deb http://mirrors.163.com/debian/ stretch main non-free contrib" >> /etc/apt/sources.list \ 
  7.    && echo "deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib" >> /etc/apt/sources.list \ 
  8.    && echo "deb http://mirrors.163.com/debian/ stretch-backports main non-free contrib" >> /etc/apt/sources.list \ 
  9.    && echo "deb-src http://mirrors.163.com/debian/ stretch main non-free contrib" >> /etc/apt/sources.list \ 
  10.    && echo "deb-src http://mirrors.163.com/debian/ stretch-updates main non-free contrib" >> /etc/apt/sources.list \ 
  11.    && echo "deb-src http://mirrors.163.com/debian/ stretch-backports main non-free contrib" >> /etc/apt/sources.list \ 
  12.    && echo "deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib" >> /etc/apt/sources.list \ 
  13.    && echo "deb-src http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib" >> /etc/apt/sources.list
  14.    
  15. # 安装gdiplus
  16. RUN apt-get update -y && apt-get install -y libgdiplus && apt-get clean && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
  17. RUN sed -i 's/TLSv1.2/TLSv1/g' /etc/ssl/openssl.cnf

执行命令
docker build -f  【dockerfile路径】 -t basenet6:v1 .

完成后基础镜像就在本地构建好了

如何推送到阿里云,请看阿里云的文档,写的很详细


以前的dockerFile

  1. FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
  2. WORKDIR /app/Basicapplication
  3. EXPOSE 80
  4. COPY  . .
  5.  
  6. ENV TZ=Asia/Shanghai
  7. RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
  8. # 切换apt源为网易
  9. RUN echo "" > /etc/apt/sources.list \ 
  10.    && echo "deb http://mirrors.163.com/debian/ stretch main non-free contrib" >> /etc/apt/sources.list \ 
  11.    && echo "deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib" >> /etc/apt/sources.list \ 
  12.    && echo "deb http://mirrors.163.com/debian/ stretch-backports main non-free contrib" >> /etc/apt/sources.list \ 
  13.    && echo "deb-src http://mirrors.163.com/debian/ stretch main non-free contrib" >> /etc/apt/sources.list \ 
  14.    && echo "deb-src http://mirrors.163.com/debian/ stretch-updates main non-free contrib" >> /etc/apt/sources.list \ 
  15.    && echo "deb-src http://mirrors.163.com/debian/ stretch-backports main non-free contrib" >> /etc/apt/sources.list \ 
  16.    && echo "deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib" >> /etc/apt/sources.list \ 
  17.    && echo "deb-src http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib" >> /etc/apt/sources.list
  18.    
  19. # 安装gdiplus
  20. RUN apt-get update -y && apt-get install -y libgdiplus && apt-get clean && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
  21. RUN sed -i 's/TLSv1.2/TLSv1/g' /etc/ssl/openssl.cnf
  22. ENV ASPNETCORE_URLS=http://+:80
  23. ENTRYPOINT ["dotnet""BasicApplication.dll","--server.urls","http://*:80"]


用基础镜像的地址替换一大堆引用(现在的dockerfile)

  1. FROM 【刚刚构建的阿里云基础镜像,记得加版本号】
  2. WORKDIR /app/Basicapplication
  3. EXPOSE 80
  4. COPY  . .
  5.  
  6. ENV ASPNETCORE_URLS=http://+:80
  7. ENTRYPOINT ["dotnet""BasicApplication.dll","--server.urls","http://*:80"]


评价

window7 docker启动失败 error: Failed to create the VirtualBox object。VirtualBox com对象失败

docker启动失败 报错 error: Failed to create the VirtualBox object这个错是因为:virtuelbox 无法启动,所以启动之后会...

docker启动报错 No default Boot2docker ISO found locally downloading the latest

这是因为,启动时如果检测到没有 Boot2Docker,就会去下载,这个下载过程出现网络连接上的错误了,导致启动失败。可以去下...

docker常用命令删除镜像命令进入容器、docker重启命令等

1. docker version查看 Docker 版本信息2. docker info显示 Docker 系统信息,包括镜像,容器数等3. 运行容器第一次使用:d...

docker 二次启动失败(本人这里使用的是hyper-v)

fatal: failed to start daemon: Error initializing network controller: Error creating default network: hnsCall faile...

docker中Sware集群与service

swarm 总结:1,docker中使用swarm集群可以达到多任务分配到不同的节点进行处理,如果有空闲的docker机子将会把请求的处理...

.netCore 使用分布式缓存(docker+redis)

1. 通过docker创建 Redis执行命令:dockerrun--nameasp-redis-p6379:6379-dredis查看redis状态:dockerps可以发现alreadywo...

.net Core3.0在Ubuntu 16.04上面的部署(Supervisor+nginx)(扩展docker)

前 言Linux 随着Linux越来越流行,本人一个.net程序员也多次研究linux与.net的相关产品,以及中间件的使用方式。So今天给...

docker 下载 mcr.microsoft.com/dotnet/core/sdk:3.1 老不行

请将其修改为:mcr.azk8s.cn/dotnet/core/sdk:3.1

docker常用命令

Docker简单命令整理清单[TOC] Login 获取账户信息获取账户信息 docker info | sed '/Username:/!d;s/.* //' ...

windows安装docker

win7、win8 等需要利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载,下载地址:http://mirrors.aliyun.com/do...

Linux 安装Web版Vscode(docker+Local)

Linux 安装Web版Vscode(Docker+Local)[TOC] code-server 介绍 在任何地方的任何机器上运行VS代码,并在浏览器中访问它...

docker运行 Elasticsearch Kibana和Cerebro

Docker运行 Elasticsearch Kibana和Cerebro[TOC] Demo 运行 Docker-compose,本地构建更高效的开发环境,更直观地了解 El...

docker部署简单的mysql

Docker部署简单的mysql[TOC] 首先这玩意我是真不想写,网上写的太多了,但是又没有找到快速的创建方式。so…有疑问都可...

Unable to get the local Boot2docker ISO version: Did not find prefix "-v" in version string

我已经从 github 上下载 v19.03.12 的镜像到 vps 然后拖回本地放在 C:\Users\Administrator.docker\machine\cache 下了。依...

docker容器和镜像的区别

下面这两个比喻说得比较好 镜像就类似操作系统光盘介质,容器相当于通过光盘安装后的系统。通过光盘(镜像),我们能在不同...