一.docker注册安装

Windows Docker Desktop https://www.docker.com/products/docker-desktop

Linux Docker CE https://docs.docker.com/install/linux/docker-ce/ubuntu/

本文使用Windows环境Linux container做演示,安装完后切换到Linux container,“Switch to Linux containers...”。

打开PowerShell查看docker版本信息

  1. PS C:\Users\Administrator> docker --version
  2. Docker version 18.09.2, build 6247962
  3. PS C:\Users\Administrator> docker version
  4. Client: Docker Engine - Community
  5. Version: 18.09.2
  6. API version: 1.39
  7. Go version: go1.10.8
  8. Git commit: 6247962
  9. Built: Sun Feb 10 04:12:31 2019
  10. OS/Arch: windows/amd64
  11. Experimental: false
  12.  
  13. Server: Docker Engine - Community
  14. Engine:
  15. Version: 18.09.2
  16. API version: 1.39 (minimum version 1.12)
  17. Go version: go1.10.6
  18. Git commit: 6247962
  19. Built: Sun Feb 10 04:13:06 2019
  20. OS/Arch: linux/amd64
  21. Experimental: false
  22. PS C:\Users\Administrator>

二.创建一个.NetCore示例项目“HelloWorld”

1.添加Dockerfile

Visual Studio下右键点击项目 - 添加 - Docker支持 - 选择Linux OS,VS会自动生成Dockerfile文件、构建image、预热container等一系列动作,像极了docker-compose。

