原创声明:作者:Arnold.zhao  博客园地址:https://www.cnblogs.com/zh94

公司使用的电脑是Windows专业版,所以配置本机的Docker时会方便许多,后续由于需要在家里的个人笔记本上安装下Docker才发现Windows家庭版的安装和Windows专业版的安装竟然是有着较大的差异的,所以此处留存做一下相关的记录;

首先先理解Docker

Windows专业版上安装Docker时,本质上是借助于Windows平台的hyper-v技术来创建一个Linux虚拟机,你所输入的所有的命令,都是借助于虚拟机中所部署的Docker引擎(服务端)进行执行的,所有Pull到本地的镜像数据,都是存储到对应的虚拟机目录里面;

而这其实也恰恰符合Docker的作风,毕竟Docker在运行时分为Docker引擎(也就是服务端守护进程)和客户端工具,而我们每次敲下的Docker命令,实际上是通过Docker引擎(服务端)所提供的一组REST API来进行的交互,表面上来看我们是在和本机执行各种docker操作,而实际上一切都是在通过远程调用的方式来实现的;正是基于Docker的这种 C/S架构,Docker才可以在各种系统上无缝的运行,其在Windows上之所以能够运行的原理也是这样的;

Windows本身先虚拟化一个Linux服务器,而Docker引擎的服务端,实际上就是安装于本地的Windows的Linux虚拟机上!而我们每次通过本地的PowerShell或者CMD也好,本质上也只是把所输入的docker 命令,通过https的方式发送到了我们本机的虚拟机上才产生了一系列的交互;

但实际上,Docker引擎服务还是只能运行在Linux上,之所以能在Winidows本机运行,是因为Windows本机也安装了对应的Linux虚拟机程序;所以!这其中Docker是在Windows专业版上运行,还是在Windows家庭版上运行,唯一的区别和变量就是,虚拟机!这也是Windows家庭版和专业版唯一的区别所在了;

由于Windows专业版上具备Hyper-V技术(windows自身的虚拟机技术),所以只要开启对应的Hyper-v后,再进行一系列的安装,便可以在Windows本地使用Docker了;而Windows家庭版是不具备Hyper-V的,所以如果要在家庭版上进行Docker的安装,其首先也需要先部署一个Linux的虚拟机程序才行,那么此处则是:Oracle VM VirtualBox(一款开源的虚拟机软件);

上面所对应的阐述是很重要的哦,除了可以理解windows专业版和家庭版安装的区别,实际上更是对Docker服务引擎进一步的熟悉,因为当你理解了Docker Server和对应的Docker Client的关系后,你会发现,实际上我们后续的各种Docker的操作,Dockerfile,docker build .  copy,等都是具备client - server 的思想在里面的;(docker的命令只是客户端!真正的执行则是在Docker的服务端进行的执行)! (^_−)

原创声明:作者:Arnold.zhao  博客园地址:https://www.cnblogs.com/zh94

大胆剖析一下Windows版Docker安装的步骤

按照对应的理解:当我们在家庭版上进行docker的安装的时候,对应的安装步骤:

1、先安装 Oracle VM VritualBox

2、再进行 Docker Server引擎的部署至对应的虚拟机中,

3、再进行本地Windows的安装(此时的安装是将对应的Docker命令进行本地Windows的安装)使其CMD,PowerShell也好等客户端,可以识别出对应的Docker命令规范,使其在客户端执行对应的命令时,可以进行对应的识别,并将对应的命令及信息通过https发送到对应的Docker引擎上;

那么我们真正的安装时,真的是这么麻烦吗?当然不是啦,真正安装时,我们只需要下载一个对应的安装包,进行无脑next next finish 就行啦;

那为什么上面还扯这么多呢?第一:是因为明白上述的安装步骤对后续的使用具备很大的指导意义,第二:当你把所对应的安装包安装完以后,你会发现存在对应的三个应用程序,当然啦!因为一个是虚拟机,一个是客户端!一个是GUI啦!所以,在明确上述的整体过程后,实际上对所安装后所出现的应用就不会感觉到陌生了;

