您的位置:首页 > 运维架构 > Docker

学习Docker之Docker、容器和镜像的简介和常用命令

2018-01-21 23:45 796 查看
第一篇通过部署SpringBoot项目来见识到了Docker的强大点我,接下来就来简单聊聊什么是Docker?

什么是Docker

镜像与容器

Docker常用命令

问题

小王在工作之余接了个私单,功能很简单,开发完之后只要在本地将程序跑起来,就能完成客户的需求。于是小王每天晚上花个一两个小时去开发,一周之内搞定了,然而在远程给客户部署的时候,出现了各种各样的问题,光配置环境就花了两三个小时,好不容易搞定了一台机器,客户说“辛苦了,还有十几台要帮我安装一下”,小王听完差点一口老血喷了出来。

工作上小王开发的服务要部署在各个环境上,有的环境还不止一两个节点,一些环境的配置反反复复的去做花费了小王好长的时间,真的是开发十分钟,配置两小时啊。

这些问题看完下面相信你心中就会有解决的办法了。

什么是Docker

*Docker是一个能够把开发的应用程序自动部署到容器的开源引擎。由Docker公司的团队编写,基于Apache2.0开源授权协议发行

Docker在虚拟化的容器执行环境中增加了一个应用程序部署引擎。改引擎的目标就是提供一个轻量、快速的环境,能够运行开发者的程序,并方便高效地将程序从开发者的笔记本部署到测试环境,然后再部署到生产环境。Docker及其简洁,它所需的全部环境只是一台仅仅安装了兼容版本的Linux内核和二进制文件最小限制的宿主机。*

摘自《THE DOCKER BOOK》

简单的说,程序员只要把程序开发好,然后通过Docker就可以很简单很快速的将服务部署在任何一个安装了Docker的机器上。这里引入了容器的概念,Docker可以帮用户构建和部署容器,用户只需要把自己的应用程序或服务打包放进容器即可。





Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计哲学中,唯一不同的是:集装箱运输货物,而Docker运输软件。

每个容器都包含一个软件镜像,也就是说容器的“货物”,而且与真正的货物一样,容器里的软件镜像可以进行一些操作。例如:镜像可以被创建、启动、关闭、重启以及销毁。

和集装箱一样,Docker在执行上述操作时,并不关心容器里塞进了是么,它不管里面是Web服务器,还是数据库,或者是应用服务器是么的。所有容器都按照相同的方式将内容“装载”进去。

Docker也不关心用户要把容器运到何方:用户可以在自己的笔记本中构建容器,上传到Registry,然后下载一个物理的或虚拟的服务器来测试。像标准集装箱一样,Docker容器方便替换,可以叠加,易于分发,并且尽量通用。(内容都在《THE DOCKER BOOK》上)

镜像与容器

10张图带你深入理解Docker容器和镜像

网上介绍镜像与容器的文章很多,每个人都有自己的一套方式去理解,我的理解如下:

容器好比是快递箱(集装箱),镜像好比是集装箱里的货物(实物)。不同的货物在装配的时候所需要的填充物不同,如电子设备可能需要大量的泡沫纸、生鲜需要冰袋等等。这个时候Docker 就好比快递公司,Registry好比某购物平台。假如你想要某个实物(镜像),快递公司会自动将将实物(镜像)打包好送到你的手里,开箱即用。你也可以自己制作实物(镜像),然后指明这个镜像所需要的一些环境等配置,再一并提交给某购物平台(Registry),方便他人使用。

注意:这里只为方便的去理解容器与镜像,可能不同层次理解是不一样的。当然了深层次的容器和镜像并不是这样子的,后续的文章会继续介绍。

接下来就举两个例子

通过已有镜像来启动

之前自己开发了一个服务放在了DockerHub上quick-docker,这个是已知的,我们接下来直接在docker上运行这个启动它





如上图,直接运行一个镜像,docker会将镜像pull到本地,然后按照镜像所需要的环境去创建容器,然后去启动。

自己创建镜像并提交

这里就不在赘述,可参见上一篇博客Docker初体验,里面有详细的步骤。

注意:以上基于个人理解,只是便于去理解,容器和镜像的概念远不如此,并且容器与镜像比较重要,希望看到这里的客观多留意一下,多参看官方的文档。

Docker常用命令

images

搜索image

docker search image_name


下载image

docker pull image_name


列出镜像列表

docker images
可加参数如下

-a, –all=false Show all images;

–no-trunc=false Don’t truncate output;

-q, –quiet=false Only show numeric IDs

删除images,删除images,通过image的id来指定删除谁

docker rmi <image id>


删除images id 为none的

docker rmi $(docker images | grep "^<none>" | awk "{print $3}")


删除全部image

docker rmi $(docker images -q)


显示一个镜像的历史

docker history image_name
可加参数

–no-trunc=false Don’t truncate output;

-q, –quiet=false Only show numeric IDs

container

列出当前所有正在运行的container

docker ps


列出所有的container

docker ps -a


列出最近一次启动的container

docker ps -l


停止所有的container,这样才能够删除其中的images:

docker stop $(docker ps -a -q)


删除所有container:

docker rm $(docker ps -a -q)


更多命令参见:菜鸟教程

最后

Docker入门还是很简单的,本文简单的做了Docker的介绍、容器与镜像的相关内容还有常用的命令,希望对你有所帮助。

CSDN:http://blog.csdn.net/qqhjqs?viewmode=list

博客:http://vector4wang.tk/

简书:https://www.jianshu.com/u/223a1314e818

Github:https://github.com/vector4wang

Gitee:https://gitee.com/backwxc

如果感觉有帮助的话,点个赞哦~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: