1  概述

docker是双发行版。docker-EE (企业版,收费) docker-CE(社区办,免费),docker-ce项目后面改名为moby项目。因此要在github上找到ce发行版,就要搜索moby这个关键词

docker是go语言研发,运行需要go环境

dockerextras仓库里或者通过官网https://download.docker.com/对应的软件包下载源

Centos7的docker-ce软件包路径为https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

也可以直接通过下载docker-ce的repo文件,配置yum源后,就可以直接通过yum来安装

2  安装

安装官方repo源的安装

#下载repo包

wget -P /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repo

官方yum仓库的docker为docker-ce,因此安装命令为

yum  -y install docker-ce

如果安装extras路径 docker包名为docker,因此安装命令为

yum  -y install docker

这里推荐用docker-ce进行安装

安装过程,如果出现 container-selinux >= 2.9 依赖报错,参考如下文章进行解决

https://blog.csdn.net/qq_41772936/article/details/81080284

即执行如下命令

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
yum install epel-release
yum install container-selinux

此时会安装 container-selinux ,如果机器中有配置dockeryum仓库,那么会一起安装docker-ce

安装后查看对应的包

rpm -ql docker-ce

安装成功后,不需要修改配置文件,直接启动服务

systemctl start docker.service

查看docker版本

docker version

3  docker镜像加速

docker官方的镜像下载比较慢,所以可以通过其他公司的加速器来访问docker-hub仓库,或者直接下载第三方的docker 镜像,如网易的风潮,或者阿里云。

这里推荐使用阿里云的开发者平台,注册账号。注意,阿里云有加速器,进入自己的管理中心。阿里云的开发者平台提供进行仓库,链接为

https://dev.aliyun.com/search.html

登录阿里云开发者平台后,到个人管理中心,找到镜像加速器,每个人都有专用的镜像加速器地址,在页面有相关的操作文档来告诉用户如何设定,更好的加速

加速器实际是阿里云做的docker-hub镜像到国内来

docker C/S架构,服务端是 dockerd,客户端是docker,dockerd监听来自客户端的请求和指令,dockerd接收指定后,完成指令的操作。dockerdockerd通过http或者https协议进行通信。dockerd收到指令后,会先检索本地的镜像文件的存储位置是否有要启动容器的镜像文件,如果已经存在,就会把这个镜像文件直接启动为容器。如果本地没有相关镜像文件,就会到指定的docker的registry服务上检索获取镜像文件,将检索到的镜像文件下载到本地并启动为容器。如果本地和远程都没有对应的镜像,则启动容器会失败

Docker 命令分为管理命令和标准命令

docker配置文件是daemon.json,可能不存在,就手动创建

centos执行如下语句

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
 { "registry-mirrors": [" 加速器地址 "] } EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

到这里加速设置 完成

4  docker镜像标识方式

一个repository(仓库)只放一种镜像的多个不同版本的镜像,一个镜像,如php-fpm,可能是版本有多个,引起对应的镜像文件版本发生变化。仓库是有名字的。一般镜像的名字就是其标签,标签是其版本号。一般而言,最新的版本有统一的标识符,为latest

docker和仓库直接是通过https协议来通信,https协议严格验证系统时间和官方仓库时间是否一致,如果时间不一致,则会导致搜索不出结果。所以,通过docker search命令查不到结果时,需要查看时间是否一致

一个仓库内的镜像是同一镜像的多个版本的组成,如果给定仓库名,没有版本,默认是latest

注意,docker的官网https://hub.docker.com/注册账号现在国内注册不了。