当前位置:   article > 正文

Docker学习笔记:应用容器引擎(很详细)_容器引擎有哪些

容器引擎有哪些

引言

Docker解决了"这段代码在我机器上没问题啊"的问题

Docker 是世界领先的软件容器平台。 基于 Go 语言 并遵从 Apache2.0 协议开源,基于 Linux 内核 提供的 CGroup 功能和 namespace 来实现的,以及 AUFS 类的 UnionFS(联合文件系统) 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器

注:

  • 阅读本文之前,你需要有一定的Linux基础

  • Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),学习 Docker 用社区版就可以了

一、Docker相关概念扫盲

Docker 包括三个基本概念

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器

镜像(image)的概念

Docker 镜像,也称为 image 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等),镜像不包含任何动态数据,其内容在构建之后也不会被改变

Docker 镜像充分利用 Union FS 的技术,将其设计为分层存储的架构

镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。 比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。

分层存储的特征还使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像

容器(container)的概念

Loki的理解:

以前的开发和部署是分开的,WEB应用的交付标准是 jar 包或者 war 包,这样就涉及到运行环境不同导致的bug,而容器的出现则解决了这个问题,容器赋予了软件独立性,使其免受外在环境差异,使得开发人员以便他们专注在真正重要的事情上:构建杰出的软件

**一句话概括容器:**容器镜像是轻量的、可执行的独立软件包

用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样,如下图所示

image-20220506144929167

仓库(repository)的概念

镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。

一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。所以说:镜像仓库是 Docker 用来集中存放镜像文件的地方类似于我们之前常用的代码仓库。

通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签.。

这里补充一下 Docker Registry 公开服务和私有 Docker Registry 的概念:

Docker Registry 公开服务 是开放给用户使用、允许用户管理镜像的 Registry 服务。一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。

最常使用的 Registry 公开服务是官方的 Docker Hub ,这也是默认的 Registry,并拥有大量的高质量的官方镜像,网址为:https://hub.docker.com 。官方是这样介绍 Docker Hub 的:

Docker Hub 是 Docker 官方提供的一项服务,用于与您的团队查找和共享容器镜像。

比如我们想要搜索自己想要的镜像:

在 Docker Hub 的搜索结果中,有几项关键的信息有助于我们选择合适的镜像:

  • OFFICIAL Image :代表镜像为 Docker 官方提供和维护,相对来说稳定性和安全性较高。
  • Stars :和点赞差不多的意思,类似 GitHub 的 Star。
  • Dowloads :代表镜像被拉取的次数,基本上能够表示镜像被使用的频度。

当然,除了直接通过 Docker Hub 网站搜索镜像这种方式外,我们还可以通过 docker search 这个命令搜索 Docker Hub 中的镜像,搜索的结果是一致的。

在国内访问Docker Hub 可能会比较慢国内也有一些云服务商提供类似于 Docker Hub 的公开服务。比如 时速云镜像库open in new window网易云镜像服务open in new windowDaoCloud 镜像市场open in new window阿里云镜像库open in new window

除了使用公开服务外,用户还可以在 本地搭建私有 Docker Registry 。Docker 官方提供了 Docker Registry 镜像,可以直接使用做为私有 Registry 服务。开源的 Docker Registry 镜像只提供了 Docker Registry API 的服务端实现,足以支持 docker 命令,不影响使用。但不包含图形界面,以及镜像维护、用户管理、访问控制等高级功能

Docker容器的优点

  • 安全:容器是完全使用沙箱机制,相互之间不会有任何接口,不仅限于彼此隔离,还独立于底层的基础设施。因此应用出现问题,也只是单个容器的问题,而不会波及到整台机器
  • 标准:Docker 容器基于开放式标准,能够在所有主流 Linux 版本、Microsoft Windows 以及包括 VM、裸机服务器和云在内的任何基础设施上运行
  • 轻量:在一台机器上运行的多个 Docker 容器可以共享这台机器的操作系统内核;它们能够迅速启动,只需占用很少的计算和内存资源。镜像是通过文件系统层进行构造的,并共享一些公共文件。这样就能尽量降低磁盘用量,并能更快地下载镜像
  • 便捷:可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况

《Docker 从入门到实践》 这本开源书籍中也已经给出了使用 Docker 的原因

二、Docker安装卸载与配置

如果宿主机已经安装过Docker,需要先进行卸载

卸载旧版本的Docker

卸载依赖

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine        
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

删除资源

rm -rf /var/lib/docker
  • 1

/var/lib/docker是docker的默认工作目录

安装与启动第一个Docker实例

1#安装yum-utils包(提供yum-config-manager 实用程序)并设置稳定存储库。
sudo yum install -y yum-utils

2#设置镜像的仓库,使用国内阿里云镜像
sudo yum-config-manager \
	--add-repo \
	http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum软件包索引
yum makecache fast

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

5#启动docker
#docker默认注册了系统级别的服务,可以通过以下命令启动
systemctl start docker

6#查看docker版本
docker version

7#运行hello-world
docker run hello-world
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

image-20220504184330467

Docker镜像加速

国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如ÿ

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/714505
推荐阅读
相关标签
  

闽ICP备14008679号