微信群如何推广网站建设/站长工具查询

微信群如何推广网站建设,站长工具查询,做北美市场用哪个网站,优秀画册设计欣赏一、Docker介绍Docker是用Go语言编写基于Linux操作系统的一些特性开发的,其提供了操作系统级别的抽象,是一种容器管理技术,它隔离了应用程序对基础架构(操作系统等)的依赖。相较于虚拟机而言,Docker共享的是…

一、Docker介绍


Docker是用Go语言编写基于Linux操作系统的一些特性开发的,其提供了操作系统级别的抽象,是一种容器管理技术,它隔离了应用程序对基础架构(操作系统等)的依赖。相较于虚拟机而言,Docker共享的是宿主机的硬件资源,使用容器来提供独立的运行环境来运行应用。虚拟机则是基于Supervisor(虚拟机管理程序)使用虚拟化技术来提供隔离的虚拟机,在虚拟机的操作系统上提供运行环境!虽然两者都提供了很好的资源隔离,但很明显Docker的虚拟化开销更低!

Docker涉及了三个核心概念:Register、Image、Container。

1. Registry:仓库。用来存储Docker镜像,比如Docker官方的Docker Hub就是一个公开的仓库,在上面我们可以下载我们需要的镜像。

2. Image:镜像。开发人员创建一个应用程序或服务,并将它及其依赖关系打包到一个容器镜像中。镜像是应用程序的配置及其依赖关系的静态形式。

3. Container:容器。Container是镜像的运行实例,它是一个隔离的、资源受控的可移植的运行时环境,其中包含操作系统、需要运行的程序、运行程序的相关依赖、环境变量等。

它们三者的相互作用关系是:

当我们执行Docker pull或Docker run命令时,若本地无所需的镜像,那么将会从仓库(一般为DockerHub)下载(pull)一个镜像。Docker执行run方法得到一个容器,用户在容器里执行各种操作。Docker执行commit方法将一个容器转化为镜像。Docker利用login、push等命令将本地镜像推送(push)到仓库。其他机器或服务器上就可以使用该镜像去生成容器,进而运行相应的应用程序。

640?wx_fmt=png

二、Docker安装


1、使用yum源安装, 由于国内访问官方源慢,此处添加阿里的源

> wget -P /etc/yum.repos.d/  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

> yum install -y docker-ce

2、启动Docker

//启动 Docker CE

> systemctl start docker

> systemctl enable docker

//查看Docker状态

> systemctl status docker

//查看docker版本

> docker -v

3、测试Docker是否正确安装,执行命令:

> docker run hello-world

640?wx_fmt=pnga、当执行 docker run hello-world 时,docker首先会从本地找 hello-world 的镜像,如果本地没有,它将会从默认的镜像仓库Docker Hub上拉取镜像。镜像拉取到本地后,就实例化镜像得到容器,输出Hello from Docker!。

b、Docker Engine提供了Docker的核心技术: 图像(images)和容器(containers). 在安装教程的最后一步, 你运行了Engine命令docker run hello-world. 这一个命令,使Engine完成了Docker的核心任务, 该命令包含了三部分.

640?wx_fmt=png

c、一个容器是一个精简版的Linux操作系统, 一个镜像是加载到这个容器的软件, 当你运行这个命令后, Engine会做下面的事情:

  • 检查是否存在hello-world这个软件镜像 

  • 从Docker Hub下载镜像(稍后了解Docker Hub) 

  • 加载这个镜像到容器中, 并运行它

三、.Netcore项目在Docker中运行


1、拉取microsoft/dotnet镜像,等几分钟后即可安装完毕,执行docker images可以看到本地已经包含microsoft/dotnet镜像

> docker pull microsoft/dotnet

2、运行microsoft/dotnet镜像, 使用docker run <image>可以启动镜像,通过指定参数-it以交互模式(进入容器内部)启动。依次执行以下命令:

