Docker安装与介绍(一)
一、Docker介绍
1、什么是Docker
Docker是基于Go语言实现的云开源项目。
Docker的主要目标是Build,Ship and Run Any App,Anywhere,也就是通过对应用组件的封
装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应
用等等)及其运行环境能够做到一次封装,到处运行。如下图所示:
Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。
将应用运行在 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,这就实现了
跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了
操作。
Docker是解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器
虚拟化技术,即一次构建,到处运行。
2、Docker基本组成
Docker架构如图所示:
1)Docker Client
Client 是Docker daemon 的客户端工具。用于同 Docker daemon 进行通信,执行用户
指令,可部署在 Docker Host 上,也可以部署在其他主机上;能够连接到 Docker daemon
即可操作。
2)Docker Host(Docker主机)
用于安装 Docker daemon(Docker守护进程) 的主机,即为 Docker Host,如 一个物
理主机、一个虚拟机等等;并且该主机中可基于容器镜像运行容器。
3)Docker daemon(Docker守护进程)
用于管理 Docker Host 中运行的容器、容器镜像、容器网络等;管理由Containerd.io提供
4)Registry(镜像仓库)
容器镜像仓库,用于存储已生成容器运行模版的仓库;用户使用时可以直接从容器镜像
仓库中下载容器镜像,即容器运行模版,就可以运行容器镜像中包含的应用了,
如:Docker Hub(最大的公开仓库 ,存放了数量庞大的镜像供用户下载;国内的公开仓
库包括阿里云 、网易云 等 ),也可以使用Harbor实现企业私有的容器镜像仓库
5)Image(镜像)
把应用运行资源及计算资源以打包方式生成可再用于启动容器的不可变基础设施的文件,
主要用于基于其启动一个容器。一个镜像文件(Image)可以创建多个容器,以对象的概
念来看下Image与容器的关系,如下:
docker | 面向对象 |
容器 | 对象 |
Image | 类 |
6)Container(容器)
由容器镜像Image生成,用于应用程序的运行环境,包含容器镜像中所有所有文件以及
用户添加的文件,属于基于容器镜像生成的可读写层,这也是应用程序运行的空间。
它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以
把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络
空间等)和运行在其中的应用程序
7)Docker Dashboard
Docker Dashboard 提供了简单的界面,使用户能够直接从你的电脑上管理你的镜像、
容器和应用程序,而无需使用CLI命令来执行核心操作。
Docker Dashboard仅限在MAC和Window上使用。
3、Docker 版本
Docker-ce Docker社区版,免费使用,主要用于个人开发者测试使用
Docker-ee Docker企业版,主要用于企业开发及应用部署,收费版。
二、Docker 安装前环境检查
以CentOS7为例
1、执行命令 cat /etc/redhat-release 来查看当前linux系统版本
2、查询当前系统内核 uname -r
3、查看cmd 的配置管理工具的防火墙是否是“关闭” 状态
firewall-cmd --state
4、查看 selinux 是否是 “关闭” 状态,selinux 需要关闭
2)关闭 selinux
vi /etc/sysconfig/selinux 编辑配置文件 selinux,将 selinux 文件中的 SELINUX=enforcing
改为 SELINUX=disabled,然后重启系统,如下图:
三、采用yum 方式安装docker
1、获取阿里云开源镜像站 yum 源文件
1)百度
复制yum源:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2)下 yum 源
将上边赋值的 yum 源:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
使用wget 命令 下载到 /etc/yum.repos.d/ 目录下;
命令:wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
这一步本地虚拟机下载失败,转到阿里云上下载的
3)验证下载的yum源是否可用
命令:yum repolist
2、卸载已有的Docker
命令:docker --version 或 docker -v 查看当前linux系统是否安装了Docker
若安装了docker 会显示docker版本号,否则显示 “bash: docker: 未找到命令...”
若当前系统已经安装了docker,则执行下面的命令来卸载Docker
sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
3、安装Docker-ce(免费社区版本)
在系统中直接安装docker-ce即可,此为docker daemon,所有依赖将被yum自动安装,包含
docker client等等;
安装命令:yum -y install docker-ce
注意:安装命令copy 时由于编码的原因可能报
“'ascii' codec can't decode byte 0xc2 in position 1: ordinal not in range(128)”
没报错就表示安装成功
4、配置 Docker Daemon启动文件
上边Docker-ce 安装成功后先别忙着启动,先配置 Docker Daemon启动文件,
即docker.service;目录:/usr/lib/systemd/system/docker.service
由于Docker 使用过程中会对CentOSc操作系统中的 iptables 防火墙中的FORWARD链
默认规划产生影响,以及需要让Docker Daemon接受用户自定义的 daemon.json 文件,
所以需要对使用者要求进行更改docker.service
1)修改 docker.service 文件
docker.service 只需要改动2点:
(1)将 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
改成 ExecStart=/usr/bin/dockerd
(2)在ExecStart下面添加一行:ExecStartPost=/sbin/iptables -P FORWARD ACCEPT,
表示docker启动后将 FORWARD 防火墙状态设置为 ACCEPT
5、重写加载 Docker Daemon启动文件
命令:systemctl daemon-reload
6、启动Docker
命令:systemctl start docker,若命令执行没有输出表示启动成功
systemctl restart docker 重启docker
7、设置Docker 开机自启动
命令:systemctl enable docker,
该命令可能会报错误:Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
解决方式请参考:关于在Contos7安装docker出现Created symlink from /路径/路径/...的问题-CSDN博客
8、查看Docker 版本
命令:docker version
四、配置Docker镜像加速器
由于国内访问国外的Docker容器镜像仓库比较慢,因此国内企业创建了容器加速器以方便
国内用户使用容器镜像,如阿里云的容器镜像加速器
阿里云的容器镜像加速器配置步骤:
1、登录阿里云服务器官网,进入控制台首页搜索 “容器镜像服务acr”,进入 容器镜像服务acr
控制台,然后点击:镜像工具—> 镜像加速器,在操作文档项选择“CentOS”,
如下图所示:
2、创建配置文件 /etc/docker/daemon.json,并编辑文件 daemon.json,在该文件中写入
"registry-mirrors": ["https://qgxd9od5.mirror.aliyuncs.com"]
如下图所示:
3、执行命令 命令 systemctl daemon-reload 重新加载 daemon 文件,然后
执行命令 systemctl restart docker 重启docker服务
如下图所示: