什么是Docker?
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。(源自:百度百科)
为什么用Docker?
Docker最直接的应用就是解决:“开发人员和运维人员打架的问题”。
我们经常会遇到这样一种场景:开发人员做了许久的项目,在自己的开发环境下测试了千百遍确认无误后交给了运维人员,运维人员部署到服务器上后出现各种问题,然后开发人员和运维人员就开始互相扯皮了。
出现这种问题的原因主要是运维人员部署的环境可能和开发人员的开发环境有差异。
Docker就能很好的解决这个问题!
每一个Docker镜像可以创建多个容器,每个容器就是一个“麻雀虽小五脏俱全”的操作系统,里面包含了一个软件系统,以及这个软件系统所有依赖的运行环境。
Docker的镜像原理
Docker的镜像是累积式的层级结构。
Docker的所有镜像都共用Docker的底层内核,并在底层内核基础上累积其它内容。
这种机制会使得Docker的镜像文件大小会出现“偏大”或“偏小”的问题,比如:
- CentOS只有200M:因为CentOS底层使用了Docker内核,所以大小精简了很多。
- Tomcat却有近500M:因为Tomcat想要运行,必须前提是有Linux系统、JDK运行环境等等。所以Tomcat里面其实是包含了运行Tomcat的所有环境。
DockerHub
Docker的远程镜像地址库,一般用来查询镜像信息。
网址:https://hub.docker.com/
Docker在CentOS8的安装
1. Docker的版本。
Docker分为CE(Community Edition)免费和EE(Enterprise Edition)收费两个版本。我们以安装CE版本为例。
官方参考文档:https://docs.docker.com/install/linux/docker-ce/centos/
2. 如果之前装过Docker,则卸载老版本
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
3. 安装Docker仓库
$ yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
$ yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
4. 安装Docker
yum install docker-ce docker-ce-cli containerd.io
可能会报以下错误:
package docker-ce-3:19.03.5-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
Docker是运行在containerd.io容器里的,上面的错误意思是containerd.io版本太低了。所以呢,要把上面的命令拆成两部分:
第一部分:安装更高版本的containerd.io
yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
第二部分:安装docker-ce和docker-ce-cli
yum install docker-ce docker-ce-cli
5. 启动Docker服务
systemctl start docker
6. HelloWorld测试
docker run hello-world
看到下面内容,证明安装成功:
7. 设置Docker的Aliyun镜像加速器
7.1 注册登陆阿里云账号。
自己完成吧。
7.2 搜索并开通容器镜像服务。
阿里云的东西多到爆,别傻傻的一个一个找,在以下位置搜索“镜像”,然后点击搜索结果“容器镜像服务”。
按照提示,设置“设置Registry登录密码”
7.3 获取镜像相关信息并按照提示进行配置文件修改。
第一步:新建/etc/docker/daemon.json文件。
第二步:将阿里云里面提示的内容写入daemon.json文件中。
{
"registry-mirrors": ["https://XXX.mirror.aliyuncs.com"]
}
第三步:重新加载和运行docker命令。
sudo systemctl daemon-reload
sudo systemctl restart docker
误区提醒:
在某个版本的教程里面,会教你用ps命令查看当前docker进程:
ps -ef|grep docker
如果查询结果里面出现了aliyun的地址,才算配置成功。
我当时按照这个方法操作后,就是没有在进程出现Aliyun的信息,所以就一直认为自己的镜像没有配置成功。
其实,在CentOS7和CentOS8里面,设置成功后,在进程中你根本看不见Aliyun的信息。只有在CentOS6.5中才能看见,而且CentOS6.5的配置方法也和后续版本不一样。
那个录制教程的傻子自己都没有试过就瞎BB一通!害我浪费了大把时间!