> docker run -it microsoft/dotnet    //启动一个dotnet镜像

> dotnet new mvc -n mvctest    //创建项目名为mvctest的.NET Core MVC项目

> cd mvctest    //进入mvctest文件夹

> dotnet run    //启动.NET Core MVC项目

运行结果如下图所示:

640?wx_fmt=png

键盘按住Ctrl+C即可关闭应用,输入exit即可退出当前容器

以上简单的几步就完成了一个.NET Core MVC项目的创建和运行,这个时候你可能会好奇,Linux宿主机上并没有安装.NET Core SDK啊,MVC项目是如何创建的呢?这就是Docker神奇的地方,我们从镜像仓库中拉取的dotnet镜像,包含了创建、构建、运行.NET Core项目所需的一切依赖和运行时环境。

退出容器之后,执行find -name mvctest(查找mvctest文件),我们发现并没有找到。这说明我们刚才创建的.NET Core MVC项目是在容器内部创建的,是与宿主机完全隔离的。这个时候你可能会想,每次都要在容器中安装源代码太不方便了,我们能不能让容器运行我们宿主机的源代码项目?嗯,这是个好问题。当然是可以实现的,下面我们就来解答这个问题。

 

四、 宿主机上创建.NET Core 项目


为了在宿主机上创建.NET Core 项目,这个时候我们就需要在Linux宿主机上安装.NET Core SDK

1、宿主机安装.NET Core SDK

添加yum源:sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

开始安装:yum install -y dotnet-sdk-2.1

检测安装版本,如下图表示安装正确

640?wx_fmt=png

2、创建.NET Core项目

> mkdir data

> cd data

> dotnet new mvc -n mvctest    //创建项目名为mvctest的.NET Core MVC项目

> cd mvctest    //进入mvctest文件夹

> dotnet run    //启动.NET Core MVC项目

注:在Program.cs文件中加入代码.UseUrls("http://*:5000"),在浏览器中访问如下图:


640?wx_fmt=png

下一步我们就将该目录下的源码项目通过挂载的方式共享到容器中去 

3、挂载宿主机项目到容器中

在启动Docker镜像时,Docker允许我们通过使用-v参数挂载宿主机的文件到容器的指定目录下。换句话说,就相当于宿主机共享指定文件供容器去访问。废话不多说,实践出真知

// 命令中的`\`结合`Enter`键构成换行符,允许我们换行输入一个长命令。

> docker run -it \

> -v /data/mvctest/:/app \

> microsoft/dotnet:latest

上面的命令就是把/data/mvctest/文件夹下的文件挂载到容器的\app目录下

640?wx_fmt=png

从上面的执行结果来看,容器内部中的app目录下包含了宿主机上的源码项目。

上面说到是以共享的形式,而不是容器拥有一份宿主机目录的拷贝,意味着,在宿主机上对目录的更改,会即时反应到容器中。但反过来,容器中对共享目录的更改,不会反应到宿主机上,不然就打破了容器具有的隔离特性。

通过这样一个简单场景,聪明的你是否会联想到这一场景在我们日常编码的应用之处呢?是的,我们可以用来持续构建(CI)。基本思路是,通过git clone源码到宿主机上,然后将源码目录挂载到容器中去进行构建

 

4、借助Dockerfile文件

Dockerfile用来定义你将要在容器中执行的系列操作。我们来创建第一个Dockerfile

> cd /data/mvctest/    //确保进入我们创建的MVC项目目录中去

> touch Dockerfile    //使用touch命令创建Dockerfile

> vi Dockerfile    //使用vi命令编辑Dockerfile

进入VI编辑界面后,复制以下代码,使用shift + Ins命令即可粘贴。然后按ESE退出编辑模式,按shift + :,输入wq即可保存并退出编辑界面

FROM microsoft/dotnet:latest

WORKDIR /app

COPY .  /app

RUN dotnet restore

EXPOSE 5000