Windows Docker家庭版安装包下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ (选择最新的进行下载就好啦,阿里的服务器,应该是在持续的维护当中的)

安装过程中,你可能会出现一些问题,当然,每个人都会在安装的时候出现一些问题,甚至于每个人的问题应该都不一样,不过此处还是推荐一篇文章:如果是第一次安装的话,可以参考下该文章进行解决下对应的Error:https://www.cnblogs.com/jimmyshan-study/p/11161428.html  ,我在进行对应的安装的时候,出现的问题和当前博客中所说明的问题还是不太一样的,不过凭借着基本的一些认知,最终还是顺利安装完成了;

安装完成后

安装完成后,一般则是会有三个服务,分别是:Oracle VM VirtualBox,docker-quickstart-terminal,Kitematic.exe,;

docker-quickstart-terminal.就不用说了,这个就是你启动Docker时的应用程序(不过本人此处docker-quickstart-terminal是无效的);

此处重点说明下,对应的Oracle VM VirtualBox 和 Kitematic 应用程序;

Oracle VM VirtualBox

截图如下:

当你正常进行了docker的安装后,以及可以在cmd等控制台可以正常输出docker --version,此时说明你的Docker 服务端引擎是正常运行的状态,如上图所示,可以看到Oracle VM VirtualBox管理器,包含的

第一个虚拟机实例 “default” 是不可以被删除的,因为当前 default 的Linux虚拟机实例,便是进行安装包安装时,直接部署进当前VirtualBox的默认实例,(该Linux虚拟机内所部署的Docker引擎会随着虚拟机的启动而自动启动,所以不用担心无法启动Docker引擎的问题,只要能够保证当前虚拟机实例是启动的即可)

而当我们把当前Linux虚拟机实例进行暂停的时候,则会出现的现象是什么?

 此处我们将对应的Docker虚拟机进行暂停,此时再进行 docker 的命令,会发现存在异常提示,异常内容如下:HTTPS://IP:PORT 链接没有响应,此处则充分说明了,当前的Docker引擎的实际使用方式,的确是 Client - Server 通过 REST API进行的交互方式!(^_−)

Kitematic (Alpha)

Kitematic是Docker的一款GUI工具,界面很优雅,用着很舒服,只要简单的点点点,就可以实现容器的自启,pull镜像等基本操作,并且可以进行容器的相关配置等功能,界面很暖,使用起来也是很舒服的,详情如下图所示:

可参考链接:

https://www.cnblogs.com/jimmyshan-study/p/11161428.html

https://www.cnblogs.com/brock0624/p/9792203.html

原创声明:作者:Arnold.zhao  博客园地址:https://www.cnblogs.com/zh94

