Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环境部署当中。这篇文章我将针对以下几个方面简单介绍:

1. docker的基础介绍

2. docker在windows下的安装配置

3. 基础命令介绍

4. 使用vs2017在docker下调试

5. 打包一个.net core站点镜像

一. docker基础介绍

  可能很多朋友对docker还停留在听说过,并没有认真关注了解过,这里简单介绍下其基础部分知识。如有不足,欢迎指正!

  1. docker介绍

  很多同学有一个先入为主的概念,docker是一个轻量级容器。所以这里先普及一下,docker本身并不是一个容器,而是一个管理容器的引擎工具。它包含一个服务端和客户端,服务端是一个管理着所有容器和文件系统的服务进程,客户端则是一个服务端的控制器,用来控制docker的服务端进程。至于容器,主要指的是包含了一些特定应用的运行实例,既保证了当前应用的运行环境独立,又能保证容器相互之间的独立。

  一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发者,我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是考验。Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案。

  Docker提供了一套虚拟化和文件系统的支持,可以让专业人员自由组装需要的运行环境到容器中,并提供容器运行时的隔离。就像一个大型油轮,承载着一个个集装箱,每个集装箱我们可以理解为我们的容器,这个容器中的内容完全由组装人员自定义。

  2. docker基础概念

  docker本身是一个容器运行载体,一个容器的运行,需要正确的理解仓储,镜像,和容器这几个概念。 如上介绍,容器一个运行实例,那么当前实例是如何部署的,就明白的镜像的意义了。镜像就是一个已经打包好的可交付的运行环境,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器。至于仓储,就是放了一堆镜像的地方,我们可以把镜像发布到仓储中,需要的时候从仓储中拉下来就可以了。

  3. docker基础使用

  以web应为为例,我们开发完成之后,将应用打包成镜像,发布到自己的仓储服务器或者直接上传到服务器中,服务器拉取或者加载镜像,设置对应的端口映射并启动容器。如果我们存在多个web容器,也可以通过negix在前方负载代理。在后边我会通过一个.net core站点做一个简单的示例。当然也有很多持续集成方案,比如代码提交之后自动生成镜像,部署,这里就先不做介绍了。

二. docker在windows下的安装和配置

  这里我介绍下在windows中安装Docker以及相关的配置信息。当前Docker for Windows会默认包含两个引擎containers(linux和windows)

  1. 下载Docker for Windows,https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows

  2.  查看下是否开启了Hyper-V功能,如果没有可以在“启用或关闭windows功能” 中添加Hyper-V 功能,当然你也可以不用关心,docker安装过程中也会检查,如果没有则默认添加启动,不过可以趁着等待下载docker的时间直接把这步做了,安装Hyper-V之后可能需要重启系统。

  3.  安装完成之后,你可以查看Hyper-V管理器,如果安装正常,会如下默认创建一个linux虚拟机:

我们也可以通过PowerShell查看Docker版本:

  安装成功之后我们就可以对其进行相应的设置

  1. 右击小鲸鱼图标(这里我直接找的网上的图),点击Settings

  2. 设置界面如下,其中Shared Drives 可以设置我们的对应映射驱动盘,保证C盘选中,再选中你应用所在盘符。Advanced选项中你可以设置docker对应的CPU,内存占用资源。Netword主要是当前的Docker IP信息。Proxies可以设置对应的代理信息。Daemon 主要是设置对应的仓储和对应的仓储镜像站点(和docker镜像区分开,这个是仓储对应的镜像,因为访问国外站点过慢,可以设置国内的镜像代理站点)。

这里特别强调一下,因为访问Docker官网仓储站点拉取镜像过慢,请自行购买VPN服务,或者查找仓储代理站点,国内的网易,DaoCloud都有对应的免费加速器,这里是我的设置:

  

  3. 上边说了,Docker for Windows 提供了两个引擎,我们可以通过右键菜单中的 Switch to Windows Containers 功能进行切换。

  4.  同时Docker for Windows 提供了容器的界面管理工具,可以通过右键菜单中的 Kitematic 功能进入,第一次可能提示你需要下载安装,其界面如下:

三. Docker的基础命令

  安装设置完成之后我们可以通过以下命令来进行操作docker了,我这里主要是在PowerShell中进行,也可以通过命令行cmd进行

  1. docker pull: 从仓库中拖镜像

  2. docker run:运行容器,如果当前要运行的容器对应镜像不存在,会自动拉取。例如:docker run hello-world

  3.docker stop:停止容器运行
  4.docker start:开始容器运行
  5.docker commit:提交容器到镜像
  6.docker images: 查看当前有的镜像

  7.docker ps:查看当前启动的容器

  8. docker build : 创建镜像

  9. docker load : 加载镜像

上边这几个是docker的主要命令,先行解释一下,后边我们会用到。

四.使用vs2017在docker下调试

这里我以一个.net core 站点示例,启用2017中的docker调试功能,如果是已经存在的项目,右键=》添加=》增加Docker支持即可

1.  新建websample站点

2. dockerfile 文件介绍

  当项目创建完成,在项目文件中你可以看到一个dockerfile文件,内容如下:

这个文件就是docker打包时需要的一个docker命令文件,vs中内部整合docker-compose和docker命令,完成了镜像生成和容器的创建

你会发现调试模块已经是docker了,如果想回到正常以前的项目,删除解决方案下自动生成的 docker-compose 项目即可。

我们启动调试,这个时候如果我们打开 Kitematic 会发现我们的websample容器已经创建了,并且自动添加了dev的标签,如下图:

五. 打包一个.net core站点镜像

  这里我使用刚才创建的.net core站点,演示一下我们完成站点开发之后,不使用vs的情况,如何通过命令完成一个镜像的打包。

  1. 发布刚才的站点到指定文件夹下

  2. 进入发布后的文件夹,修改docker文件

  查看docker文件是否存在,如果不存在直接把项目中的复制过来,并修改内容如下

FROM microsoft/aspnetcore:1.0

WORKDIR /app
COPY . /app
EXPOSE 80

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

a.  使用microsoft/aspnetcore 作为基础镜像

  b. 制定容器的工作目录

  c. 复制当前项目文件到容器的app目录下

  d. 设置容器对外暴露80端口

  e. 启动命令,执行websample.dll

  3. 构建镜像

    进入文件目录,执行命令 docker build -t websample:latest .   (后边的点是需要的

  4. 运行当前镜像

  镜像创建完成之后,我们就可以通过镜像创建对应的运行容器了, 执行如下命令: docker run -it -p 8000:80 websample:latest

可以看到我们的容器已经运行起来了,我们访问 127.0.0.1:8000

至此,我们已经尝试了docker的基础功能,希望本文能够对你有所帮助。

同时,我最近正在开发OSS系列开源项目,现在已有OSS.Common,OSS.Http, OSS.Social 和 OSS.PayCenter 几个项目,如果你也有兴趣,请联系我或者关注公众号OSSCoder

原文地址:http://www.cnblogs.com/osscoder/p/6553733.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

Docker基础入门及示例相关推荐

  1. Docker基础入门(基本命令)

    Docker基础入门(基本命令) 一.Docker概述 1.Docker为什么会出现? 一款产品: 开发–上线 两套环境!应用环境,应用配置! 开发 - 运维. 问题:我在我的电脑上可以允许!版本更新 ...

  2. Docker基础入门详解

    一.产生背景 在传统软件开发流程中,研发程序员将功能代码研发完成后,交由测试人员进行测试,最后通过运维人员部署上线.但是在这个过程中,常常因为环境问题.配置问题.软件版本问题等等诸多因素,造成一些问题 ...

  3. 老男孩Docker基础入门培训视频Docker核心原理解(完整版)

    课程介绍: Dokcer比较初级的培训视频教程,很适合零基础的朋友们来学习,没有复杂的原理,初入门推荐的Docker培训视频 课程目录: L021-01-Docker介绍.avi L021-02-Do ...

  4. docker基础入门和docker compose实战

    Docker运维部署 docker官网:https://www.docker.com/ 文档:https://docs.docker.com/ Docker的文档是超级详细的! 仓库:https:// ...

  5. Docker 基础入门篇(上)

    为什么需要docker 主流虚拟化技术分析 Docker的安装与部署 Docker的完整架构图 1.为什么需要docker 系统运行环境变更,软件版本升级,操作系统不一致等等问题都会导致本来一个很简单 ...

  6. Docker基础入门getting started

    系列文章目录 Docker 概述 Docker getting started 文章目录 系列文章目录 前言 一.容器及镜像的概念 二.容器化一个应用 三.更新应用 四.分享应用 五.持久化数据存储 ...

  7. Docker 基础入门

    参考 [狂神说Java]Docker最新超详细版教程通俗易懂 Docker 启动报错 前言 记录下笔记, 之后好复习 Docker安装 Docker的基本组成 镜像(image): Docker镜像就 ...

  8. Docker基础入门总结

    一.什么是Docker 官方文档描述:"Docker is an open platform for developing, shipping, and running applicatio ...

  9. docker基础入门一:docker安装镜像下载根据镜像创建容器

    一.安装准备: #卸载旧的版本: yum list installed |grep docker yum -y remove  ... #卸载后将保留/var/lib/docker的内容(镜像.容器等 ...

最新文章

  1. MP实战系列(二)之集成swagger
  2. vscode拼写错误提醒消失
  3. SRM 567 div2
  4. java day48【 Maven 介绍 、 Maven 的使用 、Maven 常用命令 、 maven 工程运行调试 、总结】...
  5. (十七)关于安装智能家居3大方面你需要注意的
  6. php自我介绍50字,简短自我介绍50字
  7. 关于神经网络中的shape问题
  8. 人生如逆旅,我亦是行人。
  9. 在亚马逊网上注册kindle 3及下载免费电子图书的步骤
  10. OCR目标识别(车辆VIN码识别效果)
  11. ubuntu卸载程序
  12. N级台阶(比如100级),每次可走1步,2步,3步,求总共有多少种走法?
  13. 算法篇:神奇的卡塔兰数Catalan
  14. 教你使用html+js手绘一个时钟
  15. (转)[教你开启冻酸奶的app2sd] android2.2的APP TO SD功能启动方法
  16. IE被www 537 com www COXDX INFO劫持,修复
  17. golang https服务
  18. tera港服服务器维护,TERA11月4日停机到几点 TERA11月4日更新维护内容介绍
  19. 天地图根据经纬度坐标计算瓦片行列号(python)
  20. 2014年中国安防十大品牌企业排行榜

热门文章

  1. python引入模块时import与from ... import的区别
  2. centos7.0搭建svn服务器
  3. 使用Windbg内核调试连接调试用户态程序的方法
  4. EF Core 小技巧:迁移已经应用到数据库,如何进行迁移回退操作?
  5. C#Socket通信
  6. 瞒不住了,难怪.NET进大厂这么难!
  7. 你可能会用到的 Mock 小技巧
  8. Web API实现微信公众平台开发-接收数据Post
  9. Asp.Net Core 中的“虚拟目录”
  10. .NET Core CLI 的性能诊断工具介绍