【Docker】1.在Linux里使用Docker部署一个Asp.NetCore HelloWord项目

我在腾讯云活动期间买了两台ECS,操作系统是Linux CentOS 7.0以上版本
为啥买两台呢?
其一:一台用来搭建私有镜像仓库
其二:做Docker集群

一.在CentOS 7.0上安装 .NET SDK或 .NET 运行时

https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos

安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。 打开终端并运行以下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

1.1.安装AspNetCore运行时(注:我是3.1和5.0两个版本的运行时都安装了)
sudo yum install aspnetcore-runtime-5.0

sudo yum install aspnetcore-runtime-3.1

1.2.安装AspNetCoreSDK (注:我是3.1和5.0两个版本的SDK都安装了)

sudo yum install dotnet-sdk-5.0

sudo yum install dotnet-sdk-3.1

1.3.查看Dotnet的Runtime,SDK
dotnet --info

如果出现下图证明,AspNetCore运行时和SDK都安装好了

 

二.Linux上安装Docker

2.1.Centos7.0以上的版本

2.2.安装Docker的版本仓库-Docker的版本

2.2.1、设置仓库
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

2.2.2、稳定仓库的连接
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

2.3.安装Docker(注:默认安装最新版本)
sudo yum install docker-ce docker-ce-cli containerd.io

2.4.Docker启动
sudo systemctl start docker

2.5.查看Docker版本
docker version

如果出现下图证明,docker安装好了

 

 

三.Docker上部署AspNetCore项目
3.1.vs2019做的Asp.NetCore项目

 

3.2.Dockerfile文件

 

3.3.准备.Net Core SDK和.Net Core Runtime运行时(注:在第一步的时候已经安装了)

3.4.拉取AspNetCore 运行时镜像(注:我是3.1和5.0两个版本的镜像都拉取了)
docker pull mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim

docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim

3.5.拉取AspNetCore SDK镜像(注:我是3.1和5.0两个版本的镜像都拉取了)
docker pull mcr.microsoft.com/dotnet/sdk:5.0-buster-slim

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

3.6.写一个简单的HelloWorld-Asp.NetCore项目传入到主机的HelloWorld目录里


3.7.移动Dockerfile文件到HelloWorld工作目录

mv Dockerfile ../Dockerfile

3.8.根据Dockerfile文件生成镜像
docker build -t hellocore .

docker build -t hellocore -f Dockerfile .

 hellocore:镜像名称(注:镜像名称只能小写字母,大写字母会报错)

 

3.9.查看镜像列表,看hellocore是否创建成功

docker images

 

注:这里有个坑,正常来说应该在外面目录执行上述命令,但是总是报找不到项目文件,所以我在HelloWorld/HelloWorld里面执行的命令


3.10.在Docker上运行AspNetCore(注:我使用hellocore这个镜像运行两个不同端口的docker实例)

docker run -d -p 8081:80 hellocore
docker run -d -p 8082:80 hellocore

 -d:后台运行,新启动一个线程去创建容器实例

-p 8082:80:8082是宿主机端口也就是我这台ECS的端口,80是容器的端口
hellocore:镜像名称

3.11.查看容器实例是否运行

docker ps -a

 

如果看到如下图,status列是Up,证明实例已经正常运转了

 

3.12.这时候就可以通过下面命令去查看项目是否正常或者去浏览器查看
curl http://*****:8081

一些常用命令
1.查看镜像列表
docker images

2.查看容器列表
docker ps -a

3.停止指定容器
docker stop 容器ID或容器名

4.删除指定容器
docker rm 容器ID或容器名(注:只有先停止服务才能删除)

5.删除所有容器
docker rm $(docker ps -aq)

6.查看容器资源
docker stats <容器ID或容器名>

7.搜索镜像
docker search <镜像名称>

8.拉取镜像
docker pull <镜像名称>

9.镜像删除
docker image rm <镜像id/镜像名称>

10.镜像设置标签,也叫镜像设置版本
docker image tag 镜像名称:v1 镜像名称

11.后台运行容器
docker run -d <镜像名称>
或自定义端口
docker run -d -p 8082:80 <镜像名称>

12.停止容器
docker stop <镜像名称>

13、启动容器
docker start <镜像名称>

14.停止Docker服务
service docker stop

15.重启Docker服务
service docker restart

systemctl restart docker.service(注:所有Docker实例要重启)

 

posted @ 2021-03-26 09:44  David.Meng  阅读(240)  评论(0编辑  收藏  举报