乐趣区

关于java:轻量容器引擎Docker安装及其架构

Docker 装置

卸载旧版本

较旧的 Docker 版本称为 docker 或 docker-engine。如果已装置这些程序,请卸载它们以及相干的依赖项。

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

装置 Docker 依赖环境

在新主机上首次装置 Docker Engine-Community 之前,须要设置 Docker 仓库,之后,您能够从仓库装置和更新 Docker。

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

设置 Docker 装置地址

在新主机上首次装置 Docker Engine-Community 之前,须要设置 Docker 仓库,之后,您能够从仓库装置和更新 Docker,应用以下命令来设置稳固的仓库(阿里云)

sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

装置 Docker Engine-Community

装置最新版本的 Docker Engine-Community 和 containerd

sudo yum install -y docker-ce docker-ce-cli containerd.io

如果提醒您承受 GPG 密钥,请选是。

Docker 装置完默认未启动,并且曾经创立好 docker 用户组,但该用户组下没有用户。

Docker 镜像减速

阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就能够看到你的专属地址了:

配置 daemon.json

您能够通过批改 daemon 配置文件 /etc/docker/daemon.json 来应用加速器

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

启动 Docker

systemctl start docker
验证 docker 服务

通过运行 hello-world 映像来验证是否正确装置了 Docker Engine-Community。

docker run hello-world

运行该代码后首先会从仓库拉取 hello-world 镜像, 而后运行该镜像,运行后会输入一个Hello from Docker!

开启 Docker 主动补全

应用 docker 时无奈主动补全镜像名和其余参数,这样应用效率大大降低,上面是解决办法

bash-complete
yum install -y bash-completion
刷新文件
source /usr/share/bash-completion/completions/docker
source /usr/share/bash-completion/bash_completion
测试

输出 docker p 后 docker 会将可选项列出来

docker p

Docker 架构

Docker 总体架构为 c / s 架构,模块之间松耦合,蕴含了 Client, Daemon, Registry, Graph, Driver, Libcontainer 以及 Docker Container

Docker 的组件

  • Docker Client 是用户界面,它反对用户与 Docker Daemon 之间通信
  • Docker Daemon Docker 最外围的后盾过程,运行于主机上,解决服务申请
  • Docker Index是地方 registry,反对领有私有与公有拜访权限的 Docker 容器镜像的备份
  • Docker Containers负责应用程序的运行,包含操作系统、用户增加的文件以及元数据
  • Docker Images是一个只读模板,用来运行 Docker 容器
  • DockerFile是文件指令集,用来阐明如何主动创立 Docker 镜像

Docker 基本概念

Docker 包含三个基本概念:

镜像

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

分层存储

​ 镜像只是一个虚构的概念,其理论体现并非由一个文件组成,而是由一组文件系统组成,或者说,由多层文件系统联结组成。

Union FS

​ 联结文件系统是 (Union FS) 是 linux 的存储技术,也是 Docker 镜像的存储形式,它是 分层 的文件系统,将不同目录拉到同一个虚拟目录下,下图展现了 Docker 用 Union FS 搭建的分层镜像:(比方最上层是操作系统的疏导,上一层是 Linux 操作系统,再上一层是 Tomcat,jdk,再上一层是利用代码)

这些层是只读的,加载完后这些文件会被看成是同一个目录,相当于只有一个文件系统。

​ 咱们能够通过 docker info 查看镜像的一些信息,能够看到存储驱动用的并不是 Union FS 而是 overlay2,overlay 也是一个联结文件系统,所以上述次要介绍联结文件系统的概念,至于这些存储驱动的演变过程和优缺点,

镜像构建时,会一层层构建,前一层是后一层的根底。每一层构建完就不会再产生扭转,后一层上的任何扭转只产生在本人这一层。(比方,删除前一层文件的操作,理论不是真的删除前一层的文件,而是仅在以后层标记为该文件已删除。在最终容器运行的时候,尽管不会看到这个文件,然而实际上该文件会始终追随镜像。因而,在构建镜像的时候,须要额定小心,每一层尽量只蕴含该层须要增加的货色,任何额定的货色应该在该层构建完结前清理掉。)

容器

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

容器的本质是过程,但与间接在宿主执行的过程不同,容器过程运行于属于本人的独立的命名空间。因而容器能够领有本人的 root 文件系统、本人的网络配置、本人的过程空间,甚至本人的用户 ID 空间。容器内的过程是运行在一个隔离的环境里,应用起来,就如同是在一个独立于宿主的零碎下操作一样。这种个性使得容器封装的利用比间接在宿主运行更加平安。也因为这种隔离的个性,很多人初学 Docker 时经常会混同容器和虚拟机。

​ 后面讲过镜像应用的是分层存储,容器也是如此。每一个容器运行时,是以镜像为根底层,在其上创立一个以后容器的存储层,咱们能够称这个为容器运行时读写而筹备的存储层为 容器存储层

​ 容器存储层的生存周期和容器一样,容器沦亡时,容器存储层也随之沦亡。因而,任何保留于容器存储层的信息都会随容器删除而失落。

仓库

镜像构建实现后,能够很容易的在以后宿主机上运行,然而,如果须要在其它服务器上应用这个镜像,咱们就须要一个集中的存储、散发镜像的服务,Docker Registry 就是这样的服务。

一个 Docker Registry 中能够蕴含多个仓库(Repository);每个仓库能够蕴含多个标签(Tag);每个标签对应一个镜像。

​ 通常,一个仓库会蕴含同一个软件不同版本的镜像,而标签就罕用于对应该软件的各个版本。咱们能够通过 < 仓库名 >:< 标签 > 的格局来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。(以 Ubuntu 镜像为例,ubuntu 是仓库的名字,其内蕴含有不同的版本标签,如,14.04,16.04。咱们能够通过 ubuntu:14.04,或者 ubuntu:16.04 来具体指定所需哪个版本的镜像。如果疏忽了标签,比方 ubuntu,那将视为 ubuntu:latest。)

​ 仓库名常常以 三段式门路 模式呈现,比方heima.com/nginx-proxy:tag,前者往往意味着 Docker Registry 多用户环境下的用户名,后者则往往是对应的软件名。但这并非相对,取决于所应用的具体 Docker Registry 的软件或服务。

本文由传智教育博学谷 – 狂野架构师教研团队公布,转载请注明出处!

如果本文对您有帮忙,欢送关注和点赞;如果您有任何倡议也可留言评论或私信,您的反对是我保持创作的能源

退出移动版