ENV ASPNETCORE_URLS http://*:5000

ENTRYPOINT ["dotnet","run"]

上面的命令我依次解释一下:

  • 使用FROM指定容器使用的镜像

  • 使用WORKDIR指定工作目录

  • 使用COPY指令,复制当前目录(其中.即代表当前目录)到容器中的/app目录下

  • 使用RUN命令指定容器中执行的命令

  • 使用EXPOSE指定容器暴露的端口号

  • 使用ENV指定环境参数,上面用来告诉.NETCore项目在所有网络接口上监听5000端口

  • 使用ENTRYPOINT制定容器的入口点

Dockerfile就绪,我们就可以将我们当前项目打包成镜像以分发部署。

使用docker build -t <name> <path>指令打包镜像:

> docker build -t mvctest.web .

640?wx_fmt=png

以上命令就是告诉docker将当前目录打包成镜像,并命名为hellodocker.web。命令执行完毕,输入docker images即可看到我们新打包的镜像

640?wx_fmt=png

镜像创建完毕我们就可以直接运行了:

> docker run -d -p 80:5000 mvctest.web

上面的指令就是运行我们新打包的镜像,并通过-p参数映射容器的5000到宿主机的80端口,其中-d参数告诉docker以后台任务形式运行镜像。因为80是默认的web端口,所以我们通过浏览器直接访问ip即可访问到我们容器中运行的MVC网站

640?wx_fmt=png

至此,我们借助Docker就完美的完成了.NET Core项目的容器化部署,后续我们将镜像部署在其它的机器上

五、推送镜像到仓库


请自行到Docker Hub注册个账号,然后我们把本地打包的镜像放到自己账号下的仓库下

1、注册完毕后,执行命令

> docker login

640?wx_fmt=png

2、再执行命令

> docker push

640?wx_fmt=png

推送失败,提示我们的镜像命名不符规范。原来在推送之前要把镜像按<user>/<repo>格式来命名。那如何重命名呢,我们用打标签的方式重命名

以上信息表示推送成功了,查看自己的仓库,如下图:

640?wx_fmt=png

最后我们换一台机器,我们直接执行以下命令,就完成了多重部署

> docker run -p 8081:5000 79522860/mvcdemo.web

640?wx_fmt=png


以上自己的镜像仓库做好了,是不是很方便,如果结合业务,会发现需要的镜像会比较多,分布式部署容器还要一个个启动容器?不,其它我们还可以通过配置文件来一键部署镜像与容器,一下篇我们会讲到 

六、Docker常用命令

1、容器相关操作

> docker ps    //查看当前正在运行的容器

> docker ps -a    //查看所有容器的状态

> docker start/stop id/name    //启动/停止某个容器

> docker attach id    //进入某个容器(使用exit退出后容器也跟着停止运行)

> docker rm id/name    //删除某个容器,若正在运行,需要先停止

> docker rm $(docker ps -a -q)    //删除已经停止的容器

> docker logs -f hello-world    //查看指定容器的日志记录

> docker run -it --name hello_001 hello-world    //创建一个容器,并指定标签

-i:允许我们对容器内的 (STDIN) 进行交互  

-t:在新容器内指定一个伪终端或终端  

--name:是给容器起一个名字,可省略,省略的话docker会随机产生一个名字

 

2、镜像相关操作

> docker images    //查看本地镜像

> docker rmi id/name    //删除某个镜像,如果不指定tag,默认删除的是latest标签

> docker rmi $(docker images -q)    //删除所有镜像,小心

> docker rmi $(docker images -f "dangling=true" -q)    //删除所有无名称镜像(可能是构建过程中产生的中间镜像)

> docker start/stop id/name    //启动/停止某个容器

> docker attach id    //进入某个容器(使用exit退出后容器也跟着停止运行)

通过ID tag镜像,下面是tag一个id为0e5574283393的本地镜像到“fedora”存储库,tag名称version1.0

