参考文章:

https://www.cnblogs.com/jRoger/p/aspnet-core-deploy-to-docker.html

docker for windows下载连接: https://docs.docker.com/docker-for-windows/install/

关于配置的细节以及docker的下载安装等操作,并不复杂,网上大部分文章的教程都是靠谱的。

本文主要把各方面配置中需要注意的点说一下

第一步:安装docker for windows

如果你是windows系统,需要执行这一步

安装之前需要开启 Hyper-V虚拟机功能,启用方式可以自己搜索

Hyper-V 启动之后,需要到bios界面启用cpu的虚拟化。

https://jingyan.baidu.com/article/15622f24017461fdfdbea554.html

直到任务管理器中的虚拟化显示开启表示成功

第二步:创建一个webapi程序

创建一个.net core 2.0的web程序,然后将程序发布

可以直接在vs里面右键发布,选择发布到文件,这种方式发布的项目只适用于windows平台运行,其他平台就不行了



想要项目在linux、osx系统上运行,需要用命令发布,也可能有别的方式,暂时只知道这一种:

1.dos命令转到项目的主目录下

2.运行命令:dotnet publish --runtime ubuntu.16.04-x64 --runtime后面跟的是运行时环境的操作系统

3.如果上面的命令成功了,你会看到生成了这样一个文件夹:bin\Debug\netcoreapp2.0\ubuntu.16.04-x64\publish,这里面的文件就是发布好的项目文件了,我们将publish文件夹拷贝到对应的操作系统下,运行命令dotnet NetCore.dllNetCore.dll指的是主程序文件),不出意外的话项目就可以正常启动了,如果出意外的话,请进行以下检查:

发布时输入的目标系统是否正确
服务器是否正确安装了.net sdk
代码是否有bug

第三步:创建Dockerfile文件

在发布目录下创建一个文本文档Dockerfile.txt ,或者在Linux系统创建一个文件Dockerfile

内容:

# 声明使用的基础镜像
FROM microsoft/aspnetcore:latest
# 设置工作目录
WORKDIR /app
# 将本地应用拷贝到 容器 /app/ 目录下 "./"代表的就是/app 因为dockerfile文件和程序文件都在发布文件夹下 所以两个目录是一样的
COPY ./ ./
# 设置导出端口
EXPOSE 5000/tcp
# 指定应用入口点 NetCore.dll代表的是主程序文件
ENTRYPOINT ["dotnet", "NetCore.dll"]

编辑完成之后记得将文件的后缀名去掉

第四部:创建镜像

在执行这一步之前,请确保docker已经成功安装在你的操作系统中

然后进入命令界面 ,cd切换到发布文件夹下

执行命令:

docker build -t myapi . (注意命令中的最后一个点 代表的是命令从你的当前目录下执行)

或者:

docker build 发布文件目录 -t myapi

myapi为自定义的镜像名称

不出意外的话镜像创建完毕

然后继续执行命令运行:

docker run -it -p 5000:5000 myapi

这里的5000:5000 代表把容器内的5000端口映射到你主机的5000端口

然后 http://localhost:5000 就可以访问啦!

镜像相关的命令

sudo docker pull microsoft/dotnet    //从docker仓库拉取一个名称为“microsoft/dotnet”的镜像

sudo docker build light    //构建一个名称为light的容器

sudo docker run hello-world    //运行hello-world容器

sudo docker images    //查看所有镜像

sudo docker rmi [IMAE_ID]    //删除一个imageid的镜像

sudo docker rmi $(docker images -q)    //删除所有镜像

sudo docker ps -a    //查看所有容器运行状态

sudo docker rm 6f0c67de4b72    //删除一个containerid的容器(实例)

sudo docker rm $(sudo docker ps -a -q)   //删除所有容器

在VS中启用docker支持#

vs2017中提供了对docker的支持,在新建web项目中可以勾选启动docker支持,选项,或者在项目中右键添加docker的支持



同时会生成几个新的文件,

xx.override.yml文件中 将 ports端口改成我们程序的端口

程序中的端口一定要和上面的端口一样:



build.yml文件中,将image 版本改为 2.0

