Docker的基本组成

xxx.jpg
镜像(image):
docker镜像好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像===>run==>tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目就是在容器中的)
容器(container):
docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建
启动,停止,删除,基本命令!
目前就可以把这个容器理解为一个建议的linux系统
仓库(repository):
仓库就是存放镜像的地方
仓库分为共有仓库和私有仓库
docker Hub (默认是国外的)
阿里云…都有容器服务器(配置镜像加速!)

安装Docker

环境准备

  1. 需要会LInux基础
  2. Centos 7
  3. 使用shell软件

环境查看

  1. [root@VM-24-6-centos ~]# uname -r
  2. 3.10.0-1160.66.1.el7.x86_64
[root@VM-24-6-centos ~]# 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"

安装

#    1.卸载旧的版本
yum remove docker    \
                    docker-client \
                    docker-client-latsest \
                    dockercommon \
                    docker-latest \
                    docker-latest-logrotate \
                    docker-logrotate \
                    docker-engine
# 2.需要的安装包
yum install -y yum-utils
#    3.设置镜像仓库
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

#4.安装docker   docker-ce社区版   -ee企业版
yum install docker-ce docker-ce-cli containerd.io

#5.启动docker
systemctl start docker

#6.使用docker version检查安装是否成功
[root@VM-24-6-centos ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.17
 API version:       1.41
 Go version:        go1.17.11
 Git commit:        100c701
 Built:             Mon Jun  6 23:05:12 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.17
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.11
  Git commit:       a89b842
  Built:            Mon Jun  6 23:03:33 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.6
  GitCommit:        10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
 runc:
  Version:          1.1.2
  GitCommit:        v1.1.2-0-ga916309
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

#7.hello-world
docker run hello-world

#8.查看一下下载的 hello-world 镜像
[root@VM-24-6-centos ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   8 months ago   13.3kB

卸载docker
yum remove docker-ce docker-ce-cli containerd.io
rm -f /var/lib/docker

阿里云镜像加速
配置

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<'EOF'
{
  "registry-mirrors":["https://qiyb9988.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

docker流程图
流程图.jpg

底层原理

docker是怎么工作的?
docker是一个Client-Server结构的系统 , docker的守护运行在主机上,通过socket从客户端访问
dockers server 接收到 docker-client 的指令,就会执行这个命令!liuc.jpg
docker为什么比VM快?

  1. docker有着比虚拟机更少的抽象层
  2. docker利用的是宿主机的内核,vm需要的是Guest OS

1.jpg
所以说,新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统的内核,避免引导.虚拟机是加载Guest OS,分钟级别的,而docker是利用宿主机的操作系统内核,省略了这个复杂的过程2.jpg