在开篇之前考虑到阅读人群,我觉得有必要向各位读者朋友简单介绍一下Docker是什么,它解决了什么问题?Docker是基于Go语言实现的云开源项目。它对此给出了一个标准化的解决方案-----系统平滑移植,容器虚拟化技术。让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。打破过去「程序即应用」的观念。透过镜像(images)将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。
Docker官网 点击跳转 Docker Hub 点击跳转
(1) 更快速的应用交付和部署
传统的应用开发完成后,需要提供一套安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行,大大延迟了交付时间。Docker化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间,这是也Docker的集装箱思想。
没有集装箱之前运输货物,东西零散容易丢失,有了集装箱之后货物不容易丢失,我们可以把货物想象成程序,目前我们要把程序部署到一台新的机器上,可能会启动不起来,比如少一些配置文件什么的或者少了什么数据,有了docker的集装箱可以保证我们的程序不管运行在哪不会缺东西,就像Docker的logo一样一只鲸鱼背着很多的集装箱。
(2) 更便捷的升级和扩缩容
随着微服务架构和Docker的发展,大量的应用会通过微服务方式架构,应用的开发构建将变成搭乐高积木一样,每个Docker容器将变成一块“积木”,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容,使应用系统的扩容从原先的天级变成分钟级甚至秒级。
(3) 更简单的系统运维
应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。
(4) 更高效的计算资源利用
Docker是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的Hypervisor支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存的利用率,关于虚拟机,和虚拟化以及运行架构等相关概念可以参考小编的这篇文章 虚拟化|虚拟机运行架构。
在安装Docker的之前,首先要确认系统的环境问题,Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。
Docker CE 分为 stable test 和 nightly 三个更新频道。
小编这里主要演示 Docker CE 在 CentOS上的安装。
下面是本篇博客的安装演示环境。
// 本篇博客采用的软件版本
VMware Workstation 16.2.1 // 虚拟机软件
CentOS-7-x86_64-Minimal-1708 // 这里采用的是Minimal版 没有图形化界面
Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10,小编这里的安装环境CentOS 7 满足最低内核的要求,其他版本的话可以执行以下命令查看一下内核版本。
uname -srm
如果之前安装过旧版本的Docker,可以执行以下命令卸载
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
使用yum安装首先大家的虚拟机需要联网,如果没有配置好网络服务的可以参考小编的这篇文章点击跳转
为了保证在线安装手动调试Docker顺利需要安装一下gcc的环境,依次执行以下两条命令进行安装。
yum -y install gcc
yum -y install gcc-c++
确保虚拟机可以进行正常的网络服务后,执行以下命令安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
执行以下命令即可
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
更新yum包软件索引,以后使用yum安装稍微会快一点
yum makecache fast
配置好环境问题后,执行以下命令安装Docker,docker-ce为社区免费版本。稍等片刻,docker即可安装成功 。
yum -y install docker-ce docker-ce-cli containerd.io
安装完成后Docker会自动注册为当前系统的系统服务服务名就叫docker,所以可以使用操作系统服务的命令来对Docker服务进行操作。
执行以下命令即可启动Docker
systemctl start docker
也可以执行以下命令查看Dcoker的版本
docker version
在此小编还提供了一些操作Dcoker服务比较常用的命令,觉得小编贴心的朋友可以给小编点个关注。
systemctl daemon-reload // 重载系统服务
systemctl list-unit-files --type service // 查看全部服务命令
systemctl status docker // 查看docker服务状态
systemctl enable docker // 设置docker开机自启动
systemctl disable docker // 关闭docker开机启动
systemctl start docker // 启动docker服务
systemctl stop docker // 停止docker服务
systemctl restart docker // 重启docker服务
docker官方镜像仓库网速较差,我们需要设置国内镜像服务,将来下载镜像我们都会到镜像地址里面下载,这里小编配置的是阿里云镜像。
参考阿里云的镜像加速文档 点击跳转
复制以下全部命令直接执行即可
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://qlmy5iw9.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
老规矩,在我们安装好Docker,且配置好镜像加速后我们可以来做一个小demo来测试一下安装好的Docker。
执行以下命令,基于hello-world这个镜像启动一个容器
docker run hello-world
可以看到他提示我们本地并没有 hello-world 这个镜像,所以他会去远程仓库下载再启动(由于我们配置的镜像源加速所以是去阿里云镜像下载),最后输出 Hello from Docker !
证明安装成功 至此演示就结束了
本篇博客就到此结束吧,这是小编Docker专栏的第一篇文章,后续该专栏将会持续更新Docker的相关知识文章,感兴趣的小伙伴可以点个订阅,如果文章有错误的地方或者有别的问题各位读者朋友可以在评论区提出来,感谢大家的阅读!!!