docker~aspnetcore2.0镜像缺少libgdiplus问题

对于微软官方提供的镜像microsoft/aspnetcore2.0来说,它没有安装libgdiplus包,所以当你使用了draw去画图时,就会出现一些问题,我们一般会安装第三方的包包,ZKWeb.System.Drawing,而发布到docker里之后,运行时,会出现找不到dll的情况!

原因:

微软的aspnetcore镜像是在Ubuntu操作系统基础之上的,而这个系统上并没有安装libgdiplus,所以需要我们手动把镜像运行后,先安装一下,然后commit成自己的镜像,以后对于这种需要Drawing的项目,就引用自己的镜像就可以了。

解决方法(一):

进行镜像对应的容器

docker run -it containerid

然后去安装它

apt-get install libgdiplus

然后退出

exit

最后commit成为自己的镜像

sudo docker commit 8b10012d942f  lind/aspnetcore:2.0 

你可以把这个镜像导出,放到自己的服务器上

docker save 8b10012d942f > lind_aspnetcore.tar

最后,在目标服务器上运行即可!

解决方法(二):

修改你的Dockerfile文件,使用RUN命令去安装你的libgdiplus,但个人觉得,这种有些浪费资源,毕竟需要每个容器都要去安装一个它,而且下载速度不敢恭维!

FROM microsoft/aspnetcore:2.0
ARG source

RUN apt-get update
RUN apt-get install libgdiplus

WORKDIR /app
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "LindSMS.dll"]

当然上面的方案二不会产生新的镜像,这点到是挺干净,哈哈!

感谢阅读!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:docker~aspnetcore2.0镜像缺少libgdiplus问题,如需转载请自行联系原博主。

时间: 2024-09-20 05:30:58

docker~aspnetcore2.0镜像缺少libgdiplus问题的相关文章

docker 使用centos 镜像 运行 javaweb ,并重新生成镜像

Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种"轻量级"容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公司开始逐步使用 Docker 来替换现有的虚拟化平台了.作为一名 Java 程序员,我们是时候一起把 Docker 学起来了! 本文会对虚拟化技术与 Docker 容器技术做一个对比,然后引出一些 Docker 的名词术语,比如:容器.镜像等,随后将使用 Docker 搭建一个 JavaWeb 运行环境,最后

Docker基础之七: 镜像操作

构建镜像 (对Docker感兴趣的朋友可以加我的微信ghostcloud2016,然后我把你加到我们的一个Docker爱好者群组里面.) 镜像(Image)是容器的基础.当你运行docker run的时候,你会指定一个Image来运行.比如,最基本的ubuntu镜像和training/webapp镜像. 在上一节中,我们是从Docker Hub下载的ubuntu镜像.在本节中,我们将做如下操作: 管理和运行你的本地镜像 创建基础镜像 1 查看本机的镜像 root@gctest:~/.ghostc

Ubuntu下用docker安装redis镜像和使用redis容器分享

Ubuntu下用docker安装redis镜像和使用redis容器分享   1. 安装Ubuntu 2. 用Putty登录Ubuntu Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-40-generic x86_64)  * Documentation:  https://help.ubuntu.com/   System information as of Wed Dec 31 06:41:16 UTC 2014   System load: 

10张图带你深入理解Docker容器和镜像

本文讲的是10张图带你深入理解Docker容器和镜像,[编者的话]本文用图文并茂的方式介绍了容器.镜像的区别和Docker每个命令后面的技术细节,能够很好的帮助读者深入理解Docker. 这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(container)和镜像(image)之间的区别,并深入探讨容器和运行中的容器之间的区别. 当我对Docker技术还是一知半解的时候,我发现理解Docker的命令非常困难.于是,我花了几周的时间来学习Docker的工作原理,更确切地说,是关于Doc

docker 深入了解镜像、容器、仓库等概念_docker

docker镜像.容器.仓库的基本概念 镜像 1.Docker 镜像就是一个只读的模板. 例如:一个镜像可以包含一个完整的 CentOS 操作系统环境,里面仅安装了 httpd或用户需要的其它应用程序. 2.镜像可以用来创建 Docker 容器. 3.Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用. 容器 Docker 利用容器来运行应用. 容器是从镜像创建的运行实例.它可以被启动.开始.停止.删除.每个容器都是相互

百闻不如一战:“Docker巨好玩”镜像构建挑战赛

问题描述 4月28日,由云雀科技主办的,正式开启啦!本次挑战赛是国内第一场以Docker为主题的线上竞赛,旨在普及Docker知识,推动国内Docker生态系统的建设,为Docker爱好者和使用者提供一个实战平台.Docker技术已经在国内的开源市场方兴未艾,各种线上线下的讲座层出不穷.然而,知识的积累只是掌握一门技术的前提,深入的实践才能成为专家.所以,本次挑战赛依托这个简单易用的平台,为开发者提供一个学以致用的机会,还有机会拿大奖! 挑战赛主题Docker的魅力不仅在于提高资源利用率,更在于

FreeBSD 11.0 镜像因安全问题被紧急撤回

FreeBSD 11.0 镜像因安全问题被紧急撤回,最终版10月5号发布. 几分钟前,Glen Barber向FreeBSD社区告知"不要急着安装几天前从官方FTP镜像站点下载的FreeBSD 11.0操作系统的ISO镜像".因为这些镜像包含了一些不安全的安全漏洞,FreeBSD项目组决定撤回重造,所以大家还请耐心等待几天.根据既定日程,FreeBSD 11.0本应在今日(2016年9月29号)正式与大家见面.FreeBSD开发团队正在努力为这些安全问题打补丁,之后才能重新发布最终的I

[Docker系列·0] Docker101

Docker是什么 翻译自 whatisdocker Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications. Consisting of Docker Engine, a portable, lightweight runtime and packaging tool, and Docker Hub, a cloud service for

centos7 docker Dockerfile 生成镜像

 这里我们直接上Dockerfile(注意Dockerfile的名字,D必须大写,build的时后会自动去指定的目录下查找)  #lhy/centos:ssh # #by:V FROM centos:centos6.6 MAINTAINER liuhuiyao RUN yum -y install openssh-server;yum clean all RUN mkdir /var/run/sshd RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_