接触 docker 有段时间了,发现docker这个东西,真是越用越爽。

那就从零开始跑一个 docker simple 。

方法一:

步骤一: dotnet new mvc --name myweb //创建一个.net core 的mvc 项目名称为myweb

步骤二:cd myweb //进入目录

步骤三: dotnet restore //还原项目

步骤四:dotnet publish -c release -o publish //发布项目到publish文件夹中去。

步骤五:touch Dockerfile//创建dockerfile 文件

步骤六: vim Dockerfile //编辑docker file

    FROM microsoft/aspnetcore
WORKDIR /app //设置当前目录为 app
COPY /publish . // 将本地publish 文件夹中的文件 复制到当前目录(app)中
ENTRYPOINT ["dotnet","myweb.dll"]

步骤七: docker build -t webapp . //生成docker镜像 名称为webapp

步骤八:docker run -d -p 5000:80 --name webapp webapp //启动镜像,设置为后台运行,并且暴露本地5000端口 ,名称为webapp 用的镜像名称为webapp

方法二:

执行步骤1-2,省略掉步骤3-4,直接操作步骤5-8唯一的不同是Dockerfile不一样了。

FROM  microsoft/aspnetcore-build as  builder
WORKDIR /source
COPY *.csproj .
RUN dotnet restore
copy . .
run dotnet publish -c release -o /publish/
from microsoft/aspnetcore
workdir /app
copy --from=builder /publish .
ENTRYPOINT ["dotnet","test.dll"]

查看一下:

本地浏览器 localhost:5000查看:

总结:

方法一和方法二的不同就是: 方法一需要手动进行build和publish ,方法二是直接在docker中进行build 和publish省去了麻烦。

docker-compose

在该项目目录下创建文件docker-compose.yaml

编辑该文件

version : '3.3'
services :
web :
build : .
ports :
- 80 : 80

直接运行docker-compose up 自动构建镜像,并启动。

docker-compose 笔记

命令 解释
build --force-rm 删除构建过程中的临时容器。
--no-cache 构建镜像过程中不使用 cache(这将加长构建过程)。
--pull 始终尝试通过 pull 来获取更新版本的镜像。
config 验证 docker compose 语法检查
down 此命令将会停止 up 命令所启动的容器,并移除网络
exec 进入指定的的容器 和docker exec 用法差不多。
images 列出 Compose 文件中包含的镜像。
kill 通过发送 SIGKILL 信号来强制停止服务容器。
logs 容器运行状况的日志输出 和docker logs差不多。
pause 暂停一个容器
port 打印某个容器端口所映射的公共端口。
ps 列出项目中目前的所有容器。
push 推送服务依赖的镜像到 Docker 镜像仓库。
restart 重启项目中的服务。
rm 删除所有(停止状态的)服务容器
run 在指定服务上执行一个命令。
scale 指定容器的个数
start 启动已经存在的容器
stop 停止已经处于运行状态的容器,但不删除它
top 查看各个服务容器内运行的进程。
up -d 在后台运行服务容器。
-no-color 不使用颜色来区分不同的服务的控制台输出。
--no-deps 不启动服务所链接的容器。
--force-recreate 强制重新创建容器,不能与 --no-recreate 同时使用
--no-recreate 如果容器已经存在了,则不重新创建,不能与 --force-recreate 同时使用。
--no-build 不自动构建缺失的服务镜像。
-t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)。

