肇庆网站制作,百度seo收录,优秀大校网站,如何新建自己的网站一、Docker介绍Docker是用Go语言编写基于Linux操作系统的一些特性开发的#xff0c;其提供了操作系统级别的抽象#xff0c;是一种容器管理技术#xff0c;它隔离了应用程序对基础架构#xff08;操作系统等#xff09;的依赖。相较于虚拟机而言#xff0c;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到仓库。其他机器或服务器上就可以使用该镜像去生成容器进而运行相应的应用程序。二、Docker安装1、使用yum源安装 由于国内访问官方源慢此处添加阿里的源 wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce2、启动Docker//启动 Docker CE systemctl start docker systemctl enable docker//查看Docker状态 systemctl status docker//查看docker版本 docker -v3、测试Docker是否正确安装执行命令 docker run hello-worlda、当执行 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的核心任务, 该命令包含了三部分.c、一个容器是一个精简版的Linux操作系统, 一个镜像是加载到这个容器的软件, 当你运行这个命令后, Engine会做下面的事情检查是否存在hello-world这个软件镜像 从Docker Hub下载镜像(稍后了解Docker Hub) 加载这个镜像到容器中, 并运行它三、.Netcore项目在Docker中运行1、拉取microsoft/dotnet镜像等几分钟后即可安装完毕执行docker images可以看到本地已经包含microsoft/dotnet镜像 docker pull microsoft/dotnet2、运行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项目运行结果如下图所示键盘按住CtrlC即可关闭应用输入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 SDK1、宿主机安装.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检测安装版本如下图表示安装正确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)在浏览器中访问如下图下一步我们就将该目录下的源码项目通过挂载的方式共享到容器中去 3、挂载宿主机项目到容器中在启动Docker镜像时Docker允许我们通过使用-v参数挂载宿主机的文件到容器的指定目录下。换句话说就相当于宿主机共享指定文件供容器去访问。废话不多说实践出真知// 命令中的\结合Enter键构成换行符允许我们换行输入一个长命令。 docker run -it \ -v /data/mvctest/:/app \ microsoft/dotnet:latest上面的命令就是把/data/mvctest/文件夹下的文件挂载到容器的\app目录下从上面的执行结果来看容器内部中的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:latestWORKDIR /appCOPY . /appRUN dotnet restoreEXPOSE 5000ENV ASPNETCORE_URLS http://*:5000ENTRYPOINT [dotnet,run]上面的命令我依次解释一下使用FROM指定容器使用的镜像使用WORKDIR指定工作目录使用COPY指令复制当前目录其中.即代表当前目录到容器中的/app目录下使用RUN命令指定容器中执行的命令使用EXPOSE指定容器暴露的端口号使用ENV指定环境参数上面用来告诉.NETCore项目在所有网络接口上监听5000端口使用ENTRYPOINT制定容器的入口点Dockerfile就绪我们就可以将我们当前项目打包成镜像以分发部署。使用docker build -t name path指令打包镜像 docker build -t mvctest.web .以上命令就是告诉docker将当前目录打包成镜像并命名为hellodocker.web。命令执行完毕输入docker images即可看到我们新打包的镜像镜像创建完毕我们就可以直接运行了 docker run -d -p 80:5000 mvctest.web上面的指令就是运行我们新打包的镜像并通过-p参数映射容器的5000到宿主机的80端口其中-d参数告诉docker以后台任务形式运行镜像。因为80是默认的web端口所以我们通过浏览器直接访问ip即可访问到我们容器中运行的MVC网站至此我们借助Docker就完美的完成了.NET Core项目的容器化部署后续我们将镜像部署在其它的机器上五、推送镜像到仓库请自行到Docker Hub注册个账号然后我们把本地打包的镜像放到自己账号下的仓库下1、注册完毕后执行命令 docker login2、再执行命令 docker push推送失败提示我们的镜像命名不符规范。原来在推送之前要把镜像按user/repo格式来命名。那如何重命名呢我们用打标签的方式重命名以上信息表示推送成功了查看自己的仓库如下图最后我们换一台机器我们直接执行以下命令就完成了多重部署 docker run -p 8081:5000 79522860/mvcdemo.web以上自己的镜像仓库做好了是不是很方便如果结合业务会发现需要的镜像会比较多分布式部署容器还要一个个启动容器不其它我们还可以通过配置文件来一键部署镜像与容器一下篇我们会讲到 六、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 danglingtrue -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.testtag一个镜像到私有的存储库 推送一个镜像到一个私有的registry而不是公共的docker registry必须指定一个registry主机名和端口来tag此镜像 docker tag 0e5574283393 myregistryhost:5000/fedora/httpd:version1.0 3、卸载 Docker CEa、卸载Docker包 yum remove docker-ceb、主机上的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-sdkmicrosoft/dotnet:2.1-sdk此映像包含带有 .NET Core 和命令行工具 (CLI) 的 .NET Core SDK。 此映像将映射到开发方案。 可使用此映像进行本地开发、调试和单元测试。 此映像还可用于生成方案。 使用 microsoft/dotnet:sdk 始终都提供最新版本。b、microsoft/dotnet:version-runtimemicrosoft/dotnet:2.1-runtime此映像包含 .NET Core运行时和库并且针对在生产环境中运行 .NET Core 应用进行了优化。c、microsoft/dotnet:version-runtime-depsruntime-deps 映像包括具有 .NET Core 所需的所有本机依赖项的操作系统。 此映像适用于独立应用程序。 3、镜像加速鉴于国内网络问题后续拉取 Docker 镜像十分缓慢我们可以配置加速器来解决我使用的是网易的镜像地址http://hub-mirror.c.163.com。新版的 Docker 使用 /etc/docker/daemon.jsonLinux 或者 %programdata%\docker\config\daemon.jsonWindows 来配置 Daemon。请在该配置文件中加入没有该文件的话请先建一个{registry-mirrors: [http://hub-mirror.c.163.com]}#刷新配置文件并重启dockersystemctl daemon-reloadsystemctl restart docker相关文章asp.net core 发布到 docker 容器时文件体积过大及服务端口的配置疑问.NET Core微服务之基于JenkinsDocker实现持续部署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云服务器构建netcoredocker持续集成交付部署玩Docker只要浏览器就够了PWD是个神奇的网站ASP.NET Core Docker Jenkins gogs CentOS 从零开始搭建持续集成Docker容器中开始.NETCore之路原文地址: https://blog.csdn.net/hailang2ll/article/details/82184010.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com