Docker 是一个开源的应用容器引擎,基于 GO 语言开发,开发者可以打包应用及依赖包到一个可移植的容器中,然后发布到任何操作系统的机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口。
镜像(Docker Images)
一个只读层被称为镜像,一个镜像是永久不会变的。因为 Docker 使用统一文件系统,Docker 进程认为整个文件系统是以读写方式挂载的,由于所有的变更都发生在顶层的可写层,所以下层的原始的只读镜像文件并未发生变化。
每一个镜像都可能依赖一个或者由多个下层镜像组成的另一个镜像。
容器(Docker Containers)
镜像运行后的进程。因为 Docker 的容器实在太轻量级了,很多时候用户都是随用随建,用完即删。
仓库(Docker Registry)
集中存放镜像的地方。官方提供公共仓库,也支持搭建私有镜像仓库。
$ cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
# Docker 要求 CentOS 内核版本高于 3.10
$ uname -a
3.10.0-1160.el7.x86_64
# -y 不询问直接安装
$ yum install -y yum-utils device-mapper-persistent-data lvm2
...
Complete!
yum-utils 包提供yum-config-manager
命令,该命令是对资源库(/etc/yum.repos.d/)进行增删改查,用于设置下载源。系统默认没有安装。
Device Mapper 是一个基于内核的框架,它支持 Linux 上的许多高级卷管理技术。Docker 的 devicemapper 存储驱动程序利用此框架的精简配置和快照功能来进行映像和容器管理。
devicemapper requires the lvm2 and device-mapper-persistent-data packages to be installed.
$ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
...
repo saved to /etc/yum.repos.d/docker-ce.repo
$ yum -y install docker-ce
docker-ce.x86_64 3:20.10.12-3.el7
...
Complete!
# 查看版本信息
$ docker version
Client: Docker Engine - Community
...
Server: Docker Engine - Community
...
# 查看系统信息
$ dcoker info
...
# centOS
$ systemctl start docker
$ systemctl enable docker
# 阿里云需要自己去申请,xxx 为申请的 key
# https://account.aliyun.com
# 将源地址写入配置文件
$ tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":[
"https://xxx.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
]
}
EOF
# 重启生效
$ systemctl daemon-reload
$ systemctl restart docker
# 验证源
$ docker info
...
Registry Mirrors:
https://xxx.mirror.aliyuncs.com/
https://registry.docker-cn.com/
http://hub-mirror.c.163.com/