问题引出:解决不同用户由于计算机配置不同而导致安装同一个软件却无法正常运行的现象
解决:docker
虚拟机:就是带环境安装的一种解决方案。一个完整的操作系统,所占资源很多。
Linux 容器:解决虚拟机资源占用多,冗余步骤多,启动慢的问题,采用对进程进行隔离的方式,而不是模拟整个操作系统。
docker:对Linux容器的封装
docker核心:Docker 把应用程序及其安装环境依赖,打包在 image 文件里面。
❤️如果你要推广自己的软件,势必要自己制作 image 文件。
🦉只有通过image文件,才能生成 Docker 容器。
🦉image 文件可以看作是容器的模板。
🦉一个 image 文件,可以生成多个同时运行的容器实例。
🦉image文件生成容器并执行后,会根据容器的类型而选择是否终止,若容器只是单纯的输出字符,则输出后即终止,若容器提供的是服务,则是一直运行,需要手动输入docker container kill才能终止容器所提供的服务。
🦉关闭容器并不会删除容器文件,只是容器停止运行而已。可以手动删除。
❤️编写 image文件:
项目根目录建Dockerfile文件,在其中配置image。
有了 Dockerfile 文件以后,就可以使用docker image build命令创建 image 文件了。
步骤:
创建Dockerfile文件
生成image文件
生成容器
发布image文件:hub.docker.com
微服务思想:
软件把任务外包出去,让各种外部服务完成这些任务,软件本身只是底层服务的调度中心和组装层。
例子:
使用docker先通过php的image文件创建一个php容器,再根据mysql的image文件创建一个数据库容器,直接命令行就安装好了,不需要再进行环境的配置。
定制带有mysql的php容器,需要单独创建带有mysqli扩展的php image文件,再生成容器的命令行中添加指令,将该容器与mysql容器连接起来。优化:对于php,直接使用Wordpress的官方镜像。再优化:使用docker安装时自动安装上的docker compose工具管理多个工具的联动。
总结:docker使安装软件并成功运行变得便捷,比如安装php,mysql,nginx软件。在安装对应软件的image文件时设置相关参数就能成功安装并访问到容器对应的服务。