> docker tag 0e5574283393 fedora/httpd:version1.0

通过名称tag镜像, 使用名称“httpd” tag本地镜像到存储库”fedora”,且其tag名为version1.0

> docker tag httpd fedora/httpd:version1.0

注意由于引用httpd的tag名称没有指定,默认引用httpd:latest

通过名称和tag名称 tag一个镜像,为名称为httpd和tag名称为test的本地镜像做标签,其存储库为fedora,标签名为version1.0.test

> docker tag httpd:test fedora/httpd:version1.0.test

tag一个镜像到私有的存储库, 推送一个镜像到一个私有的registry,而不是公共的docker registry,必须指定一个registry主机名和端口来tag此镜像

> docker tag 0e5574283393 myregistryhost:5000/fedora/httpd:version1.0

 

3、卸载 Docker CE

a、卸载Docker包

> yum remove docker-ce

b、主机上的images, containers, volumes或自定义配置文件不会自动删除。 删除所有mages, containers, volumes命令

>  rm -rf /var/lib/docker

 

六、额外知识普及

1、docker官方镜像库地址

https://hub.docker.com/r/microsoft/dotnet/

2、microsoft/dotnet 镜像版本之间的区别

a、microsoft/dotnet:<version>-sdk(microsoft/dotnet:2.1-sdk)

此映像包含带有 .NET Core 和命令行工具 (CLI) 的 .NET Core SDK。 此映像将映射到开发方案。 可使用此映像进行本地开发、调试和单元测试。 此映像还可用于生成方案。 使用 microsoft/dotnet:sdk 始终都提供最新版本。

b、microsoft/dotnet:<version>-runtime(microsoft/dotnet:2.1-runtime)

此映像包含 .NET Core(运行时和库),并且针对在生产环境中运行 .NET Core 应用进行了优化。

c、microsoft/dotnet:<version>-runtime-deps

runtime-deps 映像包括具有 .NET Core 所需的所有本机依赖项的操作系统。 此映像适用于独立应用程序。

 

3、镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。

新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。

请在该配置文件中加入(没有该文件的话,请先建一个):

{

"registry-mirrors": ["http://hub-mirror.c.163.com"]

}

#刷新配置文件并重启docker

systemctl daemon-reload

systemctl restart docker

相关文章:

  • asp.net core 发布到 docker 容器时文件体积过大及服务端口的配置疑问

  • .NET Core微服务之基于Jenkins+Docker实现持续部署(Part 1)

  • .NET Core微服务之ASP.NET Core on Docker

  • 通过 Docker Compose 组合 ASP NET Core 和 SQL Server

  • 在Docker中部署Asp.net core2.1以及修改发布

  • ASP.NET Core 2.1 使用Docker运行

  • ASP.NET Core & Docker 实战经验分享

  • VSTS + XX云服务器构建netcore+docker持续集成交付部署

  • 玩Docker只要浏览器就够了,PWD是个神奇的网站

  • ASP.NET Core + Docker + Jenkins + gogs + CentOS 从零开始搭建持续集成

  • Docker容器中开始.NETCore之路

原文地址: https://blog.csdn.net/hailang2ll/article/details/82184010


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记一次.net core 集成vue 实践

简介以前我们总是喜欢用服务端渲染前端&#xff08;虽然也有htmlajax这种做法&#xff09;&#xff0c;后来node诞生了&#xff0c;前端工具链&#xff08;不如说生态&#xff09;诞生了&#xff0c;大家都开始了前端的重构之路&#xff0c;本文将以一简单案例介绍下我们是如何…

AspNetCore中使用Ocelot之 IdentityServer4

前言&#xff1a;Ocelot网关是基于AspNetCore开发的可扩展的高性能的企业级Api网关&#xff0c;目前已经基于2.0 升级版本升级&#xff0c;在使用AspNetCore 开发的时候可以使用2.0版本了&#xff0c;开源项目Ocelot 张大队长是主力的参与人员&#xff0c;以前提起张大队前面都…

