【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实例要重启)