avatar

目录
Docker部署NetCore

Docker部署NetCore

一:Docker 安装及设置

安装Docker

yum -y install docker

启动Docker服务

systemctl start docker.service 

二:新建Net Core 程序

dotnet new mvc -n "myCoreMvc"

1.添加 DockerFile文件

FROM mcr.microsoft.com/dotnet/core/sdk:3.1

WORKDIR /app

EXPOSE 5000

COPY . .

ENTRYPOINT ["dotnet", "myCoreMvc.dll"]

2.设置程序入口,在Program.cs添加如下配置

webBuilder.UseUrls("http://*:5000").UseStartup();

3.发布程序,程序根目录执行以下命令

dotnet publish

三:上传到Linux 服务器,xshell连接,xftp上传文件

mkdir app

注:把发布后的文件放到app文件夹中

四:开始部署

  1. 进入执行目录 cd app

  2. 执行镜像构建 docker build -t mycore .

  3. 执行 docker images 查看build的镜像,如没意外会看到 mycore这个镜像。

  4. 启动一个容器 docker run -itd -p 5000:5000 --name core01 mycore

  5. 启动第二个容器 docker run -itd -p 5001:5000 --name core01 mycore

  6. 查看运行的容器 docker ps

  7. 查看所有的容器 docker ps -a

至此,部署完成。

五:浏览器访问程序

输入:http://Linux主机ip:5000
输入:http://Linux主机ip:5001

六:补充Docker命令

镜像文件和容器命令

#查看所有镜像
docker images

#删除一个imageid的镜像
docker rmi [IMAE_ID] 

#删除所有镜像
sudo docker rmi $(docker images -q) 


#查看所有容器运行状态
docker ps -a    
docker container ls -all

#删除一个containerid的容器(实例)
docker rm [CONTAINER_ID] 

#删除所有容器
docker rm $(sudo docker ps -a -q) 

容器日志

#查看指定时间后的日志,只显示最后100行:
docker logs -f -t --since="2020-04-01" --tail=100 [CONTAINER_ID] 

#查看某时间之后的日志:
docker logs -t --since="2020-04-01" [CONTAINER_ID] 

#查看某时间段日志:
docker logs -t --since="2020-04-01" --until "2020-04-02" [CONTAINER_ID] 

#查看最近30分钟的日志:
docker logs --since 30m [CONTAINER_ID] 

七:补充Dockerfile基本语法

#FROM mcr.microsoft.com/dotnet/core/sdk:3.1
表示以版本为3.1 的mcr.microsoft.com/dotnet/core/sdk作为基础镜像进行新镜像的构建

#WORKDIR /app
指定工作目录为/app

#COPY . .
拷贝的意思,其中的点代表Dockerfile所在的目录,整句话的意思是将Dockerfile所在目录的所有文件拷贝到容器的当前目录下,注意点后面有空格

#EXPOSE 5000
暴露出的端口

#ENTRYPOINT ["dotnet", "myCoreMvc.dll"]
启动程序

八:部署过程遇到的其他问题

1. 拉取镜像报错

docker pull mcr.microsoft.com/dotnet/core/sdk:3.1

报错内容如下:

Error response from daemon: Get https://mcr.microsoft.com/v2/: net/http: request canceled (Client.Timeout exceeded while awaiting headers)

解决:依次执行以下命令

#使用daocloud国内镜像源
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://ef017c13.m.daocloud.io

#设置环境变量
DOCKER_OPTS="$DOCKER_OPTS --registry-mirror=http://f2d6cb40.m.daocloud.io"

#重启Docker
sudo service docker restart

#拉取镜像
docker pull mcr.microsoft.com/dotnet/core/sdk:3.1

2.安装的 .NET Core 工具未能运行

原因:找不到可执行文件 或 找不到 .NET Core 运行时的正确版本

报错内容如下:

Could not execute because the specified command or file was not found.
Possible reasons for this include:
  * You misspelled a built-in dotnet command.
  * You intended to execute a .NET Core program, but dotnet-xyz does not exist.
  * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.

解决:检查DockerFile 执行目录是否正确

微软地址:排查 .NET Core 工具使用问题

2.删除多余的SDK

#查看所有的SDK包
dotnet --list-sdks

#查看所有的运行时包
dotnet --list-runtimes

#删除
yum remove dotnet-host

#安装SDK
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

sudo yum install dotnet-sdk-3.1.1

Docker安装参考

文章作者: HJY
文章链接: https://hjy-dev.github.io/2020/04/02/Docker%E9%83%A8%E7%BD%B2NetCore/
版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明来自 Kiven Blog
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论