1.什么是Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

2.为什么使用Docker

使用Docker容器技术可以再全平台发布应用和服务。总所周知,.Net平台一直因为不开源以及不能跨平台诟病。小编又是一名忠实的微软粉,可是不能使用Linux作为实体服务器的.Net平台在现在分布式系统遍地,微服务纵横的天下,真的是举步维艰。还好有个Docker容器技术,解决这个问题,所以小编靠闲暇时间填了不少坑,也是部署出来了,这里跟大家分享一下。

PS:为什么不使用其他的方式(依赖框架等)来在linux上发布.NetCore应用。一次配置全平台都可以用呀!这还用说啊,帅啊!!!!

3.安装Docker

安装Docker有很多方式,小编也试了好几种,但是因为国内网速的限制有些方式会很慢,甚至因为太慢暂停下载。而有些方式安装完却有很多很多的问题,这里小编也把自己遇到的坑分享给大家。

这里给大家分享两种安装方式,实测有效。Docker分两个版本,Docker-ce和Docker-ee,后者是收费的,小编这里装ce版本。

(1)使用yum安装

安装一些必要的系统工具:PS:sudo表示以管理员权限执行,如是root用户(最高权限)可不输入

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息:

$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存:

$ sudo yum makecache fast

安装 Docker-ce:

$ sudo yum -y install docker-ce

启动 Docker 后台服务

$ sudo systemctl start docker

测试运行 hello-world

$ docker run hello-world

(2)使用脚本安装 Docker    吃网速,网速快可选择

确保 yum 包更新到最新。

$ sudo yum update

执行 Docker 安装脚本。

$ curl -fsSL https://get.docker.com -o get-docker.sh

$ sudo sh get-docker.sh

启动 Docker 进程。

$ sudo systemctl start docker

验证 docker 是否安装成功并在容器中执行一个测试的镜像

$ sudo docker run hello-world

(3)Docker常用命令

$ docker pull 镜像名                //拉取镜像,我要部署的应用可能会需要依赖一些基础镜像

$ docker build 自定义镜像名 .                //把自己的项目编译成镜像,部署到Docker容器中,别忘了这个‘.’!!!

$ docker images                //查看所有镜像

$ docker run --name=容器名 -p 主机环境端口:Docker容器映射端口 -d  镜像名            //运行镜像

$ docker ps -a                    // 查看容器运行状态,up运行成功

$ docker logs -t -f 容器名       //查看运行日志,可以从中看到出现的问题

4.部署.NetCore应用到Docker

(1)新建一个 ASP.NET Core 3.0 项目

 

然后运行一下项目,确保我们刚刚建立的项目可以正常运行

(2)编写Dockerfile,并设置属性复制到生成文件

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim

RUN cd /usr/local/src

RUN mkdir MyTestApi

WORKDIR /usr/local/src/MyTestApi

COPY . .

EXPOSE 80

ENTRYPOINT ["dotnet", "MyTestApi.dll"]

(3)发布项目

 

(4)将Dockerfile文件复制到发布成功的目录,并全部上传到服务器

 

(5)构建Docker镜像

进入到发布文件目录(Dockerfile文件所在目录),执行命令便可打包镜像

$ docker pull microsoft/dotnet:3.0-aspnetcore-runtime        //拉取基础镜像

$ docker build -t mytestapi .            //构建镜像  别忘了这个点“.”!!!

$ docker run --name=mytestapi -p 80:80 mytestapi        //运行镜像

出现一长串字符串,便是表示运行成功

 

5.部署.NetCore到Docker遇到的问题

 
 

如果更新.net core代码怎么办,使用暴力方法:

进入目录
cd /usr/local/src/mytestapi

停止
docker stop mytestapi

删除
docker container rm mytestapi

编译
docker build -t mytestapi .

运行
docker run --name=mytestapi -p 80:80 mytestapi

6.总结

到这里呐今天的内容就到此结束了,感觉大家翻阅。

Docker安装及部署实例.Net Core的更多相关文章

  1. ubuntu docker安装与部署java,mysql,nginx镜像

    docker 安装与部署java,mysql,nginx docker 配置 安装docker $ sudo apt-get remove docker docker-engine docker.io ...

  2. Docker + Jenkins 持续部署 ASP.NET Core 项目

    Docker 是个好东西,特别是用它来部署 ASP.NET Core Web 项目的时候,但是仅仅的让程序运行起来远远不能满足我的需求,如果能够像 DaoCloud 提供的持续集成服务那样,检测 gi ...

  3. docker 安装jenkins 发布 asp.net core 2.0

    安装Docker 其实安装Docker的过程,大家可以到Docker官网找到自己相对应的安装文档进行安装,Docker区分CE和EE的两个版本,具体这两个版本有什么区别,大家自行查阅相关资料,这里不再 ...

  4. 在 Docker 中手工部署 ASP.NET Core 应用

    另一篇:在 Visual Studio 中部署 ASP.NET Core 应用  操作步骤 1. 安装 Docker For Windows(安装之前 Windows 需要开启 Hyper-V 虚拟机 ...

  5. Docker安装与部署

    安装Docker: 查看你当前的内核版本: uname -r 更新yum包: sudo yum update 卸载旧版本(如果安装过旧版本的话): sudo yum remove docker doc ...

  6. docker安装tomcat&部署javaweb程序

    一.docker定制简单的java-web应用镜像 网址: 1.jdk下载网址:https://www.oracle.com/technetwork/java/javase/downloads/jdk ...

  7. ASP.NET Core 实战:使用 Docker 容器化部署 ASP.NET Core + MySQL + Nginx

    一.前言 在之前的文章(ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路)中,我介绍了如何在 Linux 环境中安装 .NET Core SDK / .NET Core ...

  8. Docker 安装并部署Tomcat、Mysql8、Redis

    1.  安装前检查 1 #ContOS 7安装Docker系统为64位,内核版本为3.10+ 2 lsb_release -a 3 4 uname -r 5 6 #更新yum源 7 yum -y up ...

  9. centos7+docker 安装和部署crawlab分布式爬虫平台,并使用docker-compose管理docker

    1.先决条件centos7+docker最新版本 sudo yum updat 2.配置一下镜像源,创建/etc/docker/daemon.conf文件,在其中输入如下内容 { "regi ...

随机推荐

  1. php手动实现ip2long和long2ip

    php手动实现ip2long和long2ip /** * 测试 */ public function testipAction() { $ip = '10.58.101.175'; echo ip2l ...

  2. spring整合apache-shiro的简单使用

    这里不对shiro进行介绍,介绍什么的没有意义 初学初用,不求甚解,简单使用 一.导入jar包(引入坐标) <!--shiro和spring整合--> <dependency> ...

  3. evpp tcpclient

    重点函数讲解①:消息回调函数——void evpp::TCPClient::SetMessageCallback(const evpp::MessageCallback& cb) 注:设置消息 ...

  4. word2007导出pdf带书签

    1.关闭所有word文档 2.下载Word_2007_SaveAsPDFandXPS_12.0_XiaZaiBa.exe安装 3.如果出错请重启PC

  5. DevExpress v18.2版本亮点——Analytics Dashboard篇(二)

    行业领先的.NET界面控件——DevExpress v18.2版本亮点详解,本文将介绍了DevExpress Analytics Dashboard v18.2 的版本亮点,新版30天免费试用!点击下 ...

  6. 什么是LMDB闪电记忆映射数据库

    LightningMemory-MappedDatabase(LMDB)是一个软件库,它以键值存储的形式提供高性能的嵌入式事务数据库.LMDB是用C语言编写的,具有多种编程语言的API绑定.LMDB将 ...

  7. CSS3——PC以及移动端页面适配方法(流体布局)

    流体布局:使用百分比来设置元素的宽度,元素的高度按照实际值. 但是流体布局中存在一个边框的问题,元素的边线无法计入百分比. 两种解决办法: 1)width:calc(20% - 4px) 2)widt ...

  8. CSS3画五角星和六角星

    最终想要实现的效果 一.五角星 在画五角星之前首先分析这个五角星是如何实现,由哪几个部分构成的,示意图如下: 三个顶角向上的三角形,通过设置旋转和定位相互重叠和拼接实现最终的五角星效果. 为了语义化和 ...

  9. bootstrap datetimepicker 位置错误

    bootstrap datetimepicker 位置错误,大致问题跟其他网友描述的一样,页面自动出滚动条,然后datetimepicker飘到页脚,网上的方法都是修改place方法里面的555行左右 ...

  10. All men are brothers

    All men are brothers 牛客多校第九场E 给定n个人,起初互不认识 然后m各阶段 每个阶段有两个人x.y认识 求每个阶段选出四个人互不认识的方式 并查集 #include<bi ...