什么是DockerDocker是领先的容器即服务(CaaS)平台Docker是全球领先的软件容器平台。开发人员在与同事协作编写代码时使用Docker来消除“在我的机器上工作”的问题。运营商使用Docker在隔离的容器中并行运行和管理应用程序,以获得更好的计算密度。企业使用Docker构建敏捷的软件交付管道,以更快、更安全、更有信心地为Linux、WindowsServer和Linux-on-mainframe应用程序交付新功能。Docker使操作环境尽可能一致。不管是大公司还是小公司,因为代码是版本控制的,所以可以保证大家的代码是一致的;但是由于大家相互开发的硬件不同(比如有的人喜欢在windows环境下开发,有的人用的是Mac电脑),难免会导致开发环境不一致。不区分大小写,但在Linux下敏感),因此提供一种方法来保证相同的开发和运行环境是非常重要的。Java曾经提出“WriteOnce,RunAnywhere”,而Docker提出“Buildonce,Runanywhere,Configureonce,Runanything”。Java的一个很重要的特性就是平台无关性,而使用Java虚拟机是实现这一特性的关键。Java虚拟机屏蔽了与特定平台相关的信息,使得Java语言编译器只需要生成能够在Java虚拟机上运行的目标代码(字节码),无需修改就可以在多个平台上运行。与Java虚拟机类似,Docker通过容器引擎来解决平台依赖问题。它在每台主机上启动一个Docker守护进程。守护进程屏蔽了特定平台的相关信息,并为上层的不同应用提供统一的分析。执行驱动程序、存储驱动程序和网络驱动程序在平台上执行。解决本地多个项目、多个环境相互干扰的问题。可能是不同的项目需要不同的开发环境。比如有的项目需要PHP5.6,有的项目需要PHP7.0;有些项目需要Apache,有些项目需要Nginx。需要在同一台电脑上同时安装同一个软件的不同版本,或者同时运行同一个端口(如:80),都避免不了冲突。有时候我们不想在电脑上同时安装很多开发软件,这时候Docker就会发挥作用。根据不同的项目,使用不同的Docker镜像搭建开发环境;并且每个Docker应用都有自己独立的运行环境,互不干扰。Docker具有版本控制功能。Docker容器也可以像git存储库一样,允许您提交对Docker镜像的更改并通过不同版本管理它们。想象一下,如果你完成了一个组件的升级,而你的整个环境都坏了,Docker允许你轻松地回滚到这个镜像的以前版本。这整个过程可以在几分钟内完成,如果比起虚拟机备份或镜像创建过程,Docker是相当快的,它可以让你快速复制并实现冗余。无论是测试人员还是运维人员也可以基于最新版本的镜像测试部署新的测试环境和生产环境。Docker基本上使用第一个图像。为了加快Docker镜像的下载速度,可以使用一些国产的加速器,比如daocloud,比如Mac:DockerForMac。Advanced选项卡)在Registry镜像列表中添加如下镜像地址:http://40974b5e.m.daocloud.io点击Apply&Restart按钮使设置生效。更多参考:https://www.daocloud.io/mirro...在PHP项目中创建一个DockerfileFROMdaocloud.io/php:5.6-cliCOPY。/usr/src/myappWORKDIR/usr/src/myappCMD["php","./hello.php"]写一个hello.php创建镜像dockerbuild-tmy-php-app.查询镜像dockerimages第一个容器有第一个镜像,可以使用这个镜像创建容器并运行代码。dockerrun-it--rm--namemy-running-appmy-php-app数据量之前说过,代码是有版本控制的,镜像的目标之一就是:让我们的运行环境保持一致。所以我们的做法是尽量把代码和图片分开。这时候就需要用到“数据量”了。数据卷是一个特殊的目录,可以被一个或多个容器使用。它具有以下特点:1.数据量可以在容器之间共享和复用;2、对数据卷内容的任何修改都会立即生效;3、数据卷的内容不包含在镜像中,所以不会影响镜像;使用dockerrun命令时,使用-v标志创建一个数据卷,或者指定将本地主机上的一个目录挂载到容器中,就像我们将本地的hello.php挂载到容器中,稍微修改hello.php",$str);}?>将包含test.txt的本地公共文件夹挂载到容器中,并读取文件内容:dockerrun-it--rm--namemy-running-app-v/Users/ye/docker/learning/demo/public:/usr/src/myapp/publicmy-php-4总结Docker需要和可以学习的东西很多,我们从写一个简单的Dockerfile文件开始创建镜像,创建容器,挂载数据卷,学习和使用Docker一步步。在下一步中,我们将从如何使用现有的laradock(https://github.com/laradock/laradock)来运行Laravel项目来学习更多关于Docker的知识。附:Docker常用命令datavolumeid命令含义1dockerkill$(dockerps-a-q)杀死所有正在运行的容器2dockerrm$(dockerps-a-q)删除所有停止的容器3docker镜像查看本地镜像4dockerps查看本地容器5dockerbuild-tname:tag创建镜像的Dockerfile路径6dockerexec-itIMAGEIDorNAMES/bin/bash进入容器7dockerstopCONTAINERIDorNAMES关闭容器8dockerstartCONTAINERIDorNAMES重启关闭容器9dockerrmCONTAINERID或NAMES以删除本地容器。听说最美最帅的人会打赏作者鼓励coding01。期待您的关注
