Docker技术入门与实践

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

Docker技术入门与实践_第1张图片
DockerLogo

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

Docker技术入门与实践_第2张图片
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

Docker技术入门与实践_第3张图片
DockerToolbox01.png
Docker技术入门与实践_第4张图片
DockerToolbox02.png
Docker技术入门与实践_第5张图片
DockerToolbox03.png

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

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

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

Docker技术入门与实践_第6张图片
DockerToolbox04.png
  1. 安装完成后,你会在你的电脑桌面上看到新增了三个图标;
  2. 双击Docker Quickstart Terminal图标,启动一个终端;
Docker技术入门与实践_第7张图片
DockerToolbox05.png

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

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

  1. 在命令行中输入docker run hello-world并按回车键,如果docker配置成功的话,你会看到命令行中有如下输出:
Docker技术入门与实践_第8张图片
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 基础

Docker技术入门与实践_第9张图片
201447318131616.png

Docker与虚拟机比较

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

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

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

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

参考资料

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

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

你可能感兴趣的:(Docker技术入门与实践)