排查思路
首先排查服务器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