本文目录
- 如何编写 docker dockerfile
- 如何用Dockerfile创建镜像
- DOCKER 总结
- dockerfile是什么文件
- Docker 有什么优势
如何编写 docker dockerfile
如何使用Dockerfile用来创建一个自定义的image,包含了用户指定的软件依赖等。当前目录下包含Dockerfile,使用命令build来创建新的image,并命名为edwardsbean/centos6-jdk1.7:docker build -t edwardsbean/centos6-jdk1.7 .Dockerfile关键字如何编写一个Dockerfile,格式如下:# CommentINSTRUCTION argumentsFROM基于哪个镜像RUN安装软件用MAINTAINER镜像创建者CMDcontainer启动时执行的命令,但是一个Dockerfile中只能有一条CMD命令,多条则只执行最后一条CMD.CMD主要用于container时启动指定的服务,当docker run command的命令匹配到CMD command时,会替换CMD执行的命令。如:Dockerfile:CMD echo hello world运行一下试试:edwardsbean@ed-pc:~/software/docker-image/centos-add-test$ docker run centos-cmdhello world一旦命令匹配:edwardsbean@ed-pc:~/software/docker-image/centos-add-test$ docker run centos-cmd echo hello edwardsbeanhello edwardsbeanENTRYPOINTcontainer启动时执行的命令,但是一个Dockerfile中只能有一条ENTRYPOINT命令,如果多条,则只执行最后一条ENTRYPOINT没有CMD的可替换特性USER使用哪个用户跑container如:ENTRYPOINT USER daemonEXPOSEcontainer内部服务开启的端口。主机上要用还得在启动container时,做host-container的端口映射:docker run -d -p 127.0.0.1:33301:22 centos6-sshcontainer ssh服务的22端口被映射到主机的33301端口ENV用来设置环境变量,比如:ENV LANG en_US.UTF-8ENV LC_ALL en_US.UTF-8ADD将文件《src》拷贝到container的文件系统对应的路径《dest》所有拷贝到container中的文件和文件夹权限为0755,uid和gid为0如果文件是可识别的压缩格式,则docker会帮忙解压缩如果要ADD本地文件,则本地文件必须在 docker build 《PATH》,指定的《PATH》目录下如果要ADD远程文件,则远程文件必须在 docker build 《PATH》,指定的《PATH》目录下。比如:docker build github.com/creack/docker-firefoxdocker-firefox目录下必须有Dockerfile和要ADD的文件注意:使用docker build - 《 somefile方式进行build,是不能直接将本地文件ADD到container中。只能ADD url file.ADD只有在build镜像的时候运行一次,后面运行container的时候不会再重新加载了。VOLUME可以将本地文件夹或者其他container的文件夹挂载到container中。WORKDIR切换目录用,可以多次切换(相当于cd命令),对RUN,CMD,ENTRYPOINT生效ONBUILDONBUILD 指定的命令在构建镜像时并不执行,而是在它的子镜像中执行
如何用Dockerfile创建镜像
使用dockerfile构建镜像dockerfile使用基本的基于DSL语法的指定来构建一个docker镜像。之后使用docker build 命令基于dockerfile中的指定构建一个新的镜像1.docker大体上按照如下流程执行dockerfile中的指令:docker从基础镜像运行一个容器执行一条指令,对容器做出修改执行类似docker commit的操作,提交一个新的镜像层docker再基于刚提交的镜像运行一个新的容器执行dockerfile中的下一条指定,直到所有指令都执行完毕。例子:mkdir static_webvim Dockerfile#versionFROM centos6-epelMAINTAINER zhoufujinRUN yum -y install 如果想要略过缓存功能,可以使用docker build 的--no-cache标志基于构建缓存的dockerfile模板构建缓存带来一个好处就是,我们可以实现简单的dockerfile模板(比如在dockerfile文件顶部增加包仓库或者更新包,从而尽可能确保命中缓存)docker history 可以用来查看镜像是如何构建出来的
DOCKER 总结
Docker 是一个开源的 应用容器引擎 ,让 开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化 。容器是完全使用沙箱机制,相互之间不会有任何接口。
由于本地开发好的程序往往都需要部署到服务器上进行运行,这就导致了程序需要运行在不同的环境上,这通常是一个令人头痛的事情。在过去,开发团队需要清楚的告诉运维部署团队,其所使用的全部配置文件+所有软件环境。不过,即便如此,仍然常常发生部署失败的状况。
于是乎, 虚拟化 技术应运而生。开发团队将开发好的程序在虚拟机上运行,这样就能解决运维的问题。但是由于虚拟机技术过重的特性导致了其 资源占用多、冗余步骤多以及启动慢的缺陷 。而这个时候 一种新的虚拟化技术搭配上容器化的思想 的产品便出现了,而它就是Docker。
下图是虚拟机技术和容器化技术架构的对比。我们可以得出以下总结:
](
狂神说
dockerfile是什么文件
“一键备份C盘“的映像保存在什么位置?有何优点?怎么打开?怎么删除? 答:(1)保存位置:第一硬盘最后一个分区:\~1\C_PAN.GHO (2)~1的优点:此文件夹在资源管器中完全隐藏(即使打开“显示所有文件“ 也不可见),从而保证了映像文件不会被轻易的删除.注意:最后一个分 区为NTFS(含少数FAT32)目前仅能实现一般性隐藏. (3)打开方法:开始-》程序-》一键GHOST-》一键GHOST-》文件-》打开 (4)删除方法:卸载一键GHOST-》出现“请选择“对话框选择“否“.
Docker 有什么优势
1、更高效的利用系统资源docker对系统资源的利用率更高,无论是应用执行速度,内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机往往可以运行更多数量的应用。2、更快速的启动时间传统的虚拟机技术启动应用服务往往需要数分钟,而docker容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级,甚至毫秒级的启动时间,大大的节约了开发测试,部署的时间。3、一致的运行环境开发过程中常见的一个问题是环境一致问题,由于开发环境,测试环境,生产环境不一致,导致有些bug并未在开发过程中发现。而docker的镜像提供了除内核外完整的运行时环境,确保环境一致性,从而不会在出现“这段代码在我机器上没问题”这类问题。4、持续支付和部署对开发和运维人员来说,最希望就是一次创建和部署,可以在任意的地方运行。(定制应用镜像来实现集成、持续支付、部署。开发人员可以通过dockerfile来进行镜像构建,并结合持续集成系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署系统进行自动部署)。而且使用dockerfile使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。5、更轻松的迁移由于docker确保了执行环境的一致性,使得应用的迁移更加的容易。docker可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云、甚至是笔记本、其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。6、更轻松的维护和拓展docker使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得十分简单。此外,docker团队同各个开源项目团队一起维护了一大批高质量的官网镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。