• CentOS下安装Docker,并发布.NET5程序


    注一、本文软件环境:CentOS7 2003、Docker 20.10.7、MobaXterm、FileZilla,其它版本可能会存在差异

    注二、执行命令过程中,出现下图的提示,一般都输入y

    ================================================================================

    我这里是用VMware palyer跑CentOS的,简易安装过程:https://www.cnblogs.com/shousiji/p/14922595.html

    安装好后,输入账号密码第一次进入系统,就开始下面的步骤。

     

    一、网络配置

    1. 输入命令“ping www.jd.com”检查下网络,如果可以ping,则跳过下面2-4的步骤

    2. 执行:vi /etc/sysconfig/network-scripts/ifcfg-ens33

    3. 按“Insert”键进入编辑模式,把“ONBOOT=no”改为“ONBOOT=yes”;按Esc键退出编辑模式,输入“:wq”退出

    4. 重启网络服务,命令“service network restart”

    5. 执行命令“ifconfig”,如果无法执行,则执行命令“sudo yum install net-tools”进行安装;

    如果安装完还是无法使用“ifconfig”的话,请重启操作系统。记住IP,下面的步骤会用到。

    二、使用SSH工具连接CentOS

      本文使用MobaXterm,选择SSH,填入IP、Port即可。

      成功连接系统后,就可以复制粘贴命令,不需要手敲了。

    三、Docker的安装

    1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看你当前的内核版本

     $ uname -r
     -----------------------------------------------------------------------------------------------------

    2、使用 root 权限登录 Centos。确保 yum 包更新到最新。

    $ sudo yum update
     -----------------------------------------------------------------------------------------------------

    3、卸载旧版本(如果安装过旧版本的话)

    $ sudo yum remove docker  docker-common docker-selinux docker-engine

     -----------------------------------------------------------------------------------------------------

    4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

    $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
     -----------------------------------------------------------------------------------------------------

    5、设置yum源

    $ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

     -----------------------------------------------------------------------------------------------------

    6、可以查看所有仓库中所有docker版本,并选择特定版本安装

    $ yum list docker-ce --showduplicates | sort -r

     -----------------------------------------------------------------------------------------------------

    7、本文直接安装最新版docker

    $ sudo yum install docker-ce docker-ce-cli containerd.io 

     -----------------------------------------------------------------------------------------------------

    8、启动并加入开机启动

    $ sudo systemctl start docker

    $ sudo systemctl enable docker

     -----------------------------------------------------------------------------------------------------

    9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

    $ docker version
     -----------------------------------------------------------------------------------------------------

    本段摘抄自:https://www.cnblogs.com/yufeng218/p/8370670.html

    四、创建.NET5 Web API项目

    1. 勾选“启用Docker”;或者在创建好后,项目右键 => 添加 => Docker支持。

    2. 会自动创建Dockerfile文件,右键属性,把它设置为“始终复制”;默认配置如下:

    FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
    WORKDIR /app
    EXPOSE 80
    EXPOSE 443
    
    FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
    WORKDIR /src
    COPY ["WebApplication5/WebApplication5.csproj", "WebApplication5/"]
    RUN dotnet restore "WebApplication5/WebApplication5.csproj"
    COPY . .
    WORKDIR "/src/WebApplication5"
    RUN dotnet build "WebApplication5.csproj" -c Release -o /app/build
    
    FROM build AS publish
    RUN dotnet publish "WebApplication5.csproj" -c Release -o /app/publish
    
    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app/publish .
    ENTRYPOINT ["dotnet", "WebApplication5.dll"]

      这种方式需要把项目源码上传到服务器,在docker中进行编译、发布,这样部署到CentOS上会有个坑:

      https://www.cnblogs.com/xhznl/archive/2020/06/09/13081708.html 

      方案一、方案二我都测试过OK的。

    3. 如果想使用vs发布后再上传服务器的,那么就是以下配置。保留base和final,但final要做点修改。

    FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
    WORKDIR /app
    EXPOSE 80
    EXPOSE 443
    
    FROM base AS final
    # 从当前文件目录,复制文件到docker目录
    COPY . . 
    ENTRYPOINT ["dotnet", "WebApplication5.dll"]

    4. 打开FTP工具(本文使用FileZilla,MobaXterm也有FTP功能,各位看自己喜好),

      填好参数进行快速连接;将发布后的文件上传到CentOS中,自己按需创建文件夹。

    五、运行应用程序

    1. 打开MobaXterm,登录到CentOS,定位到你的目录

    3. 创建docker镜像(注意结尾的点,xxx换成你想要的镜像名称)

    docker build -t xxx .

    4. 查看镜像列表

    docker images

    可以看到,Dockerfile中base配置的环境也自动安装上了:

    5. 运行并随机端口(这里P是大写的)

    docker run -P xxx

    或者指定端口(这里p是小写的)

    docker run -p ip:hostPort:containerPort xxx
    //示例:docker run -p 0.0.0.0:49154:80 xxx

    另外,可以把xxx设为开机启动,只需在xxx前面加上“--restart=always”

    6. 新开一个窗口,查看容器列表

    //查看正在运行的
    docker ps
    //查看所有
    docker ps -a 

    就可以看到对外的端口了:

    7. 浏览器输入CentOS的IP,加查询到的端口,再加API地址,

      如:http://192.168.134.128:49154/WeatherForecast

     

    ================================================================================

    附录 删除容器、镜像的操作:

    1.执行“docker ps -a”,查看容器状态

    2.如果容器状态不是Exited

      执行停止命令:docker stop {CONTAINER ID}

      如:docker stop b7131e8b1189

    3.执行删除命令:docker rm {CONTAINER ID}

      如:docker rm b7131e8b1189

    4.执行“docker images”,查看镜像列表

    5.执行删除命令:docker rmi {IMAGE ID}

      如:docker rmi b0319c777ef3

     

  • 相关阅读:
    DEV勾选框按钮呈现
    C#事务
    C#调用python脚本
    centos 磁盘满
    PostgreSQL库表字段信息
    Nginx Configuration for windows
    .NET Core 6.0之读取配置文件
    WinUI迁移到即将"过时"的.NET MAUI个人体验
    客户案例Husqvarna AB
    客户案例SES S.A.
  • 原文地址:https://www.cnblogs.com/shousiji/p/14918631.html
Copyright © 2020-2023  润新知