生成的Dockerfile文件(指令详解:https://docs.docker.com/engine/reference/builder/)

  1. FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
  2. WORKDIR /app
  3. EXPOSE 80
  4.  
  5. FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
  6. WORKDIR /src
  7. COPY ["HelloWorld/HelloWorld.csproj", "HelloWorld/"]
  8. RUN dotnet restore "HelloWorld/HelloWorld.csproj"
  9. COPY . .
  10. WORKDIR "/src/HelloWorld"
  11. RUN dotnet build "HelloWorld.csproj" -c Release -o /app
  12.  
  13. FROM build AS publish
  14. RUN dotnet publish "HelloWorld.csproj" -c Release -o /app
  15.  
  16. FROM base AS final
  17. WORKDIR /app
  18. COPY --from=publish /app .
  19. ENTRYPOINT ["dotnet", "HelloWorld.dll"]

镜像

  1. PS C:\Users\Administrator> docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. helloworld dev 30c03823dd0a 23 minutes ago 260MB
  4. mcr.microsoft.com/dotnet/core/aspnet 2.2-stretch-slim f6d51449c477 13 days ago 260MB
  5. docker4w/nsenter-dockerd latest 2f1c802f322f 7 months ago 187kB

容器

  1. PS C:\Users\Administrator> docker ps -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. c697ab8b8b14 helloworld:dev "tail -f /dev/null" 2 hours ago Up 2 hours 0.0.0.0:60169->80/tcp elegant_bardeen

2.下面抛开IDE,手动来生成镜像、容器、启动

首先清空环境,docker rm等下文所用到的命令行文档 https://docs.docker.com/engine/reference/commandline/rm/

  1. PS C:\Users\Administrator> docker rm -f c697ab8b8b14
  2. c697ab8b8b14
  3. PS C:\Users\Administrator> docker rmi 30c03823dd0a f6d51449c477
  4. Untagged: helloworld:dev
  5. Deleted: sha256:30c03823dd0ae6484caab7f099e4442273663bf50315ac6d3558d7b5bc544e8f
  6. Deleted: sha256:0a2fe0c9198ecc65ecfc5a7dcd0823879f764247f949e8c7876257c2b00cbfca
  7. Deleted: sha256:2551e1d0a0b9297fb0d8c6781dad394629b567e3ca3b19db6416403565e3aec2
  8. Deleted: sha256:872599e9fef81ab624703111a2c4608705c371c3bebe27b0885093d05cdc0022
  9. Deleted: sha256:9f7724eb5d7bb41dd1c060cf0212ded5b2a098088fc1e2771dbbe9cbf9a0bf3f
  10. Untagged: mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim
  11. Untagged: mcr.microsoft.com/dotnet/core/aspnet@sha256:3af73ca8d90dd5b1d01b0499f73fb0115b468502de61881193dbcf8908c86b16
  12. Deleted: sha256:f6d51449c47712f4b96ad796f46a2933cf8f85b1fbc85863de5bd43544d3ab97
  13. Deleted: sha256:dc3d6d81a75cc325c36c784a625315b45b4cef9857436961f7d1714cdd03ab2f
  14. Deleted: sha256:c22fbc137d1d8909a4e6143aa5cd8c24b56de4e158fc980f460d131cf4067501
  15. Deleted: sha256:33362d15fdad76b1889cd6a1697e216c311d031dc11d2c96fbcd3f5c51ce39e5
  16. PS C:\Users\Administrator>

构建Image

或者直接cd到dockerfile所在目录,然后docker build -t helloworld:v1.0 .

  1. PS C:\Users\Administrator> docker build -f "C:\Users\Administrator\source\repos\AspNetCore_Docker\HelloWorld\Dockerfile" -t helloworld:v1.0 "C:\Users\Administrator\source\repos\AspNetCore_Docker"
  2. Sending build context to Docker daemon 4.401MB
  3. Step 1/16 : FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
  4. ---> f6d51449c477
  5. ...
  6. Successfully built 8a44f8d01233
  7. Successfully tagged helloworld:v1.0
  8. SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
  9. PS C:\Users\Administrator> docker images
  10. REPOSITORY TAG IMAGE ID CREATED SIZE
  11. helloworld v1.0 8a44f8d01233 13 minutes ago 265MB
  12. mcr.microsoft.com/dotnet/core/sdk 2.2-stretch e4747ec2aaff 13 days ago 1.74GB
  13. mcr.microsoft.com/dotnet/core/aspnet 2.2-stretch-slim f6d51449c477 13 days ago 260MB
  14. docker4w/nsenter-dockerd latest 2f1c802f322f 7 months ago 187kB

创建容器

-d:分离模式启动容器

--restart=always:自动重启

-p:端口映射

  1. PS C:\Users\Administrator> docker run --name netcore_helloworld -d --restart=always -p 81:80 helloworld:v1.0
  2. fdfc4ca8682d3669a4d4202fbf7d551876caf0e408b4bade76f5fcc50601dea8
  3. PS C:\Users\Administrator> docker ps -a
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. fdfc4ca8682d helloworld:v1.0 "dotnet HelloWorld.d…" 5 seconds ago Up 3 seconds 0.0.0.0:81->80/tcp netcore_helloworld
  6. PS C:\Users\Administrator>

3.部署完成

浏览器打开localhost:81

示例代码Github地址https://github.com/wwwu/AspNetCore_Docker

AspNetCore容器化(Docker)部署(一) —— 入门的更多相关文章

  1. AspNetCore容器化(Docker)部署(三) —— Docker Compose容器编排

    一.前言 上一篇部署了一个最基础的helloworld应用,创建了两个容器和一个network,还算应付得过来. 如果该应用继续引入mysql.redis.job等若干服务,到时候发布一次得工作量之大 ...

  2. AspNetCore容器化(Docker)部署(二) —— 多容器通信

    一.前言 着上一篇 AspNetCore容器化(Docker)部署(一) —— 入门,在单个容器helloworld的基础上引入nginx反向代理服务器组成多容器应用. 二.配置反向代理转接 配置转接 ...

  3. AspNetCore容器化(Docker)部署(四) —— Jenkins自动化部署

    一.前言 (Jenkins.Docker.Git/Svn组建一套简单的自动化发布流程) 文章中用到的相关服务器角色 角色 环境 功能 开发机 Win10.Docker(Linux OS) 编码.调试 ...

  4. .NETCore 实现容器化Docker与私有镜像仓库管理

    原文:.NETCore 实现容器化Docker与私有镜像仓库管理 一.Docker介绍 Docker是用Go语言编写基于Linux操作系统的一些特性开发的,其提供了操作系统级别的抽象,是一种容器管理技 ...

  5. .NET Core容器化@Docker

    温馨提示:本文适合动手演练,效果更佳.  1. 引言 我们知道. NET Core最大的特性之一就是跨平台,而对于跨平台,似乎大家印象中就是可以在非Windows系统上部署运行.而至于如何操作,可能就 ...

  6. aspnetcore 容器化部属到阿里云全过程记录

    第一次写博客,作为一个全栈er,记录一下从阿里云到产品运维上线的全过程 一.阿里云上的设置 购买阿里云ECS后: 进控制台查看实例公网IP 在控制台.网络与安全->安全组,配置规则 点击进去可以 ...

  7. 容器化-Docker介绍

    导读:本文章对Docker技术进行了介绍,阐述了Docker的技术发展历程.容器与虚拟机的差异.Docker原理.特点.Docker三组件和Docker带来的影响,为我们进一步理解Docker打下基础 ...

  8. Spring Boot 项目转容器化 K8S 部署实用经验分享

    转载自:https://cloud.tencent.com/developer/article/1477003 我们知道 Kubernetes 是 Google 开源的容器集群管理系统,它构建在目前流 ...

  9. 容器化-Docker实战

    导读:本文系统性介绍Docker安装.Docker组件.Docker命令.Dockerfile语法和Docker应用,通过上述介绍使我们已经对docker基本操作有一定了解. 一.前言 本文将系统性的 ...

随机推荐

  1. 【旧文章搬运】Windows句柄表格式

    原文发表于百度空间,2009-02-28========================================================================== 句柄是Wi ...

  2. java服务器端断点续传

    Servlet Java代码 复制代码 收藏代码 import java.io.BufferedOutputStream; import java.io.File; import java.io.IO ...

  3. Linux系统安装完的调整和安全

    精简开机系统自启动 •五个企业环境中开机自启动的服务; sshd:远程连接linux服务器必须开启 rsyslog:日志相关软件 network:网络服务 crond:系统和用户配置的计划任务周期性进 ...

  4. bzoj 3173: [Tjoi2013]最长上升子序列【dp+线段树】

    我也不知道为什么把题看成以插入点为结尾的最长生生子序列--还WA了好几次 先把这个序列最后的样子求出来,具体就是倒着做,用线段树维护点数,最开始所有点都是1,然后线段树上二分找到当前数的位置,把这个点 ...

  5. iSCSI 原理和基础使用

    终于完成最后一篇了,一上午的时间就过去了. 下文主要是对基本操作和我对iSCSI的理解,网上有很多iSCSI原理,在这里我就不写了,请自行学习. 这篇文章仅对iSCSI的很多误解做一次梳理,你必须对所 ...

  6. Beta版本冲刺第二天!

    该作业所属课程:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 作业地址:https://edu.cnblogs.com/c ...

  7. P2024 [NOI2001]食物链

    第一种说法是"1 X Y",表示 X 和 Y 是同类. 第二种说法是"2 X Y",表示 X 吃 Y . 根据这句话 可以看出来这是一个种类并查集 种类并查集 ...

  8. 通过 xshell 连接 ubuntu on windows(WSL)

    装上 ubuntu on windows 后,默认要先打开 cmd, 再运行 bash 进入 ubuntu 的 shell. 但是这个shell很难看,配色不好就算了,还存在各种复制粘贴麻烦. 默认没 ...

  9. UVa 1218 Perfect Service 完美的服务

    ***状态设计值得一看dp[u][0]表示u是服务器(以下v均指任意u的子结点,son指u的所有子结点)ap[u][0]=sum{dp[v][1]}+1//错误,服务器是可以和其他服务器相邻的dp[u ...

  10. 转 多个版本的数据库在同一服务器上ORA-12557

    http://blog.chinaunix.net/uid-42518-id-3153473.html 问题描述:当同一台机子上安装了多个版本的数据库,可能在连接库或ASM时会报以下错误.ORA-12 ...