Docker的安装与踩坑
一、Docker使用背景
Docker 是一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
二、Docker安装过程
1.Docker前期准备环境
首先要明确我们的安装环境,我是在VirsualBox中使用centos7安装的Linux系统,然后通过命令vagrant up启动Linux系统,再使用vagrant ssh登录虚拟机。
2.安装Docker
先登录到Docker官网(我直接定位到文档的位置了),按照文档顺序通过命令行下载安装Docker环境。
第一步卸载docker的残余信息(如果之前安装过),这里为了保险起见,还是卸载一下比较好。
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
第二步设置docker仓库,安装一些必要的安装包,出现Complete表示成功安装。
$ sudo yum install -y yum-utils
第三步设置下载docker的位置,不过这里可以注意下,官方提供的下载起来会比较慢,可以使用阿里云或者清华大学源的源地址下载,自己挑选一个就可以。
//官方
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
//阿里云
$ sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
//清华大学源
$ sudo yum-config-manager \
--add-repo \
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
第四步在官网这里有Option选项,我们没有其他要求,就不选择了。直接跳到安装docker引擎,docker客户端,docker容器。看到Complete表示完成下载。
$ sudo yum install docker-ce docker-ce-cli containerd.io
第五步docker下载完之后启动,并使用命令行查看当前docker版本等信息,至此docker安装完成。
$ sudo systemctl start docker
最后,可以根据个人需要,设置docker自启动,即打开虚拟机,docker自启动。
$ sudo systemctl enable docker
docker run -p 3306:3306 --name mysql\
-v /mydata/mysql/log:/var/log/mysql\
-v /mydata/mysql/data:/var/lib/mysql\
-v /mydata/mysql/conf:/etc/mysql\
-e MYSQL_ROOT_PASSWORD=root\
-d mysql:5.7
三、Docker安装镜像的坑
1.问题描述
在我按照上述过程安装完docker之后,我发现每次开机docker都不会自启动,同时使用命令docker version时Server端的信息不会显示。
然后我顺藤摸瓜,去查看docker的状态,发现红字,能看到是启动的问题,于是就开始百度之旅。
一开始我的注意力一直在docker无法自启动上,csdn,博客园逛了一圈之后无法解决,上Stack Overflow查询后,有一个简单的方法,手动开启docker服务,这个方法确实好使用。
sudo dockerd
再后面使用过程中,我觉得这个方法治标不治本,于是返回来看报错,仔细阅读之后,我决定看一下docker.service文件。注意看我红框圈出来的地方,这是提示信息,它告诉我们已经配置镜像加速,不需要重复配置,所以我在想应该是重复配置导致冲突。
2.问题解决
于是我查了下如何配置docker镜像加速,选择将daemon.json文件删除,将我的镜像加速路径直接替换掉docker.service里的address,
ExecStart=/usr/bin/dockerd --registry-mirror=<your accelerate address>
使用sudo systemctl restart docker重启docker,直接查询docker状态,发现没有红点了,至此问题解决。