❤️ 专栏简介 :本专栏我们会从最基础的内容开始学习Docker的相关内容,循序渐进的掌握Docker知识并进行实战。
☀️ 专栏适用人群 :适用于具备基础 Linux 知识的 Docker 初学者,当然希望各位有经验的docker开发者不吝赐教。
专栏说明 :如果文章知识点有错误的地方,欢迎大家随时在文章下面评论,我会第一时间改正。让我们一起学习,一起进步。
专栏地址:https://blog.csdn.net/anchenliang_1002/category_11878561.html
本节我们会正式进入Docker的学习;主要内容包括docker镜像的介绍
,Docker安装部署过程
等。
Docker是基于go语言开发的一种容器技术,可以对进程进行封装隔离,所以是属于操作系统层面的虚拟化技术。正是由于隔离的进程独立与宿主机和其他隔离的进程,所以被称之为容器。
利用Docker,我们可以实现开发,测试,生产环境的部署一致性,极大的减少了运维成本。
上面这句话干巴巴的,好像没有什么说服力,那么下面我们用一个例子来进行说明:
我们在开发一个项目的过程中,肯定要经历开发阶段、测试阶段,测试没bug了才会上线或发布到现场使用,过程如下:
首先我们需要开发我们的后端程序,并在我们自己的电脑上运行通过,此时,我们自己的电脑是安装了后端程序所需要的所有的环境的,比如依赖库、编译环境、Python环境、数据库等等,依赖这些环境我们的程序才能运行;所以下一步,测试的同时需要测试我们的开发程序时,就必须在测试的服务器上安装我们这个程序所需要的所有的环境,而且必须是正确安装,哪怕版本不一致,都可能导致程序出错,这是非常繁琐且容易出错的;等测试完成后,部署到现场使用,现场的设备也必须再次正确的安装该程序锁依赖的所有环境。这是我们正常的一套开发上线流程,会发现确实非常繁琐,存在很多重复的工作,而且这些重复的工作还极容易出错。且必须保证系统环境的一致,比如我们开发的代码是跑在centos上的,则要求测试环境是centos,现场环境也必须是centos
。
而有了docker之后呢,开发、测试加部署到现场的过程就变的简单了,如下图所示
后端程序员在将代码写好之后,还会再另外开发一个dockerfile脚本,此脚本负责的工作就是将我们开发的代码以及它的依赖环境打包到一起,生成一个docker image文件(docker镜像);有了这个镜像文件,就可以直接发给其他机器,比如发给测试的测试服务器,发给现场的应用服务器等,这些机器不需要安装额外的依赖,直接运行该镜像,这个程序就可以直接运行了,再也不用担心即需要安装一堆依赖,又担心安装出错等情况发生了。而且对于容器来说,是不关心宿主机是什么环境的,比如开发环境是Windows,测试环境是centos,现场使用环境是Ubuntu系统,这也是没有任何问题的,都可以正常在容器中使用我们开发的程序
。
首先我们来看一下docker的引擎架构,如下图所示
安装使用Docker,得先运行Docker Daemon进程,用于管理docker,如:
镜像(Image)
和容器(Container)
的关系,就像是面向对象程序设计中的 类
和 对象
一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
网络network
负责提供容器与外部的通信。
数据Date Volumes
卷用于存储。
Docker平台组成
docker的平台组成如下图所示:
Docker平台由镜像仓库
、Docker主机
、客户端
三部分组成。
镜像仓库是在网络中的一个仓库,用于管理docker的镜像image,运行image即可生成镜像。也就是像上面我们提到的“类”和“对象”的关系;
上图中的客户端就是我们在实际的工作中,使用docker的过程,如下:
首先,我们作为客户端,基于dockerfile构建镜像;然后docker pull拉取镜像,或者去下载别人的镜像;最后,启动docker容器。
Docker主机就是我们的docker服务端主机了,服务器获取镜像,并通过镜像去运行出各自对应的容器;
对于docker来说,最核心的组件
:
所需环境:
1、CentOS系统(可以是纯系统,也可以是虚拟机),博主接下来所演示的环境都是基于虚拟机中的CentOS系统。
博主的docker安装环境:
首先在笔记本电脑(Windows)上安装虚拟机,虚拟机里安装CentOS系统,然后在CentOS系统上安装容器,用于学习和实战。
打开终端,建议在root用户下:
更换yum源为阿里源
如果不更换为阿里源,一直使用默认源的话,执行下面安装docker的指令时可能会出错,所以还是建议更换yum源为阿里源。过程我记录在另一篇博客中:
CentOS 7 更新阿里源;CentOS 7更新源为阿里源;解决File contains no section headers.错误问题
更新系统环境
#更新阿里云基础仓库
wget -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#更新阿里云epel额外仓库
wget -o /etc/yum.repos.d/epel.repo http://mirrors.aliyunl.com/repo/epel-7.repo
#清空一下本地缓存
yum clean all
#生成新的缓存
yum makecache
#清空一下现有的规则
iptables -F
#确认SELinux 工作模式是关闭的
getenforce
getenforce的执行结果是Disabled状态说明SELinux的工作模式是关闭的;
如果不是Disable,那么手动将SELinux设置为Disable,方法如下:
输入命令vi /etc/selinux/config
,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出,然后reboot重启
重启之后,再次执行getenforce发现结果是Disable了。
考虑到有些同学安装的系统是CentOS简易版,因此安装一些必要的工具:
yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc ntpdate openldap-devel
关闭防火墙,禁止防火墙开机自启动
#禁止防火墙开机自启
systemctl disable firewalld
#关闭防火墙
systemctl stop firewalld
注意:
docker必须安装在CentOS7平台,且内核版本不低于3.10(uname -r查看);
在以下内容复制终端执行:
cat <<EOF > /etc/sysctl.d/docker.conf net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0 net.ipv4.ip_forward=1
EOF
sysctl -p /etc/sysctl.d/docker.conf
modprobe br_netfilter
再执行:
sysctl -p /etc/sysctl.d/docker.conf
首先我们先执行以下指令看一下当前的yum仓库是否有叫docker-ce的软件包:
yum list docker-ce --showduplicates | sort -r
结果如下:
我们发现当前的yum仓库里并没有docker相关的软件包。
解决办法:
## 下载阿里云自带仓库
$ curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 下载阿里云提供的docker专属repo仓库
$ curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum缓存
$ yum clean all && yum makecache
然后呢,我们再去看看此时yum仓库里有没有docker-ce软件包:
yum list docker-ce --showduplicates | sort -r
结果如下:
可以发现现在有很多版本的docker-ce了,这说明我们现在可以安装docker了。
下面我们来安装docker:
## 使用yum安装docker
$ yum install docker-ce-20.10.6 -y
##
$ yum list docker-ce --showduplicates | sort -r
## 如果你想使用低版本的docker,也可以执行换作下面的指令
##yum install -y docker-ce-18.09.9
## 如果想卸载已经安装的docker,使用以下指令
##yum remove -y docker-ce-20.10.6
docker的安装过程就是屏幕一直刷刷刷刷刷,刷的很开心很舒服,安装完成的界面如下:
好了,我们的docker安装完成了。
首先要知道,我们为什么要安装镜像加速器呢?
我们想要使用容器,首先就得获取镜像;而docker下载镜像默认是从Docker Hub下载,网速较慢,国内很多云服务商都提供了加速服务,比如阿里源加速器,灵雀云加速器等等。
配置docker镜像加速器过程:
# 首先创建daemon.json配置文件,配置加速源
mkdir -p /etc/docker
touch /etc/docker/daemon.json
将以下内容复制进去,保存退出
{
"registry-mirrors" : [ "https://8xpk5wnt.mirror.aliyuncs.com"
]
}
然后重新加载使其生效
#重新加载daemon-reload:
systemctl daemon-reload
#允许开机自启动
systemctl enable docker
#允许开机自启动
systemctl enable docker
#启动docker
systemctl restart docker
验证一下docker是否起来了:
ps -ef | grep docker
docker version