Docker(二)Docker配置

Docker配置

Dcoker基本组成

Docker(二)Docker配置_第1张图片
镜像( Image):
docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。
容器(container):
Docker利用容器技术,独立运行个或者一个组应用,通过镜像来创建的
仓库(repository):
仓库就是存放镜像的地方,仓库分为公有仓库和私有仓库

Docker 安装

环境配置

# 系统内核版本在 3.10 以上
[root@hwh1 ~]# uname -r
4.18.0-147.8.1.el8_1.x86_64

# 版本信息
[root@hwh1 ~]# cat /etc/os-release 
NAME="Red Hat Enterprise Linux"
VERSION="8.0 (Ootpa)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="8.0"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Red Hat Enterprise Linux 8.0 (Ootpa)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:8.0:GA"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_BUGZILLA_PRODUCT_VERSION=8.0
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.0"

1.首先版本要在 CentOS 7 以上
2.卸载原来的旧版本

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

3.用存储库安装
在一个新主机上安装 Docker Engine 之前,需要先安装 Docker repository

$ sudo yum install -y yum-utils

# 使用国内 阿里云的镜像
$ sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.安装 Docker Engine

# docker-ce 社区版  docker-ee 企业版
$ sudo yum install docker-ce docker-ce-cli containerd.io

遇到的问题

在新版的 Rhel 8中,进行这一步的时候,会出现 containerd.io 版本过低而无法安装

[root@hwh1 ~]# yum install docker-ce docker-ce-cli containerd.io
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Repository AppStream is listed more than once in the configuration
Docker CE Stable - x86_6  24 kB/s | 3.5 kB     00:00    
错误:
 问题: package docker-ce-3:19.03.11-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
  - cannot install the best candidate for the job
  - package containerd.io-1.2.10-3.2.el7.x86_64 is excluded
  - package containerd.io-1.2.13-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.13-3.2.el7.x86_64 is excluded
  - package containerd.io-1.2.2-3.3.el7.x86_64 is excluded
  - package containerd.io-1.2.2-3.el7.x86_64 is excluded
  - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.6-3.3.el7.x86_64 is excluded
(尝试添加 '--skip-broken' 来跳过无法安装的软件包 或 '--nobest' 来不只使用最佳选择的软件包)

这时需要更新 containerd.io 到指定版本范围内,由于还没有兼容 rhel 8 的 containerd.io 版本,所以就选择 7 的版本向下兼容安装

wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

yum install -y containerd.io-1.2.6-3.3.el7.x86_64.rpm

5.查看安装是否成功

# 这里安装的是最新版
[root@hwh1 ~]# docker version 
Client: Docker Engine - Community
 Version:           19.03.11
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        42e35e61f3
 Built:             Mon Jun  1 09:13:48 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.11
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       42e35e61f3
  Built:            Mon Jun  1 09:12:26 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

6.启动 Docker

$ sudo systemctl start docker

[root@hwh1 ~]# ps -ef|grep docker
root       8137      1  0 10:40 ?        00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root       8329   3283  0 10:41 pts/0    00:00:00 grep --color=auto docker

Docker(二)Docker配置_第2张图片

7.测试 Docker

$ sudo docker run hello-world

Docker(二)Docker配置_第3张图片

8.查看下载的镜像

[root@hwh1 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        5 months ago        13.3kB

卸载

1.卸载Docker Engine,CLI和Containerd软件包

$ sudo yum remove docker-ce docker-ce-cli containerd.io

2.删除所有的镜像,容器和卷

$ sudo rm -rf /var/lib/docker

阿里云镜像加速

登录阿里云账号,找到控制台,找到容器镜像服务,里面有容器镜像加速器
Docker(二)Docker配置_第4张图片

配置使用

$ sudo mkdir -p /etc/docker

$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["加速器的地址"]
}
EOF

$ sudo systemctl daemon-reload

$ sudo systemctl restart docker

流程原理

Docker(二)Docker配置_第5张图片

底层原理

Docker是怎么工作的?
Docker是一个 Client- Server结构的系统, Docker的守护进程运行在主机上。通过 Socket 从客户端访问
DockerServer接收到 Docker-Client的指令,就会执行这个命令
Docker(二)Docker配置_第6张图片

Docker 为什么比 虚拟机 快

  • Docker有着比虚拟机更少的抽象层,由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在Cpu、内存利用率上Docker将会在效率上有明显优势。
  • Docker利用的是宿主机的内核,而不需要Guest OS。因此,当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统,避免了引导、加载操作系统内核这个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的,而Docker由于直接利用宿主机的操作系统则省略了这个过程,因此新建一个Docker容器只需要几秒钟。
    Docker(二)Docker配置_第7张图片

你可能感兴趣的:(Docker(二)Docker配置)