1.Docker是什么?
Docker 是一个开源的应用容器引擎, 可以简化理解实现应用与运行环境分离.
Docker 其中包括,镜像、容器、仓库等概念,目的就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的产品(可以是 web 应用或者数据库应用)及其环境能够做到“一次封装,到处运行”。
Docker实际上就相当于一个封闭的沙盒或者是集装箱,它可以把不同的应用全都放在它的集装箱里面,并且以后有需要的时候,可以直接把集装箱搬到其他平台或者服务器上,可以跨平台,跨服务器,实现应用程序跨平台间的无缝衔接. 实现容器虚拟化技术,随用随搬
一句话,Docker解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
是dotCloud公司开源的一个基于LXC的高级容器引擎,源码托管在Github上,基于 Go 语言 并遵从 Apache2.0 协议开源。
GitHub地址:https://github.com/moby/moby
docker官网:https://www.docker.com
docker中文库:https://www.docker.org.cn/
2017年初,docker公司将原先的docker开源项目改名为moby。
moby是集成了原先的docker项目,是社区维护的开源项目,谁都可以在moby的基础打造自己的容器产品。
docker-ce 是docker公司维护的开源项目,是一个基于moby项目的免费容器产品。
docker-ee 是docker公司维护的闭源产品,是docker公司的商业昌平。
2.Docker架构基本概念
Docker 包括三个基本概念:
2.1.镜像(Image)
就相当于是一个 root 文件系统。除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)
比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
Docker镜像是用来启动容器的,也用来创建新的容器,类似于虚拟机的快照。
镜像不包含任何动态数据,其内容在构建之后也不会被改变,在Docker里可以创建镜像,也可以从第三方的网站上下载别人已经做好的镜像来使用
2.2.容器(Container)
运行程序员开发的应用程序的
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。一个Docker镜像可以实例化出来多个容器,而每一个容器之间是独立运行的,没有任何依赖
Docker镜像是不能运行的,是静态的,而Docker容器是运行的,是动态的,可以将Docker容器想像成一个简化版的操作系统和一些核心基础的应用。每个容器运行一个独立的应用程序。
2.3.仓库(Repository)
仓库可看成一个代码控制中心,用来保存镜像。
Docker仓库提供一个注册服务器,用于存储多个仓库,而仓库是用来存储镜像位置的
我们自已创建了一个镜像之后,可以使用push命令将镜像文件上传到仓库中,后期如果在其它服务器上需要使用镜像,就可以从仓库上下载过来并使用
总结: 说白了镜像就等于一个centos系统的安装程序,一个镜像只是一个只读环境而已,这个镜像提供的是基础的运行环境,而你在Centos7系统中安装的应用,比如Redis,Mysql这些应用就相当于一个容器,这些容器都是单独可运行的,仓库的概念就相当于在Centos7系统中下载的所有应用都被收集到同一个仓库里了,比如Maven仓库
3.安装Docker
3.0.yum 准备
3.0.1.升级 yum
更新安装源, 系统太旧了, 可能安装的版本也比较低, 可以更新一下安装源后再查看可安装版本
# 清理 yum 缓存
yum clean all
# yum makecache就是把服务器的包信息下载到本地电脑缓存起来
# 配合yum -C search xxx使用
# 不用上网检索就能查找软件信息
yum makecache
# 升级 yum
yum update -y
3.0.2.安装工具包
安装 yum-utils
软件包(提供yum-config-manager
实用程序)并设置稳定的存储库。
yum install -y yum-utils
devicemapper驱动依赖的
yum install -y device-mapper-persistent-data lvm2
3.1.卸载旧版本
3.1.1.查看安装过docker
yum list installed | grep docker
3.1.2.卸载旧版本docker
# 卸载docker
yum remove docker*
# 或者
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
删除镜像/容器等, /var/lib/docker/应该修改成具体的位置
rm -rf /var/lib/docker/
3.2.安装docker
3.2.1.设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.2.2.列出可安装的docker版本
yum list docker-ce --showduplicates | sort -r # 从高到低排序
3.2.3.安装docker
yum -y install docker-ce # 安装最新版本的docker
或者
yum -y install docker-ce-20.10.9 #安装指定版本
docker-ce - Docker 守护进程,这是完成所有管理工作的部分,在 Linux 上需要另外两个
docker-ce-cli - 用于控制守护进程的 CLI 工具,如果您想控制远程 Docker 守护进程,可以自行安装它们
containerd.io - 与 OS API 接口的守护进程(在本例中为 LXC - Linux Containers),本质上将 Docker 与 OS 分离,还为非 Docker 容器管理器提供容器服务
yum -y install docker-ce docker-ce-cli containerd.io
3.2.4.验证安装是否成功
docker version #查看版本
3.3.启动并设置开机启动
systemctl start docker # 启动
systemctl enable docker # 设置开机启动
systemctl status docker # 查看docker启动状态
4.Docker 镜像加速
4.1.设置镜像
这个步骤不是必须, 国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:
- 科大镜像:https://docker.mirrors.ustc.edu.cn/
- 网易:https://hub-mirror.c.163.com/
- 阿里云:https://<你的ID>.mirror.aliyuncs.com
- 七牛云加速器:https://reg-mirror.qiniu.com
当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址
下面以阿里云的镜像加速为例讲解
阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
执行上图中红圈中的命令即可.
命令的意思就是在/etc/docker目录内
创建一个名字未daemon.json的文件,
并写入{“registry-mirrors”:[“https://xxxx.mirror.aliyuncs.com”]},
最后两句命令是重新启动服务
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://你的ID.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
4.2.查看操作结果
docker info #查看docker信息
查看docker信息,
Docker Root Dir : docker仓库的地址。
在最后三行能看到镜像加速器配置是否成功
ID: ZBWC:6M5U:NQXD:RMYF:IMU7:AAHV:MWIS:STZE:5QD5:HII2:FU7K:VWQW
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://你的ID.mirror.aliyuncs.com/
Live Restore Enabled: false