0
点赞
收藏
分享

微信扫一扫

Docker 学习笔记(一)

左手梦圆 2022-02-20 阅读 70

Docker官网: Docker

DockerHub: Docker Hub

菜鸟课程:菜鸟课程

Docker学习文档:Docker文档

Docker学习 B站 B站视频

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

    Docker 容器通过 Docker 镜像来创建

    下载 Docker for Mac

    在这里插入图片描述

Docker容器的本质是宿主机上的进程,与宿主机共享宿主机的内核,不是共享操作系统

下图为传统虚拟机的运行模式:

下图为容器化技术,即为Docker:

比较 Docker和虚拟机技术的不同:

  • 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件;
  • 容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了 ;
  • 每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响;

Docker的安装与卸载

安装方法 https://docs.docker.com/engine/install/centos/#install-using-the-repository

您可以根据需要以不同的方式安装 Docker Engine:

  • 大多数用户 设置 Docker 的存储库并从中安装,以便于安装和升级任务。这是推荐的方法。
  • 一些用户下载 RPM 包并 手动安装它并完全手动管理升级。这在诸如在无法访问 Internet 的气隙系统上安装 Docker 等情况下很有用。
  • 在测试和开发环境中,一些用户选择使用自动化 便利脚本来安装 Docker。

使用存储库安装

在新主机上首次安装 Docker Engine 之前,您需要设置 Docker 存储库。之后,您可以从存储库安装和更新 Docker。

设置存储库

安装yum-utils包(提供yum-config-manager 实用程序)并设置稳定的存储库(这里的sudo 是指最高权限)。

 # 安装环境
 sudo yum install -y yum-utils
 # 设置镜像仓库
 sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    # 阿里云仓库
 sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  
 # 更新yum 软件包索引
 sudo yum makecache fast
 # 安装 Docker 引擎(最新版)
 # 安装最新版本的 Docker Engine 和 containerd,或者进入下一步安装特定版本:
 sudo yum install docker-ce docker-ce-cli containerd.io
 # 启动Docker
 sudo systemctl start docker
 # 查看Docker 版本信息
 docker version
 # 运行一下docker Hello world 这里也是一个测试容器
 docker run hello-world
 # 查看镜像
 docker images
 # 卸载 Docker 引擎
 # 卸载 Docker 引擎、CLI 和 Containerd 软件包:
 sudo yum remove docker-ce docker-ce-cli containerd.io
 # 主机上的映像、容器、卷或自定义配置文件不会自动删除。要删除所有映像、容器和卷:
 sudo rm -rf /var/lib/docker
 sudo rm -rf /var/lib/containerd
 # 您必须手动删除任何已编辑的配置文件(这里官方并未详细说明)。
 # 将 Docker 配置为开机启动
 sudo systemctl enable docker.service
 sudo systemctl enable containerd.service
 # 要禁用此行为,请disable改用。
 sudo systemctl disable docker.service
 sudo systemctl disable containerd.service
 # 阿里云镜像加速器
 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

卸载 https://docs.docker.com/engine/install/centos/#uninstall-old-versions
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

在这里插入图片描述

Hello world 的执行流程(docker run hello-world)

在这里插入图片描述

Docker的底层原理

Docker 是怎么工作的

Docker是一个client- Server结构的系统, Docker的守护进程运行在主机上.通过 Socket从客户端访问

Docker Server接收到 Docker-Client的指令,就会执行这个命令!

在这里插入图片描述

Docker 为什么比虚拟机(VM)快

优势

(1)Docker有着比虚拟机更少的抽象层。由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上Docker将会在效率上有优势,具体的效率对比在下几个小节里给出。在IO设备虚拟化上,Docker的镜像管理有多种方案,比如利用Aufs文件系统或者Device Mapper实现Docker的文件管理,各种实现方案的效率略有不同。
(2)Docker利用的是宿主机的内核,而不需要Guest OS。因此,当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统内核。我们知道,引导、加载操作系统内核是一个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的。而Docker由于直接利用宿主机的操作系统,则省略了这个过程,因此新建一个Docker容器只需要几秒钟。另外,现代操作系统是复杂的系统,在一台物理机上新增加一个操作系统的资源开销是比较大的,因此,Docker对比虚拟机在资源消耗上也占有比较大的优势。事实上,在一台物理机上我们可以很容易建立成百上千的容器,而只能建立几个虚拟机。

劣势

1.资源隔离方面不如虚拟机,Docker是利用cgroup实现资源限制的,只能限制资源消耗的最大值,而不能隔绝其他程序占用自己的资源。
2.安全性问题。Docker目前并不能分辨具体执行指令的用户,只要一个用户拥有执行Docker的权限,那么他就可以对Docker的容器进行所有操作,不管该容器是否是由该用户创建。比如A和B都拥有执行Docker的权限,由于Docker的server端并不会具体判断Docker cline是由哪个用户发起的,A可以删除B创建的容器,存在一定的安全风险。
3.Docker目前还在版本的快速更新中,细节功能调整比较大。一些核心模块依赖于高版本内核,存在版本兼容问题

Docker容器虚拟机(VM)
操作系统与宿主机共享OS宿主机OS上运行宿主机OS
存储大小镜像小,便于存储与传输镜像庞大(vmdk等)
运行性能几乎无额外性能损失操作系统额外的cpu、内存消耗
移植性轻便、灵活、适用于Linux笨重、与虚拟化技术耦合度高
硬件亲和性面向软件开发者面向硬件运维者
举报

相关推荐

0 条评论