文章目录
一,docker简介
1,初识docker
在学习和使用微服务的过程中,经常听到一个词是“容器化
”,docker实现容器化的技术。
上图非常形象。
docker本身是软件,安装、运行在一台计算机上。
就像上面的图标所示,docker就像一艘鲸鱼船,提供一个平台,可以在这个平台上创建、摆放很多个容器。
把这些容器理解为一个一个独立的计算机,每个容器都有CPU、内存、磁盘资源,可以像操作真正的计算机一样操作容器,可以使用命令行,可以在容器里安装软件。
2,docker解决了什么痛点
2.1 模板化部署,提升部署效率,提高部署可靠性
假设有这样一个场景,一个Java微服务要部署到100台服务器构成的集群上,这个服务依赖JDK、MySQL,还要安装采集日志和JVM信息的工具。
如果没有容器,我们需要在100台机器上逐一安装,可想而知,工作量是多么大,后期的运维比如版本更新、新增软件的安装,都非常低效且风险大。
有了docker之后就不一样了,我们只要创建一个docker容器,把服务和服务相关的软件都安装好,在测试通过确保服务可以运行之后,这个docker容器就变成了一个模板,可以不限数量的拷贝到其他计算机上,拷贝的容器和最初制作的容器一样,包含已经安装好的服务及其依赖的软件。
相比以前逐一操作100台计算机,现在只需要操作一台计算机,然后把结果复制到100台计算机上,效率和可靠性都大大增强。
2.2 节约资源
如果公司使用物理机隔离不同项目,每个项目都要占用一台物理机,即便是使用虚拟机来隔离,每个虚拟机都需要运行一个完整操作系统的副本,这会占用大量的计算资源,如CPU、内存和硬盘空间。
容器比虚拟机轻得多,它们共享主机的操作系统内核,这意味着你可以用同样的资源运行更多的应用实例。
二,Docker Hub镜像仓库
Docker Hub 是 Docker 公司提供的一个公共的容器镜像仓库服务,我们可以把制作好的Docker容器上传到Docker Hub,需要时从Docker Hub下载,和手机APP的应用商店类似。
在Docker Hub上可以搜索到很多公开的制作好的Docker镜像,比如Mysql镜像,使用镜像安装MySQL,比直接在物理机或虚拟机上安装MySQL要简单很多,几条命令就可以安装成功,省去了大量耗时又容易出现错误的环节。
但是,在使用Docker容器之前,要在你的电脑上安装Docker。
三,Docker
1,卸载之前安装的docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
如果之前没安装过Docker,会有如下提示。
2,安装必须的依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
安装的过程中可能会出现错误:Could not resolve host: mirrorlist.centos.org; Unknown error
Could not resolve host: mirrorlist.centos.org; Unknown error
Cannot find a valid baseurl for repo: base/7/x86_64
原因是无法解析默认的yum源域名,将yum源替换为阿里云即可。yum源替换为阿里云
3,设置下载docker的地址
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
这一步也可能会报错:Could not fetch/save url https://download.docker.com/linux/centos/docker-ce.repo to file /etc/yum.repos.d/docker-ce.repo
也是因为国外域名解析问题,不用过多纠缠,使用阿里云作为docker源。
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4,安装 docker,以及 docker-cli
sudo yum install docker-ce docker-ce-cli containerd.io
5,启动docker
sudo systemctl start docker
6,验证docker是否安装、启动成功
docker -v
7, 设置docker开机启动
sudo systemctl enable docker
问题记录
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock32 error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error
备份当前的yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载新的CentOS-Base.repo 到/etc/yum.repos.d/
CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
清空并生成缓存
yum clean all
yum makecache