前言:
一、定义
Docker 容器是一种轻量级、可移植、自包含的软件打包技术。它是通过 Docker 引擎创建的运行实例,将软件及其依赖项打包到一个独立的单元中,使得应用程序可以在不同的计算环境中以相同的方式运行。
简单来说,就好像是一个装满了应用程序和它运行所需一切(如代码、运行时环境、系统工具、库等)的盒子。这个盒子可以在任何支持 Docker 的地方被轻松地搬运和开启运行。
二、与传统虚拟机的对比
1、资源占用:虚拟机包含完整的操作系统,占用大量的磁盘空间和内存。例如,一个运行 Windows Server 2019 虚拟机可能需要几十 GB 的磁盘空间和数 GB 的内存来运行。Docker 容器共享主机的操作系统内核,多个容器可以运行在同一个操作系统之上。一个简单的 Node.js 应用容器可能只需要几十 MB 到几百 MB 的磁盘空间和相对较少的内存,因为它不需要包含完整的操作系统,只需要应用本身和相关依赖的资源。
2、启动速度:虚拟机启动时需要加载完整的操作系统,这个过程比较缓慢,可能需要几分钟时间。例如,启动一个基于 Linux 的虚拟机,从开机自检到操作系统完全启动,可能需要 1 - 2 分钟。Docker 容器启动非常快,因为它不需要启动完整的操作系统,只是启动应用程序及其依赖,通常可以在几秒内完成启动。像一个简单的 Web 服务容器,可能只需要 1 - 2 秒就可以开始提供服务。
3、隔离性:虚拟机提供了硬件级别的隔离,每个虚拟机都有自己独立的操作系统,安全性相对较高。但是这种隔离也导致资源利用效率相对较低。Docker 容器是通过操作系统的内核特性(如 Linux 的 cgroups 和 namespaces)实现进程级别的隔离,在保证应用相对独立运行的同时,能更高效地利用资源。不过,容器之间的隔离性相对虚拟机稍弱,例如在容器共享内核的情况下,如果内核出现问题,可能会影响多个容器。
三、容器的组成部分
1、镜像(Image):镜像是容器的基础,它是一个只读的模板,包含了运行容器所需的所有文件系统层。例如,一个 Ubuntu 操作系统的 Docker 镜像包含了 Ubuntu 系统的文件结构、安装的软件包等。可以通过docker pull命令从 Docker Hub(一个公共的镜像仓库)或者其他私有镜像仓库拉取镜像。
镜像采用分层结构,每层代表一次文件系统的修改。例如,基础的 Ubuntu 镜像可能是一层,在上面安装了一个 Web 服务器软件(如 Nginx)就会新增一层,这种分层结构使得镜像的构建和存储更加高效。
2、容器层(Container Layer):当从镜像启动一个容器时,会在镜像之上添加一个可写的容器层。容器运行过程中产生的所有数据(如日志文件、配置文件的修改等)都存储在这个容器层。这使得容器在停止后重新启动时可以保留之前的运行状态。
实验步骤:
1、查看自己虚拟机版本以及下载dnf工具
2、清除虚拟机中老版docker(可能没有docker,但是敲完无影响)
3、下载dnf插件
4、搜索阿里云镜像开源站,通过命令进行安装
方法一:根据官方文档走(不想看官方文档直接看方法二)
方法二:按命令来
5、配置国内镜像加速
6、查看docker是否安装成功
7、启动docker
8、docker的使用,从docker hub中拉取一个Ubuntu镜像
9、docker的镜像文件在该文件夹下
10、以Ubuntu这个镜像为基础启动一个容器来运行,并启动Ubuntu里面的bash进行交互操作
11、列出所有镜像
以上实验完成。