深入剖析Windows专业版安装Docker引擎和Windows家庭版Docker引擎安装的区别的更多相关文章

  1. 『开发技术』Docker开发教程(一)安装与测试(Windows 家庭版)

    0.前言 针对其他系统和版本,Docker都很容易安装,可以参考官方教程:https://docs.docker.com/docker-hub/ 由于Windows10家庭版无法安装docker,因此 ...

  2. Docker Desktop for Windows 安装步骤

    Docker Desktop for Windows 安装要求 Docker Desktop for Windows需要运行Microsoft Hyper-V.如果需要,Docker Desktop ...

  3. 温故知新Docker概念及Docker Desktop For Windows v3.1.0安装

    Docker 简介 什么是Docker? Docker是一个开放源代码软件项目,项目主要代码在2013年开源于GitHub.它是云服务技术上的一次创新,让应用程序布署在软件容器下的工作可以自动化进行, ...

  4. Windows server 2016 支持容器 ,安装docker 搭建Ubuntu+hadoop (docker为服务器)

    一.Windows server 2016 是肯定要安装的, 关于如何启动容器功能那就是控制面板中增加与删除里面的启用了,很多地方可以百度到 二. 安装Ubuntu hadoop 等  待续 注意: ...

  5. Docker CE for Windows安装使用

    原文:Docker CE for Windows安装使用 官网下载并安装Docker CE for Windows IDEA连接Docker Docker一些常用命令 Docker for windo ...

  6. Windows下的Linux子系统安装,WSL 2下配置docker

    Windows下的Linux子系统安装,WSL 2下配置docker 前提条件: 安装WSL 2需要Windows 10版本是Build 18917或更高,首先先确认系统版本已升级. 在“启用或关闭W ...

  7. windows下安装linux虚拟机(wsl2),并安装docker。

    一.windows terminal(重要工具,但也可以不装) 这是微软官方推荐的终端工具,类似mac的iterm2,可同时开启多个终端,最开始默认有power shall,cmd,可下载gsudo集 ...

  8. Windows10 家庭版 Docker的安装

    Docker的安装 1.简介:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中, 然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全 ...

  9. 首创诠释docker的Formulas: Windows 7 + Tiny Linux 4.19 + XFS + Vmware Workstation = super machine (docker从零开始时记,Follow me and you go)

    不少人从来没有接触过docker,或者仅仅是听说过,本文试图从原点开始深入了解docker的全貌,剖析docker的基础概念,让我们一起开始docker之旅~~~ 开场:什么是docker docke ...

随机推荐

  1. 图像滤波—opencv函数

      函数原型 方框滤波 ,-), bool normalize = true, int borderType = BORDER_DEFAULT) 均值滤波 ,-), int borderType = ...

  2. IDEA常用操作链接

    idea中svn的提交.更新等操作 https://jingyan.baidu.com/article/375c8e19e3c47a25f3a22955.html Idea 部署SVN详细步骤以及上传 ...

  3. 2.17NOIP模拟赛(by hzwer) T3 小奇回地球

    [题目背景] 开学了,小奇在回地球的路上,遇到了一个棘手的问题. [问题描述] 简单来说,它要从标号为 1 的星球到标号为 n 的星球,某一些星球之间有航线. 由于超时空隧道的存在,从一个星球到另一个 ...

  4. [lua]紫猫lua教程-命令宝典-L1-03-01. 闭包

    L1[闭包]01. 函数的传递赋值 没什么说的 1.函数作为变量来看 可以轻松的声明 相互赋值 2.函数变量本质是 一个内存指针 所以函数变量的相互赋值不是传递的函数本身 而是指向这个函数的内存地址 ...

  5. C++如何输入单行和多行带空格的字符串并将字符串倒序输出

    首先,我们知道在C++中,空格或者回车被认为是字符串的分割标志,使用cin输入string类的字符串时遇到会自动停止接收输入 例如,当如下程序时: #include <bits/stdc++.h ...

  6. python自动化用例框架搭建--目录结构规划

    目录结构搭建 Test_framework |--config(配置文件) |--data(数据文件) |--drivers(驱动) |--log(日志) |--report(测试报告) |--tes ...

  7. 小程序websocket用法

    // socket已经连接成功 var socketOpen = false // socket已经调用关闭function var socketClose = false // socket发送的消 ...

  8. ASP.NET Core Web API 路由的有效使用

    ROUTING 在 .NET Core Web API 项目中,我们应该使用属性路由代替传统路由,这是因为属性路由可以帮助我们匹配路由参数名称与 Action 内的实际参数方法.另一个原因是路由参数的 ...

  9. Educational Codeforces Round 76 (Rated for Div. 2) A. Two Rival Students

    You are the gym teacher in the school. There are nn students in the row. And there are two rivalling ...

  10. kotori和bangdream

      #include<cstdio> #include<iostream> using namespace std; int n,x,a,b; int main() { cin ...