Nginx主配置文件详解【笔记】

1 Nginx配置文件目录结构 最近使用Nginx做负载均衡&#xff0c;顺便整理Nginx配置文件笔记如下所述&#xff0c;本文主要梳理主配置文件各属性的作用。使用yum安装好Nginx后&#xff0c;可以在默认路径&#xff08;/etc/nginx&#xff09;看到如下配置文件。 /etc/nginx/ ├─…

微服务介绍及Asp.net Core实战项目系列之微服务介绍

0、目录整体架构目录&#xff1a;ASP.NET Core分布式项目实战-目录一、微服务选型在做微服务架构的技术选型的时候&#xff0c;以“无侵入”和“社区活跃”为主要的考量点&#xff0c;将来升级为原子服务架构、量子服务架构的时候、甚至恢复成单体架构的时候&#xff0c;代价最…

【矩阵乘法】生成树计数(luogu 2109/NOI 2007)

生成树计数 luogu 2109 题目大意 有n个排成一列的点&#xff0c;把距离不超过k的点之间连边&#xff0c;问这个图的生成树个数 输入样例 3 5输出样例 75样例说明 样例对应的图如下&#xff1a; 数据范围 解题思路 因为n十分大&#xff0c;不能直接2^m暴力枚举&#x…

你需要知道的这几种 asp.net core 修改默认端口的方式

一般情况下&#xff0c;aspnetcore发布后的默认端口是5000&#xff0c;这个大家都知道&#xff0c;而且默认骨架代码中没有看到任何让你输入的ip地址和端口号&#xff0c;但作为程序员的我们&#xff0c;不希望被框架所管制&#xff0c;那如何实现默认端口的修改呢&#xff1f;…

牛客网【每日一题】5月18日 「土」秘法地震

链接&#xff1a; 文章目录题目描述题解&#xff1a;代码&#xff1a;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 帕秋莉掌握了一种土属性魔法 这种魔法可以在一片kk大小…

AspNetCore 中使用 InentityServer4(2)

基于上一篇文章 实现对IdnetityServer4 服务的使用1&#xff1a;添加接口解决方案&#xff0c;并且使接口受认证服务的保护&#xff1a;首先在解决方案中添加Api项目如下图所示&#xff1a;在API项目中添加Nuget 引用 如下图所示&#xff1a;Install-Package IdentityServer4.A…

Visual Studio 2017 15.8概览

Microsoft正式发布VS2017的第八次更新&#xff0c;即15.8。15.8提供了今年夏天预览的大量新特性&#xff0c;包括Code Cleanup、IDE支持多重查补&#xff08;Multiple Caret&#xff09;、Visual Studio Code和ReSharper快捷键设置等。各类开发人员均可受益于这些已供使用的新特…

利用.NET Core类库System.Reflection.DispatchProxy实现简易Aop

Aop即是面向切面编程&#xff0c;众多Aop框架里Castle是最为人所知的&#xff0c;另外还有死去的Spring.NET&#xff0c;当然&#xff0c;.NET Core社区新秀AspectCore在性能与功能上都非常优秀&#xff0c;已经逐渐被社区推崇和有越来越多的人使用。感谢柠檬同学的礼物&#x…

当我们谈高性能时,我们谈些什么?(送书活动)

网站越快&#xff0c;用户的黏性就越高&#xff1b;网站越快&#xff0c;用户忠诚度更高&#xff1b;网站越快&#xff0c;用户转化率越高。简言之&#xff0c;速度是关键。——《Web 性能权威指南》显然&#xff0c;高性能意味着“快”。但对快的定义&#xff0c;在不同的系统…

Asp.net Core 2.1新功能Generic Host(通用主机)深度学习

