Docker是内核级别的虚拟化,可以在一个物理机上可以运行很多的容器实例!服务器的性能可以被发挥到极致。
Docker基本组成
- 镜像:docker镜像就好比是一个目标,可以通过这个目标来创建容器服务,tomcat镜像==>run==>容器(提
供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。 - 容器:Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的启动,停止,删除,基本命令目前就可以把这个容器理解为就是一个简易的 Linux系统。
- 仓库:仓库是存放镜像的地方。仓库分为公有仓库和私有仓库。(很类似git)
安装前的准备
- 环境准备:linux内核3.0以上
[root@iz2zeggjr0d8kt5ik151rdz ~]# uname -r
3.10.0-1127.13.1.el7.x86_64
[root@iz2zeggjr0d8kt5ik151rdz ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
安装docker
- 安装前如果已经安装,需要先卸载
```
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
```
- 安装需要的包
```
sudo yum install -y yum-utils
```
- 设置镜像
```
# 默认国外的
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 推荐使用国内阿里的
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
```
- 更新yum软件包索引
```
yum makecache fast
```
- 安装docker相关的 docker-ce 社区版 而ee是企业版
```
yum install docker-ce docker-ce-cli containerd.io
```
- 启动docker
```
systemctl start docker
```
- 使用docker version查看是否按照成功
```
docker version
```
- 测试
```
docker run hello-world
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210401143131744.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlcm9tcHM=,size_16,color_FFFFFF,t_70)
- 查看镜像
docker images
卸载docker
- 卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
- 删除资源
rm -rf /var/lib/docker
Docker底层原理
工作原理
Docker是一个C/S架构系统,Docker的守护进程运行在主机上,通过socket从客户端访问。当Docker-Server接受到Docker-Client的指令,就会执行相关命令
Docker比虚拟机快的原因
1、docker有着比虚拟机更少的抽象层。由于docker不需要Hypervisor实现硬件资源虚拟化,运行在
docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在
效率上有明显优势。
2、docker利用的是宿主机的内核,而不需要Guest OS。当新建一个 容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。然而避免引导、加载操作系统内核是个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载GuestOS,这个新建过程是分级别的。docker由于直接利用宿主机的操作系统,则省略了这个复杂的过程,因此
新建一个docker容器只需要几秒钟。