前言
首先,请大家和小编一起回顾一下,到底什么是docker。Docker是一个能够把开发的应用程序自动部署到容器的开元引擎,它在虚拟化的容器执行环境中增加了一个应用程序部署引擎,该引擎的目标是提供一个轻量、快速的环境,能够运行开发者的程序,并方便高效的将程序从开发者的笔记本部署到测试环境,然后再部署到生产环境。说的通俗一点,docker其实是一个软件,在这个软件中可以部署很多个容器,我么开发一个程序,把这个程序所需要的各个软件都部署到同一个容器中,构成一个环境,然后开发、测试、实际应用的时候我们就直接部署这个容器就OK啦!
docker是一个C/S架构的程序,docker客户端与docker守护进程交互,从而创建和管理对象(包括镜像、容器等)。详情可见下图:
对docker的初步了解不外乎就是安装程序、docker的宏观把控、其次就是容器和镜像了。
容器
容器是基于镜像启动的,可以运行一个或多个进程。容器有两种状态,一种是交互式运行的容器(交互式容器),一种是长期后台运行的容器(守护式容器)
1.运行交互式容器:
sudo docker run -i -t ubuntu /bin/bash
这句话代表创建并打开了一个容器。回车后进入容器:
2.在容器中下载一个程序:
3.附着到程序上(即进入一个自己想进入的容器)(前提是容器必须start)
4.创建守护式进程
--name之后跟给这个进程起的名字,-d代表是守护式进程后台运行
镜像
镜像是由文件系统叠加而成,他可以从docker仓库(dockerhub)下载,容器就是运行在镜像上的。我对它的理解,就好像是我们自己电脑的程序运行在Windows系统之上,docker容器也是运行在镜像之上的,镜像类似于Windows系统。docker镜像最底层是引导文件系统,即bootfs,像Linux/Unix的引导文件系统,当docker运行时,它会自动卸载,留出更多内存工磁盘使用。第二层是root文件系统rootfs,位于引导文件系统之上,它永远都是只读状态,利用利用加载机制(一次同时加载多个文件系统名)在root上加载更多的只读文件系统,但外面看起来只有一个。docker将这样的系统成为镜像。一个镜像可以放在另一个镜像顶部,当一个镜像启动时,docker会在该镜像的最顶层加载一个读写文件系统,我们想在docker中运行的程序就是在这个读写曾执行的。具体,请看下图:
总结
学习docker的过程,真的是五味陈杂。第一次探索技术,走了很多弯路。所以总结一下自己的经验:
1.宏观把控,弄清楚了它是什么,为什么,从哪来,到哪去,去做什么,对此产生极大地兴趣。
2.第二步,我觉得还是得找点东西把这个技术弄个大致的,可以找本书,看官网文档或者看看网上的系列博客,再对其进行深一步的宏观把控。这个阶段要注意的是,选材,最好专业一点,不然越看越乱。还有一定不要求自己完全弄懂。
3.第三步,进行深入理解,材料可以是书或者官方文档,千万不要在网上随便找一个(会越看越乱,而且不一定对,深有体会。。。),敲demo敲sample,实现一下。
4.总结,这个时候也可以找找网上别的博客,帖子,或者回顾官方文档和书,颗粒归仓,查漏补缺,拓宽知识面。
5.思想篇:不论怎样,一开始都不懂是什么,痛苦的过程是必须要经历的,我们一定要摆正心态。态度乐观,耐下心来,多多沟通交流,保持清晰的思路和逻辑。
继续加油吧~!