.net core 下的一个docker hello world的更多相关文章

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

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

  2. Linux下自动化部署ASP.NET CORE 3.1(Docker+Jenkins+Nginx)

    1.先配置好Docker阿里云加速,可以使用阿里云容器服务 (可自己在阿里云申请,要不然安装东西直接很慢)注意:https://XXXX.mirror.aliyuncs.com为阿里云加速服务分配地址 ...

  3. 一个.NET Core下的开源插件框架

    插件模式历史悠久,各种中大型软件基本上都会实现插件机制,以此支持功能扩展,从开发部署层面,插件机制也可实现功能解耦,对于并行开发.项目部署.功能定制等都有比较大的优势. 在.NET Core下,一般我 ...

  4. Docker下制作一个容器镜像

    操作过程描述: (1)先基于centos的镜像启动一个centos容器 (2)在这个容器中安装nginx (3)然后把这个已经安装了nginx的容器制作成一个docker的镜像 操作:docker c ...

  5. .NET Core下使用gRpc公开服务(SSL/TLS)

    一.前言 前一阵子关于.NET的各大公众号都发表了关于gRpc的消息,而随之而来的就是一波关于.NET Core下如何使用的教程,但是在这众多的教程中基本都是泛泛而谈,难以实际在实际环境中使用,而该篇 ...

  6. 002.Create a web API with ASP.NET Core MVC and Visual Studio for Windows -- 【在windows上用vs与asp.net core mvc 创建一个 web api 程序】

    Create a web API with ASP.NET Core MVC and Visual Studio for Windows 在windows上用vs与asp.net core mvc 创 ...

  7. Gitlab CI 自动部署 asp.net core web api 到Docker容器

    为什么要写这个? 在一个系统长大的过程中会经历不断重构升级来满足商业的需求,而一个严谨的商业系统需要高效.稳定.可扩展,有时候还不得不考虑成本的问题.我希望能找到比较完整的开源解决方案来解决持续集成. ...

  8. ASP.NET Core 2.0 in Docker on Windows Container

    安装Docker for Windows https://store.docker.com/editions/community/docker-ce-desktop-windows 要想将一个ASP. ...

  9. 给Ocelot做一个Docker 镜像

    写在前面 在微服务架构中,ApiGateway起到了承前启后,不仅可以根据客户端进行分类,也可以根据功能业务进行分类,而且对于服务调用服务也起到了很好的接口作用.目前在各个云端中,基本上都提供了Api ...

随机推荐

  1. openfalcon源码分析之graph

    openfalcon源码分析之graph 本节内容 graph功能 graph源码分析 2.1 graph中重要的数据结构 2.2 graph的简要流程图 2.3 graph处理数据过程 2.4 gr ...

  2. 彻底解决WP的TextBox中文字过长显示不出来的问题

    文字如果过长的话在TextBox中会显示不完全,这个大家都知道了,后来有人做了ExTextblock增强控件,大部分文字是可以显示出来了,不过,在某些情况下还是会有显示不全的情况. 这个时候一个解决方 ...

  3. resin WED服务器初用遇到的问题和解决方法 java.lang.RuntimeException: java.net.SocketException: Unrecognized Windows Socke ts error: 0: JVM_Bind

    开启resin 服务器以后提示如下:(控制台不断的循环循环打印如下错误提示) java.lang.RuntimeException: java.net.SocketException: Unrecog ...

  4. Python数据类型-02.字符串

    本文主要记录字符串的相关知识,包括字符串的定义特点,常用方法和 请知悉: 计算机中,一切皆为对象世界万物,皆为对象,一切对象皆可分类 1.什么是字符串? 类似"hello world&quo ...

  5. train validation test

    http://stats.stackexchange.com/questions/19048/what-is-the-difference-between-test-set-and-validatio ...

  6. python安装openSSL

    首先确定您是否下载python (3).pip (3).python-wheel 官网下载源码包openSSL 参考:用pip安装python 模块OpenSSL

  7. java面试题8

    java面试题08 1.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1;编译 ...

  8. Redis学习笔记-数据操作篇(Centos7)

    一.基本操作 1.插入数据 127.0.0.1:6379> set name cos1eqlg0 OK 这样就在redis中设置了一个key-value键值对 2.查询数据 127.0.0.1: ...

  9. 随笔——python截取http请求报文响应头

    随笔——python截取http请求报文响应头 标签: pythonhttp响应头 2014-05-29 09:32 2114人阅读 评论(0) 收藏 举报  分类: 随笔(7)  版权声明:本文为博 ...

  10. OrmLite动态创建表,一个实体类创建多张表的的偏招

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/LonelyRoamer/article/details/26299355 在做一个Android的项 ...