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 或 vi /etc/sysconfig/network-scripts/ifcfg-eth0,根据你实际文件名输入

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

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

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

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

或者使用ip命令“ip addr show ens33”,参考:https://www.cnblogs.com/gispathfinder/p/6158257.html

 

二、使用SSH工具连接CentOS

  本文使用MobaXterm,选择SSH,填入IP、Port即可。(Linux桌面环境可使用FinalShell)

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

 

三、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换成你想要的镜像名称,注意结尾的点(它表示Dockerfile在当前目录)

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

 

posted @ 2021-06-24 10:28  水沽籽  阅读(647)  评论(0编辑  收藏  举报