一、linux安装docker教程
第一步、关闭SELINUX服务
修改文件后的重启linux,重启命令为:reboot
注意此处虚拟机里修改重启无法启动linux系统成功,处理方法:
1、重启Linux按e进入系统启动项修改参数
2、在linux16的行位添加 selinux=0
按ctrl + x之后启动linux系统
3、启动之后,修改/etc/selinux/config文件
第二步、安装Docker服务
第三步、DockerHub是Docker公共镜像仓库
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
该脚本可以将 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中。适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有细微不同。这里需要重启docker才会生效
daemon.json 内容后面如果有,号就的去除
{“registry-mirrors”: [“http://f1361db2.m.daocloud.io”]}
二、使用docker安装mysql
1.在docker hub上查看要下载的mysql镜像名称:
docker hub镜像仓库中为我们开发要
打开docker hub 网站
dockerHub官网地址dockerHub官网地址dockerHub官网地址:https://registry.hub.docker.com/
在上方搜索栏里输入mysql 找到要拉取的镜像版本,在tag下找到版本
回到虚拟机界面,执行下面命令来拉取mysql镜像
不指定版本号,默认下载最新版本:docker pull mysql
指定版本号:docker pull mysql:5.7
2.镜像拉取完成后,用该镜像创建mysql实例,使用下面的命令来创建
docker run --privileged=true -p 5306:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d:rw -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql3 -d mysql:5.7
这里对上面的参数做下简单的介绍:
配置端口映射:-p 3306:3306
将容器的3306端口映射到主机的3306端口
配置mysql数据卷挂载
-v /usr/local/mysql/log:/var/log/mysql(日志文件挂载)
将容器中的日志文件夹挂载到主机对应的/var/log/mysql文件夹中
-v /usr/local/mysql/data:/var/lib/mysql(数据文件挂载)
将容器中的数据文件夹挂载到主机对应的/var/lib/mysql文件夹中
-v /usr/local/mysql/conf:/etc/mysql/conf.d:rw(配置文件挂载)
将容器的配置文件夹挂载到主机对应的/etc/mysql文件夹中(容易出错看错误2)
注(这里所提的主机指的是当前的linux主机)
配置用户:-e MYSQL_ROOT_PASSWORD=root
设置初始化root用户的密码
命名:--name mysql3
指定镜像资源:-d mysql:5.7
-d:以后台方式运行实例
mysql:5.7:指定用这个镜像来创建运行实例
下面演示是用root用户来执行的命令,如果当前不是root用户,要在命令前加 sudo,以管理员方式来运行, 创建成功后使用下面命令查看下创建好的mysql实例:docker ps -a
相关命令:
查看容器状态:docker ps -a
启动容器mysql3:docker start mysql3
停用容器mysql3:docker stop mysql3
重新进入容器:docker exec -it mysql3 bash
删除mysql3容器:docker rm mysql3
三、遇到无法启动的问题时,查看日志发现的错误
docker logs --tail -n mysql3
错误1、You need to specify one of the following as an environment variable:
- MYSQL_ROOT_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD
解释: 由于mysql没有指定root的登录密码导致无法启动,默认mysql配置是不允许空密码登录的
原因:上面执行命令的时候写错了环境变量, MYSQL_SERVICE_PASSWORD 应该修改成 MYSQL_ROOT_PASSWORD
错误2、mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)
解释:可能由于不同的mysql版本,/etc/mysql目录下的结构不一样
原因: 由于mysql的配置目录/etc/mysql下有两个空目录, 上面的执行命令仅挂载了当前目录,导致里面的两个目录没有权限挂载到宿主机内, 应该将挂载目录指定到具体的目录下: -v /usr/local/mysql/conf:/etc/mysql/conf.d:rw
错误3-1、mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (OS errno 13 - Permission denied)
错误3-2、chown: changing ownership of '/var/lib/mysql': Permission denied
原因: 启动时没有足够的权限, /var/lib/mysql目录没有写权限, 可能是部署docker时指定了--user xxx某个权限不足的用户
解决方法有三个:
1.在docker run中加入 --privileged=true 给容器加上特定权限
2.关闭selinux csdn
3.在selinux添加规则,修改挂载目录
本人使用的是第1种解决方案