docker源码安装(docker必装镜像方法)

docker源码安装(docker必装镜像方法)

Docker 基础介绍下图为 Docker 图标(是一个鲸鱼上面是集装箱)。

1、我们为什么要使用Docker当我们在工作中,一款产品从开发设计到上线运行,其中需要开发人员和运维工程师,开发人员负责代码编写,开发产品,运维工程师需要测试环境,产品部署。这之间就会有分歧。比如开发人员在自己的电脑上运行产品没有问题,可是换了一个环境,运维工程师部署的时候由于操作环境和开发人员不一致,其中包括操作系统、开发环境、部署文件等等。开发人员需要告诉运维团队所需的全部配置文件 所有的软件环境,也就导致产品部署出现问题,开发人员和运维工程师出现分歧。就好比我们要开发一个电商项目,其中肯定包括 Java 环境/Tomcat/ MySQL / JDBC 驱动包/相应 jar 包等,还需要较复杂的安装配置,并且不能跨平台使用,如果开发人员在 Windows 上开发,而运维工程师部署产品在 Linux 上,就会导致由于环境不同的产品部署问题,就算不跨系统,而是换一台同样操作系统的服务器,要移植部署依然非常麻烦。为了解决这个问题,我们的 Docker 应运而生!2、Docker是什么说了这么多,那么 Docker 到底是什么,能帮我们做什么,且听我慢慢道来。首先我们要知道,Docker 是基于 Go 语言实现的云开源项目,Docker 的主要目标是“Build,Ship and Run Any App,Anywhere”,Docker 其中包括,镜像、容器、仓库,很简单,目的就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的产品(可以是 web 应用或者数据库应用)及其环境能够做到“一次封装,到处运行”。再通俗点说,就是我们使用 Docker,使得运行在 Docker 容器上面的应用,配置好一次环境,换到别的机器上可以一键部署,大大简化了操作,实现了跨平台,跨服务器,由下而上打包,达到应用程式跨平台间的无缝接轨运作。一句话,Docker解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。3、Docker能干什么这个需要对比来说,其实我们常用的虚拟机就和Docker类似,我将通过之前的虚拟机技术和现在和容器虚拟化技术做一个对比。(1)之前的虚拟机技术我们对虚拟机并不陌生,其实它也可以看作是一个Docker,是一种带环境安装的解决方案,可以在一个操作系统中运行另一个操作系统,对于计算机底层来说,虚拟机就是一个软件而已,不需要的时候就可以删掉,对其他部分毫无影响,我们也可以通过虚拟机实现不同产品的打包发布,但是它也有很多缺点,比如:资源占用多、冗余步骤多、启动慢。(2)容器虚拟化技术由于前面虚拟机存在诸多问题,Linux 发展出了另一种虚拟化技术:Linux 容器,Linux 容器不是模拟一个完整的操作系统而是对进程进行隔离,有了容器,我们就可以将软件运行所需的所有资源打包到一个隔离的容器中,容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。(3)小总结传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。4、Docker的优势更快速的应用交付和部署;更便捷的升级和扩缩容;更简单的系统运维;更高效的计算资源利用。

(2)HelloWorlddockerpullhello-worlddockerrunhello-world如下图:

至此安装完毕!

Docker常用命令1、帮助命令dockerversion#查看版本号dockerinfo#显示Docker系统信息,包括镜像和容器数docker–help#查看Docker有哪些命令2、镜像命令dockerimages#查看当前Docker中的镜像dockersearch某个镜像名字#查询某个镜像dockerpull某个镜像名字#拉取(下载)某个镜像dockerrmi某个镜像名字ID#删除某个镜像3、容器基本命令(切记,有镜像才能创建容器)dockerrun[OPTIONS]image[COMMAND][ARG…]#新建并启动容器dockerps[OPTIONS]#列出当前所有正在运行的容器exit#容器停止退出ctrl P Q#容器不停止退出dockerstart容器ID或者容器名#启动容器dockerrestart容器ID或者容器名#重启容器dockerstop容器ID或者容器名#停止容器dockerkill容器ID或者容器名#强制停止容器dockerrm容器ID#删除已停止的容器dockerrm-f$(dockerps-a-q)#一次性删除多个容器dockerps-a-q|xargsdockerrm#一次性删除多个容器4、容器重要命令dockerrun-d容器名#启动守护式容器dockerlogs-f-t–tail容器ID#查看容器日志,-t是加入时间戳,-f是最新的日志打印,–tail数字显示最后多少条dockertop容器ID#查看容器内运行的进程dockerinspect容器ID#查看容器内部细节dockerexec-it容器IDbashShell#进入正在运行的容器并以命令行交互dockerattach容器ID#重新进入Docker容器dockercp容器ID:容器内路径目的主机路径#从容器内拷贝文件到主机上

Docker 镜像1、Docker镜像是什么?是一种UnionFS(联合文件系统),是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。2、Docker镜像加载原理Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引导加载kernel, Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。3、Docker镜像为什么很小如果我们从仓库pull一个centos只有200左右mb,但是我们的镜像centos文件高达4G左右,因为我们的在仓库pull的centos剔除了无用的东西,只是一个精简的OS,rootfs可以很小,只包含了最基本的命令、工具和程序库就可以了,因为底层直接用Host的kernel,自己只需要提供rootfs 就行了。4、Docker分层的镜像如下图所见,当我们在仓库下载tomcat时,是一层一层下载的,这里面包含着运行tomcat的环境,就像洋葱一样,一层一层的最终展示给我们镜像版的tomcat。

5、Docker镜像为什么要采用分层结构Docker镜像最大的一个好处就是 – 共享资源。比如:有多个镜像都从相同的 base 镜像构建而来,那么宿主机只需在磁盘上保存一份base镜像,同时内存中也只需加载一份 base 镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。6、Docker镜像的特点Docker镜像都是只读的当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。

更多精彩推荐

??程序员在这些地方敲代码,普通笔记本根本扛不住

??怒肝 8 个月源码,我成为了 Spring 开源贡献者

??可怕!CPU 竟成了黑客的帮凶

??Gary Marcus:因果熵理论的荒诞和认知科学带给AI的11个启示 | 文末赠书

??这 10 个云计算错误,会让你的业务一蹶不振

??好扑科技结合区块链行业发展趋势,重磅推出“好扑区块链合伙人”计划

发表评论

登录后才能评论