在Linux环境下使用Docker打包.net framework项目的镜像

 

1.Visual Stdio 配置Docker 如果你的CentOS安装部署了Docker请跳过

  • 在visual Stdio 解决方案下面的应用程序 =》 添加 =》 Docker支持

 

 

 

  • 选Linux配置

  •  

     

  • 确定后会自动生成如下Dockerfile文件,如果没有生成Dockerfile文件,可以先把别的Dockerfile文件拷贝过来,等下再配置

 

 

 

 

2.Visual Stdio 配置Dockerfile文件 =》 发布项目

  • 你可以直接在Visual Stdio直接打开Dockerfile进行配置,也可以把发布后的文件上传到服务器,在服务器配置Dockerfile

  • 发布项目

     

     

     

 

3.Linux服务器安装Docker 并配置环境

  • 注:如果你yum命令能正常使用请忽略下面步骤

    我服务器是CentOS 8版本,和CentOS 7版本略有不同,CentOS 8版本可能出现yum命令不能用的情况需要去配置,为什么提到yum命令呢?因为我们需要yam命令在CentOS 系统下部署Docker环境。

    如果你用的CentOS 8且yum命令不能使用,请参考如下文章 https://blog.csdn.net/c_zzz/article/details/123918398

    如果你yum命令能正常使用请忽略上面步骤

     

    在Linux服务器安装Docker

    请参考如下文章 https://help.aliyun.com/document_detail/51853.html

  • 安装Docker,安装yum源中默认的Docker。

$ yum -y install docker

  • 安装社区版Docker(docker-ce)。

    1. 运行以下命令,下载docker-ce的yum源。

      $ wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    2. 运行以下命令,安装docker-ce

      $ yum -y install docker-ce

    3. 运行以下命令,启动Docker服务。

      $ systemctl start docker

    4. 运行以下命令,查看Docker服务的运行状态。

      回显信息如下图所示,表示Docker服务处于运行中的状态。

docker-active

 

 

 

4.把.NET应用文件上传服务器

我这里使用的Xftp上传

 

 

 

 

 

5.在服务器把.NET应用文件里面的Dockerfile移动到上一级目录

  • 我们现在把项目发布文件里面的Dockerfile文件往外移一级

  •  

     

  • 把pools ,nginx ,supervisord.conf这三个文件复制过来

     

     

     

  • 配置Dockerfile文件 直接把下面这堆文件粘贴到Dockerfile文件里面

     

    FROM mono:latest

    LABEL maintainer="Marcos Junior junalmeida@gmail.com"

    RUN apt-get update \ && apt-get install -y \ iproute2 supervisor ca-certificates-mono fsharp mono-vbnc nuget \ referenceassemblies-pcl mono-fastcgi-server4 nginx nginx-extras \ openssh-server apache2 supervisor\ && rm -rf /var/lib/apt/lists/* /tmp/* \ && echo "daemon off;" | cat - /etc/nginx/nginx.conf > temp && mv temp /etc/nginx/nginx.conf \ && sed -i -e 's/www-data/root/g' /etc/nginx/nginx.conf

COPY nginx/ /etc/nginx/ COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf COPY pools/ /etc/mono/pools COPY AppService/ /var/www/iis

EXPOSE 80

ENTRYPOINT [ "/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf" ]

 

 

 

 

 

 

 

6.安装Mono

  • 首先导入存储库的GPG密钥:

    $ gpg --keyserver keyserver.ubuntu.com --recv-key 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

  • 通过运行以下命令将Mono存储库添加到您的系统中:

    $ dnf config-manager --add-repo https://download.mono-project.com/repo/centos8-stable.repo

  • 启用存储库后,安装Mono:

    $ sudo dnf install mono-complete

  • 通过运行以下打印Mono版本的命令来验证安装:

    $ mono --version

 

 

7.开始构建镜像

  • 执行下面的命令,根据Dockerfile文件构建镜像:

docker build -t dockerdemo .

 

  • 安装wget

yum -y install wget

 

 

 

 

  • 安装 yum-utils

yum -y install yum-utils

 

 

 

 

  • 查看docker版本

docker version

 

 

 

 

 

  • 启动docker =》如果没有报错就配置好了

  •  

上面什么都没显示就是部署好了=》直接跳过这一步操作 进入8

 

 

下面是没有部署好的

systemctl start docker

 

 

 

 

 

 

配置容器

yum erase podman uildah

 

 

 

 

yum install -y yum-utils

 

 

 

sudo yum-config-manager \

 

 

 

配置好后,启动容器

systemctl start docker

 

 

 

 

8.使用容器建立、运行镜像

 

建立镜像

docker build -t myhello:v3 -f Dockerfile .

 

 

 

 

查看所有镜像

docker images

 

 

 

 

运行镜像

docker run -d -p 5000:80 myhello:v3

 

 

 

列出所有在运行的镜像信息

docker ps

 

 

 

列出所有镜像信息

docker PS -a

 

 

 

 

 

9.镜像运行后在浏览器测试输入ip和端口号 ,查看是否能访问:

 

 

访问成功

就可以打包了

 

10.导出镜像

使用下面的命令导出镜像到当前目录

docker export 镜像ID > 导出压缩包名称.tar

参考下面图片

 

 

 

 

 

 

posted @ 2022-08-30 10:53  Bruce_Sun  阅读(2524)  评论(3)    收藏  举报