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 的软件或服务。
本文由传智教育博学谷 – 狂野架构师教研团队公布,转载请注明出处!
如果本文对您有帮忙,欢送关注和点赞;如果您有任何倡议也可留言评论或私信,您的反对是我保持创作的能源