Docker入门 .Net Core 使用Docker全程记录
https://www.cnblogs.com/flame7/p/9210986.html
Docker入门 第一课 --.Net Core 使用Docker全程记录
微服务架构无疑是当前最火热的开发架构,而Docker作为微服务架构的首选工具,是我们必须要了解掌握的。
我通过一天的时间,网上查文档,了解基础概念,安装Docker,试验Docker命令,通过Docker,成功部署运行Asp.NET core示例程序,算是基本入门。
这篇文章是自己总结的Docker入门篇,力求简洁,快速入门,以最短的时间看到学习成果,为深入学习Docker做基础。
学习前提:不要畏惧
面对未知,人们心里往往会产生恐惧,这是人与生俱来的,所以,我们在进入新的领域之前,首先要克服的是自己的畏难心理。不要因为困难,看几眼就放弃,那样你永远学不会。
面对新的未知领域,我们要把它当成一座灯塔,让它指引我们前进的方向。
第一:了解几个概念
镜像(Image):相信大家看到这个词,都明白什么意思,我们可以把它理解为操作系统的安装盘,Ghost镜像。我给它个定义,就叫:Docker基础运行环境副本。
容器(Container):运行中的Docker实例,称为容器。也就是一个镜像(Image)的运行时状态。
镜像仓库(Repository):Docker为开发者提供了面向各种环境的已经打包好的镜像,这些镜像构成了一个镜像仓库。开发者只需找到自己需要的Docker镜像,下载到本地,添加自己的应用上去,运行即可,某些工具类的镜像,可无需修改,直接运行。
Docker 主机(Host):运行着Docker容器的计算机或虚拟机,用于执行Docker的守护进程。
Docker客户端(Client):是与Docker主机守护进程进行通信的工具,如:Docker控制台。
第二:安装Docker
不同操作系统按照方式不同,以Win7系统为例,需要利用 docker toolbox 来安装,可以使用阿里云的镜像来下载。
下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
安装完成之后,在桌面找到三个启动图标:Oracle VM VirtualBox,Kitematic(Alpha),Docker Quickstart …。
安装完成之后,建议重启一下计算机。
Oracle VM VirtualBox :是一个虚拟机程序。Docker是运行在Linux环境下的,要想在Windows下运行,必须借助虚拟机。感兴趣的话可以留着以后研究。
kitematic(alpha):是docker推出的GUI工具,可以更简便地操作Docker,非常适合windows用户使用习惯,推荐大家试试。这个alpha表示预览版吧,可能功能还不完善。
Docker Quickstart Terminal:是Docker控制台启动程序,双击图标启动Docker。
如果一切正常的话,可以看到以下界面。
如果启动过程中出现下面错误,Looks like something went wrong in step 'Looking for vboxmanage.exe'…
意思是没有找到虚拟机启动程序,需要设置VirtualBox的环境变量,系统环境变量中增加VBOX_MSI_INSTALL_PATH和VBOX_INSTALL_PATH 值都为C:\Program Files\Oracle\VirtualBox\ ,即VirtualBox的安装路径,注意后面的\ 不能少。环境变量设置完成之后,可尝试重新启动。
第三:熟悉几个命令
我建议实际工作中使用图形界面 kitematic,真的既简单又实用,但Docker命令还是要学习的,最重要的是,使用命令行操作显得更酷更专业。
docker 命令都是以docker开头,下面介绍几个简单,常用的命令。仅作基础介绍,具体参数用法可后期详细学习 。
docker pull:从镜像仓库中拉取镜像 。
docker run:通过镜像创建一个新的容器,并运行。需要注意的是,如果本地没有指定的镜像,会直接去镜像库下载,一定要保证拼写正确。
docker stop:停止一个容器 。
docker start:启动一个容器 。
docker restart:重启一个容器 。
docker ps:列出当前运行的容器机器状态 。
docker images 或 docker image ls:列出本地镜像。
docker build:使用Dockerfile创建自己的镜像。
第四:操作演示,从hello world开始
你可以登录Docker官方镜像仓库,选择自己感兴趣的镜像进行试验,这里我们选择最简单的 hello-world。
Docker官方镜像仓库地址:https://hub.docker.com
拉取(下载)镜像,在docker控制台界面,输入命令:docker pull hello-world
镜像很小,下载很快完成,然后查看一下本地镜像,输入命令:docker images
不出问题的话,应该可以看到hello-world的镜像文件,运行镜像,输入命令:docker run hello-world
然后可以看到,控制台返回信息提示,Docker已经正常运行。
第五:创建自己的Docker镜像
创建镜像需要使用Dockerfile文件,下面以asp.net core 为例,创建一个自己的镜像,示例中已经创建好了Dockerfile文件,直接使用即可,具体内容留着以后研究。
操作参考:为 .NET Core 应用程序生成 Docker 映像:https://docs.microsoft.com/zh-cn/dotnet/core/docker/building-net-docker-images
首先:确保已经安装了Dotnet Core 2.0
然后:下载asp.net core 示例代码 :git clone https://github.com/dotnet/dotnet-docker-samples/
进入项目代码目录,运行示例,测试一下:
cd aspnetapp
dotnet run
应用程序启动后,在 Web 浏览器中访问 http://localhost:5000。好了,一切正常,没问题。
创建镜像,输入Docker命令:
docker build -t aspnetapp .
生成镜像的过程需要下载依赖镜像包,大概需要十多分钟,执行过程中不要关闭控制台。
镜像生成完成之后,运行一下试试:
docker run -it -p 5002:80 --name aspnetcore aspnetapp
启动完成,打开浏览器:http://192.168.99.100:5002/
说明:-p 5002:80 表示将Docker主机的5002端口和Docker容器的80端口进行关联映射,即,外部访问使用5002端口,容器内部使用80端口,即 HTTP服务端口。
注意:这里是IP地址,至于这个IP是怎么来的,说实话,我也不知道,我尝试了几次,始终不能访问,然后打开kitematic,才发现只有这个IP才能访问。[哭脸]
后记:
当看到程序正常启动运行时,是不是满满的成就感,学习就这么简单,最重要的是下定决心迈出行动的第一步。
本篇文章力求简洁,力图尽快看到学习成果,算是给大家深入学习提供的一块敲门砖,垫脚石。
另外文中的概念都是我自己理解的,可能跟标准答案不符,仅供理解和参考。
推荐几个深入学习的网址:
Docker官方镜像仓库:https://hub.docker.com
Docker菜鸟教程:http://www.runoob.com/docker/docker-tutorial.html
Docker入门教程:http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
为 .NET Core 应用程序生成 Docker 映像:https://docs.microsoft.com/zh-cn/dotnet/core/docker/building-net-docker-images
Docker入门 .Net Core 使用Docker全程记录的更多相关文章
- 【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World
操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service doc ...
- Docker入门之 - 如何安装Docker CE
原文:Docker入门之 - 如何安装Docker CE 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012055638/article/det ...
- Docker入门与实践之 docker安装与了解
一.Docker 概述 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后 ...
- Docker入门详解——安装docker并利用docker搭建lnmp
首先我们需先安装docker环境,这个比较简单,以centos7为例 docker在centos7上安装需要系统内核版本3.10+,可以通过uname -r查看内核版本号,如果版本不符请自行查阅资料更 ...
- Docker 入门:什么是 Docker ?
Docker 解决了软件环境部署复杂的问题. 对于一个传统的软件工程,开发人员把写好的代码放到服务器上去运行是一件很头疼的事情,因为常常会出现环境不兼容而导致各种各样的 Bug. 比如说,开发是在 w ...
- Docker入门(七):部署app
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
- Docker入门(六):Stacks
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
- Docker入门(五):Swarms
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
- Docker入门(四):服务(Services)
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
随机推荐
- Nginx学习总结:proxy与rewrite模块(三)
斜体下划线,表示建议采用默认配置,无需显式的配置 一.ngx_http_upstream_module 此模块中可配置的指令并不是很多.nginx的负载均衡算法包括: 1)round-robin:轮询 ...
- 【Leetcode周赛】从contest-121开始。(一般是10个contest写一篇文章)
Contest 121 (题号981-984)(2019年1月27日) 链接:https://leetcode.com/contest/weekly-contest-121 总结:2019年2月22日 ...
- ARC102E - Stop. Otherwise... 组合计数
枚举 \(i\),然后可以把 \(j\) 和 \(i - j\) 绑定成一对.把一对看成一个整的元素,与别的没有被绑定的数一起来参与选择就可以了. 但是由于实际上一对中的数是可以二选一的,所以不妨令 ...
- 人生苦短_我用Python_logging日志操作_011
话不多说,开搞,基础是先使用自带loggin模块,level为warning以上, 进一步是自定义logger,level可自定义 #!/usr/bin/env python # -*- coding ...
- tensorflow函数介绍(1)
tensorflow中的tensor表示一种数据结构,而flow则表现为一种计算模型,两者合起来就是通过计算图的形式来进行计算表述,其每个计算都是计算图上的一个节点,节点间的边表示了计算之间的依赖关系 ...
- 【转】从phpMyAdmin批量导入Excel内容到MySQL(亲测非常简洁有效)
今天做项目遇到需要用phpMyAdmin批量导入Excel内容到MySQL数据库.分析了我的踏坑经历并且总结一最便捷的一套导入数据的方法,非常实用简洁: 1.修改Excel表的数据,使得Excel中的 ...
- Idea的几个常用的
sout+tab= "System.out.println()" ctrl+alt+v=生成当前对象的实例 ctrl+shift+enter="(真个是真的牛哦)直接 ...
- 回炉Spring--事务及Spring源码
声明式事务 配置文件信息: /** * @EnableTransactionManagement 开启基于注解的事务管理功能 * 1.配置数据源 * 2.配置事务管理器来管理事务 * 3.给方法上标注 ...
- spring-boot整合Dubbo分布式架构案例
1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 3.2.5 2.项目文件目录 3.Maven Plugin管理 总项目 pom.xml配置代码: &l ...
- 【Linux】grep显示匹配行的上下几行的用法
打印匹配行的前后5行 grep -5 ‘something’ file 打印匹配行的前后5行 grep -C 5 ‘something’ file 打印匹配行的后5行 grep -A 5 ‘somet ...