Docker出现的背景
虚拟化技术和容器化技术对比
虚拟化技术的缺点
- 资源占用十分多
- 冗余步骤多
- 启动很慢
Docker为什么更快
-
docker有着比虚拟机更少的抽象层。由于docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。
-
docker利用的是宿主机的内核,而不需要Guest OS。因此,当新建一个 容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。仍而避免引寻、加载操作系统内核返个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载GuestOS,返个新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返个过程,因此新建一个docker容器只需要几秒钟。
容器化技术
- 比较Docker和虚拟化技术的不同
- 传统虚拟机, 虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
- 容器内的应用直接运行在宿主机的内部,容器是没有自己的内核的,也没有虚拟硬件,所以轻便
- 每个容器间是相互隔离的,每个容器内都有一个属于自己的文件系统,互不影响
- 应用更快速的交互和部署
- 传统:一堆帮助文档,安装程序
- Docker: 打包镜像发布测试,一键运行
- 更便捷的升级和扩缩容
- 更简的系统运维
- 更高效的计算资源利用
基本概念解释
- 镜像(image)
- Docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像 ===> run ===> tomcat01容器, 通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)
- 容器(container)
- Docker利用容器技术,独立运行一个或者一组应用, 通过镜像来创建的
- 启动,停止,删除,基本命令!
- 就目前可以把这个容器理解为一个建议的linux系统
- 仓库(repository)
- 存放镜像的地方
- Docker Hub(默认是国外的)
- 阿里云,都有容器服务(配置镜像加速!)
阿里云镜像加速
- 登录阿里云服务器,找到容器镜像服务
- 设置Registry登录密码
- 找到镜像加速器
- 配置使用
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://pi9dpp60.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
底层原理
Docker Engine是一个客户端-服务器应用程序,具有以下主要组件:
- 一个服务器,它是一种长期运行的程序,称为守护进程(dockerd命令)
- 一个REST API,它指定程序可以用来与守护进程对话并指示它做什么的接口。
Docker是一个Client Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户 端访问,守护进程从客户端接受命令并管理运行在主机上的容器。容器,是一个运行时环境就是我们所说的集装箱。