Linux系统docker部署asp.net Core

5 篇文章 0 订阅
4 篇文章 0 订阅

一、 VS/VS code创建解决方案、项目一笔带过

1,创建项目

2,启用Docker支持,选择操作系统,生成Dockerfile文件(没选择没关系)

3,完成创建,开发你的项目

4,如果2没有操作,右击项目:添加>Docker支持(项目中会生成Dockerfile文件)

创建时选择创建后选择

5,调试项目

此处需要注意,启用Docker支持后,默认为Docker启动,此处修改为IIS,否则会自动下载Docker(究极慢)

此处为了操作Linux,我关闭了系统功能:Hyper-V,Docker Desktop启动后报错
此处我关闭了Hyper-V

6,配置DockerFile文件

因为是在Windows系统下的VS开发所以简化DockerFile文件
注意修改第一行
修改前:FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
修改后:FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim
Docker版本不够,build时Step1会报错
报错信息:Step 1/5 : FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
Error parsing reference: “mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base” is not a valid repository/tag: invalid reference format

报错信息

#Dockerfile 中的 FROM 指令用于指定要构建的镜像的基础镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim 
#所述WORKDIR指令集用于其它Dockerfile指令,诸如工作目录RUN,CMD和也用于运行容器图像的实例的工作目录。
WORKDIR /app
COPY . .
#指示容器端口,并非访问端口
EXPOSE 80
# 入口点,相当于执行命令:dotnet DockerRelease.dll (编译目录下命令方式运行)
ENTRYPOINT ["dotnet", "DockerRelease.dll"]

参考:https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-docker/manage-windows-dockerfile
参考:https://www.cntofu.com/book/139/image/dockerfile/README.md

7,设置DockerFile文件为:“始终复制”

右击DockerFile文件>属性
在这里插入图片描述

8,发布asp.net Core 项目

选择对应的架构
在这里插入图片描述
参考资料:https://www.cnblogs.com/refuge/p/10248837.html

二、利用Xftp工具将发布文件上传至Linux服务器

工具下载地址:https://www.netsarang.com/zh/all-downloads/

1,连接服务器

在这里插入图片描述

2,将文件上传至服务器(左边是自己的,右边是服务器的,直接拖动即可)

在这里插入图片描述

三、Docker编译/运行镜像

1,编译镜像

# 指定到发布目录
cd /Released/WebApi  
# 编译为Docker镜像(Image)
docker build -t 镜像名称 .(此点非彼点,代表当前目录)
#或者直接  ~目录下
docker build 发布文件目录 -t mydockerdome

在这里插入图片描述在这里插入图片描述

2,查看镜像列表

docker images

在这里插入图片描述

3,运行为容器(为镜像或者存储库New一个实例/对象)

docker run --name=[ContainerName] -p 80:80 -d [ImageName]
# [ContainerName] 容器名称
# -p 8888:80  8888为主机端口,80为DockerFile文件中设置的容器端口,就是将服务器8888端口对应到容器80端口
# -d 后台运行
# [ImageName] 镜像名称

4,查看容器

docker ps    查看运行容器
docker ps -a      查看所有容器

5,浏览器输入地址查看

在这里插入图片描述
在这里插入图片描述

四、Docker镜像、容器概述,详见二>6参考资料

Docker 镜像
1,我们都知道,操作系统分为内核和用户空间。对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而 Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu 16.04 最小系统的 root 文件系统。
2,Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

Docker 容器
1,镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
2,容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。也因为这种隔离的特性,很多人初学 Docker 时常常会混淆容器和虚拟机。
3,前面讲过镜像使用的是分层存储,容器也是如此。每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为容器存储层。
4,容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。
5,按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用 数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。
6,数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器删除或者重新运行之后,数据却不会丢失。

五、常用docker命令

docker build  ***   编译为镜像Image
docker run  ***   运行为容器Container
docker pull [仓库地址]    从仓库拉去镜像
docker images 镜像列表
docker ps -a  容器列表
docker start [Container ID]  启动容器
docker stop [Container ID]  停止容器
docker rmi [ImageID] 移除镜像
docker rm  [ContainerID]  移除容器,如果启动中,需要先停止 docker stop
docker rmi $(docker images -q)   移除所有镜像
docker rm $(docker ps -a -q)    移除所有容器

参考资料:https://www.runoob.com/docker/docker-command-manual.html

相关文章

Windows系统docker部署
docker常备命令
Linux安装Docker(CentOS 7)

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值