为什么要用Docker?
如果我们想使用某种pc软件, 那么在互联网上查找并安装软件的流程大致如下图:
那么这就有几个问题要弄清楚:
从哪里获得软件
App Store
Linux的包管理
从某些网站直接下载
软件是否提供了相关信息和数据例如流行度, 下载次数, 存在的bug, 上次的更新时间等等.
信任问题
下载软件的网站是否为官方网站
http 还是 https
代码
是否还可以下载
是否收费
第一个令人困扰的问题: 安装软件软件是否支持我的操作系统/版本
是否支持我的设备的CPU架构
软件的格式
有些是从源码进行安装
有些是单独的exe文件
有的是exe+dlls
有时候是exe+dlls+依赖某些运行时
软件的安装方式
有自带的安装器
使用包管理工具安装
手动安装
软件的更新和卸载
自动更新?
软件的配置(对于新手来说可能这就是个噩梦)
从上面这些问题可以看出, 现在这个年代, 安装个软件真是个挺麻烦的事, 尤其是用于开发相关的软件, 有时候让人头疼.
第二个问题: 软件的运行这方面可能会存在以下问题:
是否有详细的帮助文档
软件在哪运行
是否需要手动修改系统某些设置
是否需要设置环境变量PATH
如何开始, 如何结束
是否需要注册服务
如何注册服务
是否需要手动编写服务配置
是否需要许可
如何安装和运行软件的依赖项
如果没找到依赖项会怎么处理
循环的依赖项
安全性, 沙箱运行?
破坏性更新
系统更新是否对软件有破坏性影响
共享的库有更新
什么是容器Docker不是虚拟机的替代者, docker不是虚拟化技术, 它更多是关于软件的运行.
什么是容器,它和虚拟机有什么区别?
首先介绍一下虚拟机:
虚拟机管理其把服务器的硬件资源(CPU,内存,硬盘,网络等)切割成多个虚拟的版本, 然后基于这些虚拟的硬件建立操作系统.
虚拟机建立的系统就像是正常的系统服务一样.
与虚拟机管理器不同, Docker或者其他的容器引擎切割的是操作系统的资源, 例如进程的命名空间, 网络栈, 存储栈等等:
每个容器都有PID为1的进程, 每个容器也都有自己的根文件系统(windows的C盘, linux的/).
所以docker可以称作是对针对操作系统的虚拟化操作, 它非常的轻量级.
可以举一些例子, 安装 sql server, mysql, mongodb, postgresql 等, 下载, 安装, 配置. 有的还是挺麻烦的.
下面看看使用docker会怎么样, 首先需要安装docker.
安装DockerDocker for windows 下载地址: https://store.docker.com/editions/community/docker-ce-desktop-windows
安装好docker后, 系统右下角托盘处会有docker的图标, 等到图标不再闪烁了, 说明docker已经启动成功了.
右键点击图标有Settings.
可以通过命令行看一下docker的状态: