1.首先 mono 是什么

Mono是一个由Xamarin公司(先前是Novell,最早为Ximian)所主持的自由开放源代码项目。   该项目的目标是创建一系列匹配ECMA标准(Ecma-334和Ecma-)的.NET工具,包括C#编译器和通用语言架构。  与微软的.NET Framework(共通语言运行平台)不同,Mono项目不仅可以运行于Windows系统上,还可以运行于Linux,FreeBSD,Unix,OS X和Solaris,甚至一些游戏平台,例如:Playstation ,Wii或XBox 

摘自百度百科

2. 公司的产品开发时需要用到mono

3. 最简单的办法是使用 微软的dotnet sdk 镜像再安装 mono

4. 自己对mono几乎一无所知。

5.最简单的办法, 从hub.docker 里面查找 mono 找到dockerfile 的创建方式 直接进行使用即可

6. 连接到相应的dockerfile 里面 直接点击版本号 即可

https://github.com/mono/docker/blob/c47c852008be6934ac650f282c18c70f2cfec72f/6.0.0.313/slim/Dockerfile

网址在这里

注意里面的内容为:
FROM debian:stretch-slim
   
  # MAINTAINER Jo Shields <jo.shields@xamarin.com>
  # MAINTAINER Alexander Köplinger <alkpli@microsoft.com>
   
  ENV MONO_VERSION 6.0.0.313
   
  RUN apt-get update \
  && apt-get install -y --no-install-recommends gnupg dirmngr \
  && rm -rf /var/lib/apt/lists/* \
  && export GNUPGHOME="$(mktemp -d)" \
  && gpg --batch --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF \
  && gpg --batch --export --armor 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF > /etc/apt/trusted.gpg.d/mono.gpg.asc \
  && gpgconf --kill all \
  && rm -rf "$GNUPGHOME" \
  && apt-key list | grep Xamarin \
  && apt-get purge -y --auto-remove gnupg dirmngr
   
  RUN echo "deb http://download.mono-project.com/repo/debian stable-stretch/snapshots/$MONO_VERSION main" > /etc/apt/sources.list.d/mono-official-stable.list \
  && apt-get update \
  && apt-get install -y mono-runtime \
  && rm -rf /var/lib/apt/lists/* /tmp/*
 

7. 自己修改一下(庆幸的是 dotnet sdk 也使用的ubuntu 直接可以用如上的命令进行处理)

FROM dotnetsdk2.1vimssh:gscloud1906
# 注意这里是使用了自己安装 vim 的 images 进行的后续处理 RUN apt-get update \
&& apt-get install -y --no-install-recommends gnupg dirmngr \
&& rm -rf /var/lib/apt/lists/* \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --batch --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF \
&& gpg --batch --export --armor 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF > /etc/apt/trusted.gpg.d/mono.gpg.asc \
&& gpgconf --kill all \
&& rm -rf "$GNUPGHOME" \
&& apt-key list | grep Xamarin \
&& apt-get purge -y --auto-remove gnupg dirmngr
ENV MONO_VERSION 6.0.0.313 RUN echo "deb http://download.mono-project.com/repo/debian stable-stretch/snapshots/$MONO_VERSION main" > /etc/apt/sources.list.d/mono-official-stable.list \
&& apt-get update \
&& apt-get install -y mono-runtime \
&& rm -rf /var/lib/apt/lists/* /tmp/*

8. 执行docker build 就可以生成带mono的环境了。

在Docker Container 内部安装 Mono 的方法 ---From官网的更多相关文章

  1. CentOS下安装和配置MySQL-JDK-Tomcat-Nginx(个人官网环境搭建手冊)

    今天,又一次弄我的个人云主机的环境.准备运营自己用Java写的个人官网等站点. 服务器环境:阿里云CentOS 6.4位 包含以下脚本在内的绝大部分命令和脚本,都是我亲自运行过,靠谱的. 完整的&qu ...

  2. CentOS下安装和配置MySQL-JDK-Tomcat-Nginx(个人官网环境搭建手册)

    今天,重新弄我的个人云主机的环境,准备运营自己用Java写的个人官网等网站. 服务器环境:阿里云CentOS 6.4位 包括以下脚本在内的绝大部分命令和脚本,都是我亲自执行过,靠谱的. 完整的&quo ...

  3. 开源Inno Setup官网下载、安装、打包教程(官网安装向导中文语言包)

    安装Inno Setup篇 1.搜索Inno Setup 2.下载Inno Setup 3.选择下载最新 innosetup-5.5.9-unicode.exe 版本(innosetup-5.5.9. ...

  4. linux下安装redis,按照redis官网安装不成功需要提前安装c++环境(安装成功并可以测试)

    这个安装是一种便捷的安装,没有几句,但是完全按照官网上的来没有安装成功,有前提条件的 打开linux root登录 然后在usr下面建文件夹redis,进入 在该文件加下,直接按照官网的指导进行安装即 ...

  5. 【docker】 docker容器内部安装vi命令

    有时会需要在docker容器内使用vi命令,但是新启动的docker容器内并没有vi命令,那就需要自己安装一个 1.使用命令 apt-get update 2.进行安装 apt-get install ...

  6. Ajax中最有名axios插件(只应用于Ajax)(post方法,官网写错了,应是字符串格式)

    /* axios v0.18.0 | (c) 2018 by Matt Zabriskie */!function(e,t){"object"==typeof exports&am ...

  7. Docker源码分析(七):Docker Container网络 (上)

    1.前言(什么是Docker Container) 如今,Docker技术大行其道,大家在尝试以及玩转Docker的同时,肯定离不开一个概念,那就是“容器”或者“Docker Container”.那 ...

  8. 进入正在运行的 docker 容器(docker container)

    在使用 docker 容器的时候,我们总会想看看容器内部长什么样子:我们使用 docker exec 命令可以满足我们的期望: ➜ compose docker exec --help Usage: ...

  9. Docker源码分析(八):Docker Container网络(下)

    1.Docker Client配置容器网络模式 Docker目前支持4种网络模式,分别是bridge.host.container.none,Docker开发者可以根据自己的需求来确定最适合自己应用场 ...

随机推荐

  1. Delphi 实现Ping命令

    Delphi  实现Ping命令 unit FtPing; interface uses Windows, SysUtils, Classes, Controls, Winsock, StdCtrls ...

  2. C++全局变量的定义和声明

    编译单元 编译分为两个步骤: 第一步:将每个.cpp或.c和相应的.h文件编译乘obj文件(包含预编译,汇编.编译) 第二部:将obj文件进行Link,生成最终的可执行文件 根据该阶段错误大致可分为两 ...

  3. C# 父类代码动态转换子类

    百度上搜索C# 如何父类运行时转换成子类,没有得到相应答案,突然想起C# 有dynamic类型试试看结果成功了... 以后编写代码类似这样的代码 就可以删减掉了 if (en.type == EMap ...

  4. ie中兼容性问题

    由于项目要要兼容到ie8原本没有问题的代码一但用ie8打开js的报错找不到对象就都来了,其实总结起来就是ie越老的版本就越多方法名识别不到,那就少什么方法添加什么,比如说我的项目就要引入<scr ...

  5. How to do Deep Learning on Graphs with Graph Convolutional Networks

    翻译: How to do Deep Learning on Graphs with Graph Convolutional Networks 什么是图卷积网络 图卷积网络是一个在图上进行操作的神经网 ...

  6. solr安装记录

    [root@localhost bin]# ./solr start -force*** [WARN] *** Your open file limit is currently 1024.   It ...

  7. eclipse异常:Exception in thread ""http-bio-8080"-exec-5" java.lang.OutOfMemoryError: PermGen space

    用eclipse运行项目,最烦的就是非代码错误.现在这个异常信息,表示的是tomcat启动内存溢出.试过的最简单的办法就是eclipse->project->clean->clean ...

  8. Phos 技术服务支持

    Phos Mail: tencenter@163.com

  9. Python接口测试-利用登录后的session用到登录后的接口中

    有些接口是在登录后才能调用的,例如“立即出借”只有在登录后才能到出借窗口,解决: 主要是添加了: s =requests.session() 完整代码: '''登录 ''' print('*'*100 ...

  10. qt 之http学习

    在Qt网络编程中,需要用到协议,即HTTP.它是超文本传输协议,它是一种文件传输协议. 新建工程名为“http”,然后选中QtNetwork模块,最后Base class选择QWidget.注意:如果 ...