Centos7下安装Docker
一、Centos7环境
- 系统版本:
# ll /etc/*centos*
# cat /etc/centos-release
2. 内核版本
# uname -r
3. 系统位数
# getconf LONG_BIT
二、安装Docker
官方安装参考文档:
Install Docker Engine on CentOS
1、卸载旧版本docker或docker-engine。
# sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
因为我的环境是刚安装的centos7,没有docker环境,所以出现如下提示:
2、安装所需要的环境依赖包
# sudo yum install -y yum-utils
如果之前没有安装过依赖包,则会下载并安装:
3、配置远程镜像仓库
说白了,就是你想用官方的镜像,总得到哪里去下载
官方文档给的远程镜像仓库地址是:
https://download.docker.com/linux/centos/docker-ce.repo
但是考虑到国内的网络环境,采用阿里的镜像仓库还是作为首选,阿里镜像:
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
配置docker远程镜像:
# sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、为了提高搜索安装docker的速度,更新缓存
# sudo yum makecache fast
5、安装docker engine最新版本
docker-ce的ce指的是社区版本,ee是企业版本。
# sudo yum install docker-ce docker-ce-cli containerd.io
一路允许,即选择y回车
如果不想安装最新版本的docker engine,可以参考官方文档,这里列出步骤:
- 查询可用的版本
# yum list docker-ce --showduplicates | sort -r
- 找到自己想要安装的版本号,安装指定的版本
# sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
6、安装完docker engine之后,启动docker
# sudo systemctl start docker
7、永久不变的hello world
# sudo docker run hello-world
等结果,但是,
斜眼笑,呵呵,报错了,不能放弃任何一个学习的机会,尝试分析解决。
错误信息:
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.
首先,Unable to find image 'hello-world:latest' locally
这句报错告诉我们,本地找不到这个hello-world镜像,这个很正常,因为新安装的docker环境,本地镜像仓库还没有任何镜像。
那么,本地没有这个镜像,docker会到远程仓库去拉去这个镜像,但是却报错了docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
,大概意思就是说尝试从远程服务器拉去镜像,但是超时了。
这个很奇怪,貌似唯一的解释,是因为镜像服务器实在国外的问题导致的,上面的报错中有一个单词daemon
,docker的镜像地址就是配置在那个json文件下的。当然,新安装的docker没有这个文件(linux下)!
查看一些资料,这个json文件应该配置在/etc/docker/daemon.json
,既然感觉是这块问题,就找个可用的镜像源配置一下(这里不给出,因为我遇到的不是镜像数据源的问题);配置完之后,刷新配置systemctl daemon-reload
,重启docker systemctl restart docker
。
做完上述步骤,我满怀信心的运行docker run hello-world
,但是,还是这个报错,然后,一脸蒙蔽……
然后,,我甚至重置了系统,从新安装了虚拟机,从新来了一边上面的步骤,结果还是一样……
无奈,错误贴网上找找相关资料,最后从这篇博客找到启示,参考链接:记一次VMware NAT模式下navicat访问centos7 docker mysql 失败
虽然与我的情况不一样,倒是提醒我可能是虚拟机链接那块出现的问题,报错前我的虚拟机链接配置的是NAT模式,因为我手动更改了NAT的地址网段,导致地址冲突,详见上述博客。
更改网段后,终于见到久违的hello-world了^^~
三、卸载docker
- 卸载Docker引擎、CLI和Containerd包
一路按y确定删除
# sudo yum remove docker-ce docker-ce-cli containerd.io
- 删除docker文件
# sudo rm -rf /var/lib/docker