注一、本文软件环境: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
3. 按“Insert”键进入编辑模式,把“ONBOOT=no”改为“ONBOOT=yes”;按Esc键退出编辑模式,输入“:wq”退出
4. 重启网络服务,命令“service network restart”
5. 执行命令“ifconfig”,如果无法执行,则执行命令“sudo yum install net-tools”进行安装;
如果安装完还是无法使用“ifconfig”的话,请重启操作系统。记住IP,下面的步骤会用到。
二、使用SSH工具连接CentOS
本文使用MobaXterm,选择SSH,填入IP、Port即可。
成功连接系统后,就可以复制粘贴命令,不需要手敲了。
三、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换成你想要的镜像名称)
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