docker
-
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。 -
Linux 容器是 Linux 发展出了另一种虚拟化技术, Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离,相当于是在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。 -
Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker ,就不用担心环境问题。
Docker的优势
Docker相比于传统虚拟化方式具有更多的优势:
特性 | 容器 | 虚拟机 |
---|
启动 | 秒级 | 分钟级 | 硬盘使用 | 一般为MB | 一般为GB | 性能 | 接近原生 | 弱于 | 系统支持量 | 单机支持上千个容器 | 一般是几十个 |
注意:虚拟机相比, docker 隔离性更弱, docker 属于进程之间的隔离,虚拟机可实现系统级别隔离
安装
-
确定是CentOS7以上版本
cat /etc/redhat-release
-
卸载旧版本 yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
-
yum安装gcc相关命令
yum -y install gcc
yum -y install gcc-c++
-
安装需要的软件包 yum install -y yum-utils
-
设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
更新yum软件包索引
yum makecache fast
-
安装DOCKER CE 引擎(CE是社区版,EE是企业版) yum -y install docker-ce docker-ce-cli containerd.io
-
启动docker systemctl start docker
-
测试
docker version
docker run hello-world
-
补充卸载命令:
systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
阿里云镜像加速
-
容器镜像服务 -
copy命令
mkdir -p /etc/docker
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://aa25jngu.mirror.aliyuncs.com"]
}
-
重启服务器
systemctl daemon-reload
systemctl restart docker
- 再次测试
docker run hello-world
底层原理
为什么Docker会比VM虚拟机快:
(1) docker有着比虚拟机更少的抽象层 由于docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。
(2) docker利用的是宿主机的内核,而不需要加载操作系统OS内核 当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。
|