将项目目录下自动生成的Dockerfile文件中的EXPOSE也改为5003端口

启动docker for windows

然后点击Docker运行docker-compose

漫长的等待。。。 期间会下载需要的包以及执行镜像的创建发布命令等。







成功运行,系统会用一个默认的本机端口映射到docker的5003端口上,api可以访问啦!

关于镜像的下载速度#

官方镜像地址的下载速度太慢

建议配置一个代理地址:https://www.daocloud.io/mirror#accelerator-doc

再也不用担心下载速度了-

Linux相关命令及docker配置

第一次接触linux,很蒙圈,这里记录一下基础的命令,及docker需要用到的一些配置,以便以后查阅

Linux命令

  • 查看目录: ls
  • 创建目录: mkdir (目录名)
  • 删除文件:rm (文件或目录名)
  • 删除目录(包括其中的子目录和文件):rm -rf (文件或目录名)
  • 切换到root 用户: sudo -i 或sudo su -
  • 退出root 用户: exit
  • 显示当前目录: pwd
  • 复制文件/目录:cp 源文件或目录/目标文件或目 cp -r 复制文件夹 包括子目录和文件
  • 重命名文件/目录: mv (文件或目录名)
  • 进入目录:cd

文件权限设置:

chmod 777 home1 777是读、写、执行权限

Rar文件解压/解压

安装: sudo apt-get install rar unrar

或者可从http://www.rarsoft.com/download.htm下载 RAR for Linux 编译安装

tar -xzpvf rarlinux-3.8.0.tar.gz

cd rar

make

这样就安装好了,安装之后就有了rar和unrar这两个程序,rar是压缩程序,unrar是解压程序。它们的参数选项很多,可用命令rar -help和unrar -help查看,这里亦简单举例说明一下其用法:

# rar a test.rar test.jpg test.png 这条命令是将test.jpg和test.png压缩成一个rar包

# rar a test.rar *.jpg 这条命令是将所有.jpg的文件压缩成一个rar包

# rar a test.rar test 这条命令是将文件夹test压缩成一个rar包

# unrar e test.rar 这条命令是将test.rar中的所有文件解压出来

编辑文件 :

需要用管理员账户编辑

打开或新建文件,并将光标至于第一行首:vi /dic1/a.txt ( 按键盘上“a”键,vi界面出现 INSERT后,开始进行编辑操作)

编辑完毕后,按ESC键,跳到命令模式,然后进行保存退出或不保存退出操作:

  • 保存,不退出 :w
  • 强制保存,不退出 :w!
  • 保存,并退出: :wq
  • 不保存,并退出: :q

文件上传

putty下载地址:https://www.putty.org/

切换到PuTTY执行文件下改文件夹中需要同时包括pscp.exe:

  执行命令:pscp 文件路径 登陆用户名@服务器ip地址:/文件夹名称

  例:pscp C:\Program Files\PuTTY\PublishOutput.rar ubuntu@119.29.91.144:/home1

图形界面管理工具

xshell:https://www.netsarang.com/download/main.html

Docker安装及设置

Docker代理设置

转到docker目录下:

创建目录/etc/systemd/system/docker.service.d

在该目录下创建文件:http-proxy.conf

文件中添加配置:

Environment="HTTP_PROXY=https://mirror.ccs.tencentyun.com"

保存文件

保存完了之后提示重新启动docker,然后提示要执行什么命令来着,手速太快,命令忘记了。。。根据提示复制粘贴就可以了

