docker安装mysql,redis

排查思路

首先排查服务器yum源,能否下载外部应用,因为服务器网络没有配置外部IP,所以导致下不来

vi /etc/resolv.conf,进入到配置文件

如果没有配置就添加下面两个IP地址

nameserver 114.114.114.114

nameserver 119.29.29.29

安装docker

1.卸载旧版本的docker

sudo yum remove docker \

                  docker-client \

                  docker-client-latest \

                  docker-common \

                  docker-latest \

                  docker-latest-logrotate \

                  docker-logrotate \

                  docker-engine

2.设置存储库需要安装的依赖包

sudo yum install -y yum-utils

 sudo yum-config-manager \

         --add-repo \

https://download.docker.com/linux/centos/docker-ce.repo

 3.安装docker引擎

sudo yum install docker-ce docker-ce-cli containerd.io

4.出现了错误,不用去尝试执行下面那个rpm -Va --nofiles --nodigest(亲测没效果)

执行sudo yum install docker-ce docker-ce-cli containerd.io --skip-broken命令,先跳过依赖安装

5.启动docker,但发现启动失败

systemctl start docker

Systemctl enable docker

虽然跳过了安装依赖,但是docker还是启动不了

cd /etc/yum.repos.d目录下,重新执行yum install docker-ce docker-ce-cli containerd.io

发现还是报依赖错误

问题原因:container-selinux没有安装或者版本太低。只需要安装一个contain-selinux包就可以

解决方案:

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum -y install docker-ce

 安装成功,问题解决

启动docker,这样就可以用docker了

systemctl start docker

Systemctl enable docker

配置docker镜像加速器

1.sudo mkdir -p /etc/docker

2.sudo tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["https://g39835el.mirror.aliyuncs.com"]

}

EOF

3.sudo systemctl daemon-reload

4.sudo systemctl restart docker

通过docker安装mysql5.7镜像

1.拉取mysql5.7镜像

docker pull mysql:5.7

2.拉取完成后,查看镜像

docker images | grep mysql

3.创建mysql容器

mkdir -p /root/mysql/data /root/mysql/logs /root/mysql/conf

4.在/root/mysql/conf中创建 *.cnf 文件,并加入这些配置防止编码错误

touch my.cnf

[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
 
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

5.创建容器,将数据,日志,配置文件映射到本机

docker run -p 3306:3306 --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

6.启动mysql容器

docker start mysql

7.进入容器

docker exec -it 镜像名称 /bin/bash

因为我起的镜像名称是mysql,所以我的命令就是docker exec -it mysql /bin/bash

8.登录mysql

mysql -u root -p

9.开启远程连接并设置新密码

use mysql;

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

FLUSH PRIVILEGES;

10.退出exit

11.打开navicat,远程连接数据库

建库报错

通过navicat新建数据库的时候,报错1044 - Access denied for user 'root'@'%' to database '数据库名称'

进入到容器里面

docker exec -it mysql /bin/bash

mysql -u root -p

查看权限

SELECT * FROM mysql.user;

 发现root有些权限是no

修改root权限 

update user set Update_priv ='Y' where user = 'root';
update user set Select_priv ='Y' where user = 'root';
update user set Insert_priv ='Y' where user = 'root';
update user set Update_priv ='Y' where user = 'root';
update user set Delete_priv ='Y' where user = 'root';
update user set Create_priv ='Y' where user = 'root';
update user set Drop_priv ='Y' where user = 'root';
update user set Reload_priv ='Y' where user = 'root';
update user set Shutdown_priv ='Y' where user = 'root';
update user set Process_priv ='Y' where user = 'root';
update user set File_priv ='Y' where user = 'root';
update user set Grant_priv ='Y' where user = 'root';
update user set References_priv ='Y' where user = 'root';
update user set Index_priv ='Y' where user = 'root';
update user set Alter_priv ='Y' where user = 'root';
update user set Show_db_priv ='Y' where user = 'root';
update user set Super_priv ='Y' where user = 'root';
update user set Create_tmp_table_priv ='Y' where user = 'root';
update user set Lock_tables_priv ='Y' where user = 'root';
update user set Execute_priv ='Y' where user = 'root';
update user set Repl_slave_priv ='Y' where user = 'root';
update user set Repl_client_priv ='Y' where user = 'root';
update user set Create_view_priv ='Y' where user = 'root';
update user set Show_view_priv ='Y' where user = 'root';
update user set Create_routine_priv ='Y' where user = 'root';
update user set Alter_routine_priv ='Y' where user = 'root';
update user set Create_user_priv ='Y' where user = 'root';
update user set Event_priv ='Y' where user = 'root';
update user set Trigger_priv ='Y' where user = 'root';

修改完毕之后重启mysql镜像

docker restart mysql 

通过docker安装redis镜像

docker pull redis

创建redis/conf文件夹

mkdir -p /workspace/redis/conf

创建一个redis.conf文件用来映射用 

touch /workspace/redis/conf/redis.conf

在redis.conf中加上appendonly yes,开启持久化配置

映射redis.conf配置文件 

docker run -p 6379:6379 --name redis -v /workspace/redis/data:/data \
-v/workspace/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf

 docker exec -it redis redis-cli

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值