Docker技术入门与实践

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

DockerLogo

Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotCloud公司,其目标是“Build, Ship and Run Any App, Anywhere”,主要概念包括镜像、容器、仓库。Docker引擎的技术是Linux容器(Linux Containers, LXC)技术。容器有效地将由单个操作系统的资源划分到孤立的组中,以便更好地在孤立的组之间平衡有冲突的资源使用需求。

Docker和传统的虚拟机方式的不同之处

Docker 使用Go语言开发,并且运行在Linux系统下,而如果想用Windows运行,只能在Windows基础上先运行一个Linux虚拟机,然后再在这个Linux虚拟机下运行Docker 。这么看来,Docker 好像并没有对Windows进行友好的优化和开发,但这是没有办法的,可能Docker 的内部算法、构造需要Linux系统的某些特性,而Windows是没有的,这也是Windows系统的劣势。那么说好的是Windows下安装Docker ,无论是多么建议Linux下安装都好,可能有的同学就是没有Linux的主机,那就只能用Windows安装了。

使用docker toolbox安装docker

对于Windows用户来说,使用docker toolbox来安装docker是最简单的方式

docker toolbox是一个工具集,它主要包含以下一些内容:

  • Docker CLI 客户端,用来运行docker引擎创建镜像和容器;
  • Docker Machine. 可以让你在windows的命令行中运行docker引擎命令;
  • Docker Compose. 用来运行docker-compose命令;
  • Kitematic. 这是Docker的GUI版本;
  • Docker QuickStart shell. 这是一个已经配置好Docker的命令行环境;
  • Oracle VM Virtualbox. 虚拟机;

由于Docker引擎的守护进程使用的是Linux的内核,所以我们不能够直接在windows中运行docker引擎。而是需要运行Docker Machine命令 docker-machine, 在你的机器上创建和获得一个Linux虚拟机,用这个虚拟机才可以在你的windows系统上运行Docker引擎

第一步:检查你当前的windows系统是否符合要求:

为了运行Docker,你的机器必须是windows7或以上版本的64bit系统。另外,你的机器必须支持硬件虚拟化技术(Hardware Virtualization Technology)并且已被启用。对于windows10系统来说,你可以在 任务管理器->性能 中查看到你的电脑是否开启了虚拟化。

第二步:安装Docker Toolbox

DockerToolbox01.png
DockerToolbox02.png
DockerToolbox03.png

在这一步,你将安装Docker Toolbox。安装后你的系统将会安装以下几个软件:

  • Windows版的Docker客户端;
  • Docker Toolbox管理工具和ISO镜像;
  • Oracle VM Virtualbox;
  • Git MSYS-git Unix 工具。

第三步. 确认是否安装成功

DockerToolbox04.png
  1. 安装完成后,你会在你的电脑桌面上看到新增了三个图标;
  2. 双击Docker Quickstart Terminal图标,启动一个终端;
DockerToolbox05.png

第一次启动的话你会看到命令行会输出一些东西,等待一下,它会配置Docker Toolbox,之后,当它完成后,你会看到启动成功的画面;

这个终端是运行在bash环境下的,而不是标准的windows命令行,因为Docker需要运行在bash环境下,否则一些命令无法运行

  1. 在命令行中输入docker run hello-world并按回车键,如果docker配置成功的话,你会看到命令行中有如下输出:
DockerToolbox07.png

可能出现的问题

若点击Docker Quickstart Terminal图标后,提示window正在查找bash.exe的话,
点击浏览自己查找。一般在Git所安装下的bin目录。

D:\Program Files\Git\bin\bash.exe

打开后,若在bash界面提示没有boot2docker镜像,需要在github上下载

这是因为没有找到默认的boot2docker镜像的原因,提示正在下载,然而github的下载速度不可恭维,第一反应都是找别的站资源下载。在此要注意了,不同的docker版本最好要对应相同的boot2docker版本,相信打开github下载页的应该都留意到。最后我才发现,其实不用下载,在一开始安装好的DockerToolbox根目录下就有一个boot2docker,并且可以推断就是对应的版本。
把boot2docker.iso复制到,bash所提示找不到的那个目录下(我这里是C:\Users\Administrator.docker\machine\cache),再重新启动即可。

Running pre-create checks...
Creating machine...
(default) Copying C:\Users\Administrator\.docker\machine\cache\boot2docker.iso t
o C:\Users\Administrator\.docker\machine\machines\default\boot2docker.iso...
(default) Creating VirtualBox VM...
(default) Creating SSH key...
(default) Starting the VM...
(default) Check network to re-create if needed...
Error creating machine: Error in driver during machine creation: This computer d
oesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory
Looks like something went wrong in step ´Checking if machine default exists´...
Press any key to continue...

bios里怎么 开启 vt-x amd-v

Error getting IP address: ssh command error:
command : ip addr show
err     : exit status 255
output  :
docker is configured to use the default machine with IP
For help getting started, check out the docs at https://docs.docker.com

Start interactive shell

Administrator@USER-20151208SP MINGW64 ~

处理方案

  1. 打开Oracle VM VirtualBox;
  2. 删除默认的虚拟机,如果在运行就停止后删除;
  3. 重启Docker Quickstart Terminal,会重新生成一个虚拟机,启动完成,问题应该解决了。

下一步:
自此,我们便在我们的windows下安装好了docker环境了。

Docker 基础

201447318131616.png

Docker与虚拟机比较

作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著优势:

  • Docker容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式要快得多。
  • Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器
  • Docker通过类似Git的操作来方便用户获取、分发和更新应用镜像,指令简明,学习成本较低。
  • Docker通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率。
Docker与虚拟机比较

(本段摘自《Docker技术入门与实战》)

虚拟机实现了硬件上的虚拟,而Docker则实现了操作系统级别的虚拟。

参考资料

  • 杨保华. Docker技术入门与实践[M]. 北京:机械工业出版社, 2016.

就我个人而言,掌握一门技术并合理使用它的最好办法就是深入理解这项技术背后的工作原理。通常情况 下,一项新技术的诞生常常会伴随着媒体的大肆宣传和炒作,这使得用户很难看清技术的本质。更确切地说,新技术总是会发明一些新的术语或者隐喻词来帮助宣 传,这在初期是非常有帮助的,但是这给技术的原理蒙上了一层砂纸,不利于用户在后期掌握技术的真谛。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容