什么是Generic Host ?这是在Asp.Net Core 2.1加入了一种新的Host&#xff0c;现在2.1版本的Asp.Net Core中&#xff0c;有了两种可用的Host。Web Host –适用于托管Web程序的Host,就是我们所熟悉的在Asp.Net Core应用程序的Mai函数中用CreateWebHostBuilder创建出来的常用的We…

520 钻石争霸赛 题解

说好的钻石难度&#xff0c;结果本人菜的一地。。只有88分。。。。 文章目录7-1 考试周7-2 真的恭喜你7-3 平均成绩7-4 古风AB难度开始上升7-5 猜近似数字7-6 随机输一次7-7 阶乘的非零尾数7-8 三足鼎立前四题十分钟AC后两题二十分钟自闭第五题玄学卡点不知为何7-1 考试周 模拟…

.NET Core 跨平台物联网框架 ServerSuperIO.Core,一套设备驱动通吃嵌入式、上位机、云服务...

一、概述我们的大数据平台&#xff08;云&#xff09;平台的数据接收服务基于ServerSuperIO开发&#xff0c;因为集成的功能比较多&#xff0c;无法实现跨平台&#xff0c;现在跑在Windows下。但是云端体系化、标准化建设&#xff0c;跨平台是必走的技术路线。在ServerSuperIO基…

asp.net core添加全局异常处理及log4net、Nlog应用

一、介绍此篇文章将会介绍项目的全局异常收集以及采用log4net或者NLog记录。众所周知&#xff0c;一旦自己的项目报错&#xff0c;如果没有进行处理都是显示不友好的&#xff0c;有得甚至直接爆出错误页面&#xff0c;看的也是很奇怪。为了避免出现这样的错误以及在错误出现的时…

牛客网 【每日一题】5月20日题目 简单瞎搞题

比赛链接 文章目录题目描述题解&#xff1a;代码&#xff1a;题目描述 输入描述: 第一行一个数 n。 然后 n 行&#xff0c;每行两个数表示 li,ri。 输出描述: 输出一行一个数表示答案。 示例1 输入 5 1 2 2 3 3 4 4 5 5 6输出 26备注: 1 ≤ n , li , ri ≤ 100 题解&#xf…

ASP.NET Core 2.0利用MassTransit集成RabbitMQ

在ASP.NET Core上利用MassTransit来集成使用RabbitMQ真的很简单&#xff0c;代码也很简洁。近期因为项目需要&#xff0c;我便在这基础上再次进行了封装&#xff0c;抽成了公共方法&#xff0c;使得使用RabbitMQ的调用变得更方便简洁。那么&#xff0c;就让咱们来瞧瞧其魅力所在…

《通过C#学Proto.Actor模型》之 HelloWorld

在微服务中&#xff0c;数据最终一致性的一个解决方案是通过有状态的Actor模型来达到&#xff0c;那什么是Actor模型呢&#xff1f;Actor是并行的计算模型&#xff0c;包含状态&#xff0c;行为&#xff0c;并且包含一个邮箱&#xff0c;来异步处理消息。关于Actor的介绍可参考…

[XSY] 计数(DP,NTT,分治)

计数 考虑转化题目&#xff0c;变为网格上有若干个点&#xff0c;要从(0,0)(0,0)(0,0)走到(n,an1)(n,a_{n1})(n,an1​) &#xff0c;每一步只能往右走一步或往上走一步&#xff0c;且若当前在(i,j)(i,j)(i,j) &#xff0c;必须满足0≤j≤ai10\leq j\leq a_{i1}0≤j≤ai1​&…

.Net Core应用框架Util介绍(一)

距离上次发文&#xff0c;已经过去了三年半&#xff0c;这几年技术更新节奏异常迅猛&#xff0c;.Net进入了跨平台时代&#xff0c;前端也被革命性的颠覆。回顾2015年&#xff0c;正当我还沉迷于JQuery EasyUi的封装时&#xff0c;突然意识到技术已经过时。JQuery在面对更加复…