安装docker需要centos7+的版本,低版本需要额外的配置,很麻烦,不建议使用。
传送门: 6.5版本额外链接 https://blog.csdn.net/lvshuocool/article/details/79540617
*安装docker开始
1、更新yum源(默认从无任何配置开始安装)
sudo yum update
2、配置需要的环境
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3、设置yum源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、安装docker(ce是社区版,免费)
sudo yum install docker-ce
5、安装完成后查看版本,出现docker的版本号,就ok了。
docker -v
6、因为docker默认的镜像下载地址是国外的地址,所以搜索镜像的时候会连接超时,所以需要在etc目录下新建一个目录docker,在此目录下新建一个文件daemon.json文件,这个目录是docker高版本默认的配置文件。修改这个文件,添加以下参数信息,修改完保存。(确认不要有中文空格)
{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"],"live-restore": true
}
* 问题标注:此地址有时不生效,还是会访问默认的国外地址。但是是间歇性的,貌似只有新版的docker有这种问题。有知道原因的可以告诉我。
这是我后边改的阿里云的地址:
这里显示已经改了,但有时还是会访问上边的默认地址。
7、修改完此文件后,重新加载此文件,使其生效。(如果daemon.json的配置不生效,可能是配置里有空格什么的,要注意下。)
systemctl daemon-reload
8、启动docker
systemctl start docker
此时可以查看docker的状态,处于active(running)状态,说明启动完成。
9、启动完成后,搜索镜像。举例搜索mysql的镜像,就会搜索出按热度(stars)排序的镜像,official表示该镜像是否为官方镜像。
如果上一步daemon.json配置始终无法生效,可以先拉取这个镜像完成demo测试(docker pull docker.mirrors.ustc.edu.cn/centos/mysql-57-centos7)
docker search mysql
10、下载镜像(按上边搜索出的name属性拉取,注意是全名),不指定版本的话,默认会拉取最新版本的mysql
docker pull mysql
11、下载完成后,查看本地所有已下载的镜像。
docker images
12、将镜像初始化容器,敲完命令回车,出现一长串字符串说明就ok了。
后边的3306端口指的是docker容器内的端口,需要通过另一个端口映射出去给外部调用,可以自己定义,达到一个镜像启动多个mysql容器的效果。
启动命令还有更详细的定制,具体可见 https://hub.docker.com/ 官网。
docker run -di --name=mysql-test -p 33306:3306 -e MYSQL_ROOT_PASSWORD=root mysql
13、查看容器列表和属性,发现我们都是按我们上边的命令配置的,没什么问题。
docker ps -a
14、把上一步的id用命令执行即可,mysql容器启动成功。
docker restart xxxxxxx
15、测试下windows远程调用mysql,调用成功。(记得要关闭防火墙,然后再重启docker)
16、补充使用mysql镜像的一些问题。(2019年06月26日23点57分)
1、最近发现更新下来的mysql镜像的latest版本远程一直连不上。操作也都正常,sqlyog报错如图:
大概意思是客户端不支持服务端用户验证协议。
网上查了下,发现这是mysql8.x新版本的特性,使用旧版本的mysql镜像就好了。
问题原因:
命令docker exec -it mysql03 bash,mysql03是自定义容器的名称,命令的意思是切换到容器的命令模式。
然后mysql用户名密码登录。
然后查看用户,这里有一个列是展示用户访问协议的,直接修改访问协议也可以,具体哪个列想不起来了。????
可以看到有两个root用户,下边的那个用户是linux本机登录时使用的,上边的用户带%的是远程登陆时使用的,通过sql它的远程访问策略改变为native策略就可以了,具体脚本忘了,记起来再补上。
为什么高版本mysql的用户校验策略反而更严格了,我觉得他的本意,是root用户本意只用于本机操作,新的用户来给用户进行远程访问。可能这是人性化的一种体现吧,当然不适用于新手写demo,简直就是坑,浪费时间。
既然自己测试玩儿,还是使用旧版本比较好。
目前官网有这几个版本的镜像,直接docker search mysql:5.6就ok了。
16、以下提供几个常用的docker命令。
设置docker开机自启动
systemctl enable docker
停止docker
systemctl stop docker
重启docker
systemctl restart docker