Windows下docker的安装,将ASP.NET Core程序部署在Linux和Docker中的更多相关文章

  1. Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署

    运行环境 照例,先亮环境:软件的话我这里假设你已经批准好了.net core 运行环境,未配置可以看我的这篇[linux(centos)搭建.net core 运行环境] 腾讯云 centos:7.2 ...

  2. Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署

    运行环境 照例,先亮底 centos:7.2 cpu:1核 2G内存 1M带宽 辅助工具:xshell xftp 搭建.net core运行环境 .net core 的运行环境我单独写了一篇,请看我的 ...

  3. ASP.NET Core教程:ASP.NET Core程序部署到Linux

    一.前言 这篇文章我们将讲解如何将ASP.NET Core 程序部署到Linux.这里我们使用的是虚拟机里面安装的Centos7.这里的ASP.NET Core程序,以上篇文章中发布的框架依赖文件为例 ...

  4. ASP.NET Core教程:ASP.NET Core 程序部署到Windows系统

    一.创建项目 本篇文章介绍如何将一个ASP.NET Core Web程序部署到Windows系统上.这里以ASP.NET Core WebApi为例进行讲解.首先创建一个ASP.NET Core We ...

  5. ASP.NET Core 程序发布到Linux(Centos7)爬坑实战

    前言 前阶段弄了个Linux系统想倒腾倒腾.NET Core,结果看了下网上的资料,大部分都是过期的,走了不少弯路,不过还好,今下午总算捣鼓出来了.Linux命令太多了,唉.血的教训:安装一定要看官网 ...

  6. .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上

    今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMem ...

  7. Windows下docker的安装,将ASP.NET Core程序部署在docker中

    参考文章: https://www.cnblogs.com/jRoger/p/aspnet-core-deploy-to-docker.html https://www.cnblogs.com/jRo ...

  8. VisualStudioCode创建的asp.net core项目部署到linux,使用nginx代理

    1.准备工作: a:使用VisualStudioCode创建asp.net core项目,并使用命令“dotnet publish”发布(可以参考前面两篇文章). 如:dotnet publish - ...

  9. asp.net core项目 部署在 linux上

    第一步 安装 .net core https://www.microsoft.com/net/learn/get-started/linuxubuntu 第二步 运行你的asp.net core 项目 ...

随机推荐

  1. C# 运算符 ++在前与++在后实例分析。

    首先记住计算技巧“++在前先+1,++在后后+1”. static void Main(string[] args) { int i = 10; Console.WriteLine(i);//此时i的 ...

  2. Jquery全选系列操作(锋利的jQuery)

    Jquery全选系列操作(锋利的jQuery) <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" ...

  3. 【代码笔记】iOS-cell折叠

    一,效果图. 二,工程图. 三,代码. AppDelegate.h #import <UIKit/UIKit.h> //加入头文件 #import "myQQView.h&quo ...

  4. 葡萄城报表介绍:Java 报表

    一.Java 报表定义 Java 是一门面向对象编程语言,不仅吸收了 C++ 语言的各种优点,还摒弃了 C++ 里难以理解的多继承.指针等概念,因此 Java 语言具有功能强大和简单易用两个特征.Ja ...

  5. 如何选择分布式事务形态(TCC,SAGA,2PC,基于消息最终一致性等等)

    各种形态的分布式事务 分布式事务有多种主流形态,包括: 基于消息实现的分布式事务 基于补偿实现的分布式事务 基于TCC实现的分布式事务 基于SAGA实现的分布式事务 基于2PC实现的分布式事务 这些形 ...

  6. java应用破解之破解 jeb mips 2.3.3

    前言 jeb 的新版支持 mips的反编译 ,于是去官网申请一个试用版,试用版的限制还是比较多的,比如 使用时间验证,没法复制粘贴 等,于是想尝试看看能否破解,同时填了 java破解 这个坑. 修改版 ...

  7. C语言图形编程

    四.图形和图像函数(一) 像素函数    56. putpiel() 画像素点函数    57. getpixel()返回像素色函数(二) 直线和线型函数    58. line() 画线函数    ...

  8. 浅谈maven中的scope,systempath

    scope  maven中scope的默认值是compile scope的分类 1)compile 默认是compile.compile表示被依赖项目需要参与当前项目的编译,包括后续的测试,运行周期也 ...

  9. OpenStreetMap、googleMap等经纬度和行列号之间相互转化(python,JavaScript,php,Java,C#等)

    python: # OpenStreetMap经纬度转行列号 def deg2num(lat_deg, lon_deg, zoom): lat_rad = math.radians(lat_deg) ...

  10. Week8——hashcode()和equals()方法

    equals()方法  Object类中的equals方法和“==”是一样的,没有区别,即俩个对象的比较是比较他们的栈内存中存储的内存地址.而String类,Integer类等等一些类,是重写了equ ...