Docker安装及部署实例.Net Core

1.什么是Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

2.为什么使用Docker

使用Docker容器技术可以再全平台发布应用和服务。总所周知,.Net平台一直因为不开源以及不能跨平台诟病。小编又是一名忠实的微软粉,可是不能使用Linux作为实体服务器的.Net平台在现在分布式系统遍地,微服务纵横的天下,真的是举步维艰。还好有个Docker容器技术,解决这个问题,所以小编靠闲暇时间填了不少坑,也是部署出来了,这里跟大家分享一下。

PS:为什么不使用其他的方式(依赖框架等)来在linux上发布.NetCore应用。一次配置全平台都可以用呀!这还用说啊,帅啊!!!!

3.安装Docker

安装Docker有很多方式,小编也试了好几种,但是因为国内网速的限制有些方式会很慢,甚至因为太慢暂停下载。而有些方式安装完却有很多很多的问题,这里小编也把自己遇到的坑分享给大家。

这里给大家分享两种安装方式,实测有效。Docker分两个版本,Docker-ce和Docker-ee,后者是收费的,小编这里装ce版本。

(1)使用yum安装    

安装一些必要的系统工具:PS:sudo表示以管理员权限执行,如是root用户(最高权限)可不输入

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

添加软件源信息:

$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存:

$ sudo yum makecache fast

安装 Docker-ce:

$ sudo yum -y install docker-ce

启动 Docker 后台服务

$ sudo systemctl start docker

测试运行 hello-world

$ docker run hello-world

(2)使用脚本安装 Docker    吃网速,网速快可选择

确保 yum 包更新到最新。

$ sudo yum update

执行 Docker 安装脚本。

$ curl -fsSL https://get.docker.com -o get-docker.sh

$ sudo sh get-docker.sh

启动 Docker 进程。

$ sudo systemctl start docker

验证 docker 是否安装成功并在容器中执行一个测试的镜像

$ sudo docker run hello-world

(3)Docker常用命令

$ docker pull 镜像名                //拉取镜像,我要部署的应用可能会需要依赖一些基础镜像

$ docker build 自定义镜像名 .                //把自己的项目编译成镜像,部署到Docker容器中,别忘了这个‘.’!!!

$ docker images                //查看所有镜像

$ docker run --name=容器名 -p 主机环境端口:Docker容器映射端口 -d  镜像名            //运行镜像

$ docker ps -a                    // 查看容器运行状态,up运行成功

$ docker logs -t -f 容器名       //查看运行日志,可以从中看到出现的问题

4.部署.NetCore应用到Docker

(1)新建一个 ASP.NET Core 3.0 项目

 

然后运行一下项目,确保我们刚刚建立的项目可以正常运行

(2)编写Dockerfile,并设置属性复制到生成文件

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim

RUN cd /usr/local/src 

RUN mkdir MyTestApi 

WORKDIR /usr/local/src/MyTestApi

COPY . . 

EXPOSE 80 

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

(3)发布项目

 

(4)将Dockerfile文件复制到发布成功的目录,并全部上传到服务器

 

(5)构建Docker镜像

进入到发布文件目录(Dockerfile文件所在目录),执行命令便可打包镜像

$ docker pull microsoft/dotnet:3.0-aspnetcore-runtime        //拉取基础镜像

$ docker build -t mytestapi .            //构建镜像  别忘了这个点“.”!!!

$ docker run --name=mytestapi -p 80:80 mytestapi        //运行镜像

出现一长串字符串,便是表示运行成功

 

5.部署.NetCore到Docker遇到的问题

 
 

如果更新.net core代码怎么办,使用暴力方法:

进入目录
cd /usr/local/src/mytestapi

停止
docker stop mytestapi

删除
docker container rm mytestapi

编译
docker build -t mytestapi .

运行
docker run --name=mytestapi -p 80:80 mytestapi

6.总结

到这里呐今天的内容就到此结束了,感觉大家翻阅。

原文地址:https://www.cnblogs.com/valu/p/11596593.html