参考视频
1.什么是Docker
Docker是一个开源的应用容器引擎,是关于容器的技术。它解决了"软件跨环境迁移问题"。
Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,并发布到任何流行的Linux机器上。
容器使用的是沙箱机制,容器之间是彼此隔离的。
2.Docker解决了什么问题
Docker有效地解决了"软件跨环境迁移问题"。
程序在开发环境A中成功编译且运行,但在其他的环境B却不一定能运行:
- 一方面是环境B中不一定有安装完整的依赖(eg:测试环境没有安装jdk);
- 另一方面则在于环境B的依赖版本可能会有所不同(eg:开发环境用jdk1.8,而测试环境用jdk1.9)。
而Docker提供了一套方案:将程序与所用到的依赖包一并打包成一个"容器“,环境B执行这个容器,容器调用内部环境来运行程序。由于使用的环境源自容器内部,这样就有效规避了不同环境有着不同依赖的问题,也就是"软件跨环境迁移问题”。
3.应用部署的三种方式
-
[传统方式] 传统方式就是在一个系统中,同时运行多个应用。而这些应用共用一套环境,比如app1和app2共用同一个mysql环境。这样做的缺点在于:万一app1出了BUG使得mysql宕机了,app2也将受到牵连,无法运行。
-
[虚拟机部署] 将每个(或多个)应用部署到一台独立的虚拟机中,为应用提供隔离的沙箱环境,能有效避免传统方式可能出现的问题。但缺点也很明显:虚拟机系统中的bootfs(Linux内核)非常占用资源,若在一个机器中开辟多台虚拟机,就会有多个bootfs被同时加载,将占用非常多的资源。
-
[容器部署] 将每个(或多个)应用部署到容器中,不仅能为应用提供隔离的沙箱环境,而且所有容器都共用宿主机(即运行容器的机器)的bootfs,相比虚拟机部署能大幅减小资源的开销。
4.Docker架构
- 镜像和容器:二者关系就像类和对象。镜像可以类比"类",就是一个模板;容器则类比"对象",是镜像的实例,我们的大部分操作(创建、启动、停止、删除、暂停)都针对容器;
- 仓库:保存了各种镜像。Docker Hub是默认的中央仓库(服务器是国外的),而Private Registry则是私人仓库。
5.安装Docker
# 更新yum源
yum update
# 安装yum相关的软件包:
# -- yum-util提供yum-config-manager功能
# -- device-mapper-persistent-data和lvm2是devicemapper驱动的依赖
yum install -y yum-util
yum install -y device-mapper-persistent-data lvm2
# 添加yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装docker社区版
yum install -y docker-ce
# 验证docker是否安装成功:查看docker版本
docker -v
# 让Docker服务开机自启动
systemctl enable docker.service
6.配置镜像加速器
默认情况下,会从Docker Hub(https://hub.docker.com)上下载Docker镜像。但该网站的服务器位于国外,访问速度很慢,因此我们需要更换中央镜像仓库(即配置镜像加速器)。
- USTC:中科大镜像加速器(https://docker.mirrors.ustc.edu.cn)
- 阿里云
- 网易云
- 腾讯云
获取并配置阿里云镜像加速器地址
当你注册了阿里云账号,阿里云就会为你生成一个专属的镜像加速器。
-
[登录阿里云账号] 进入阿里云官网,右上角完成登录;
-
[进入"容器镜像服务 控制台"] 点击上方放大镜图标,搜索"容器镜像服务"并进入到控制台中;
-
[复制命令] 镜像工具 -> 镜像加速器,可以看到阿里云生成了专属的镜像地址,并自动生成了相应的Linux命令。复制即可;
-
[执行命令] 连接服务器,将命令粘贴到终端并执行即可。