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/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo 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/dockersource /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 的软件或服务。
本文由传智教育博学谷 - 狂野架构师教研团队公布,转载请注明出处!
如果本文对您有帮忙,欢送关注和点赞;如果您有任何倡议也可留言评论或私信,您的反对是我保持创作的能源