环境搭建
docker安装下载
删除之前版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
``
更新本地镜像源
```java
# 设置docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
//第二步
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
//第三步
yum makecache fast
//下载ce免费版
yum install -y docker-ce
关闭防火墙
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
#查看是否关闭防火墙
systemctl status firewalld
配置阿里镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://iuqgaarw.mirror.aliyuncs.com"]
}
EOF
//重新加载文件
sudo systemctl daemon-reload
//重启
sudo systemctl restart docker
通过命令启动docker
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
systemctl status docker #查看docker运行状态
docker安装mysql
sudo docker pull mysql:5.7
sudo 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
//开机启动
sudo docker update mysql --restart=always
也是挂载
sudo docker run -p 3306:3306 --name mysql --restart=always \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql --privileged=true \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
sudo docker run -p 3306:3306 --name mysql --restart=always -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 ps -a|grep 'Exited'|cut -d' ' -f1|xargs -I {} docker rm {}
mysql权限问题
进入容器
docker exec -it 容器Id /bin/bash
安装vim
apt-get update
apt-get install vim
登录mysql
mysql -u root -p
# 设置root用户在任何地方进行远程登录,并具有所有库任何操作权限,(公司绝对不能这么做,暴露的攻击面太大),这里只是做测试。 mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; # 刷新权限 mysql> FLUSH PRIVILEGES;
// 查询库中的账号和允许连接的host
select user,host from user;
// 给root 用户授权所有的权限以及能访问的ip
grant all privileges on *.* to root@"125.70.29.85" identified by "root";
//开启远程访问
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
// 刷新权限生效
flush privileges;
//新修改权限方法
GRANT CREATE ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
## docker安装redis
```java
sudo docker pull redis //安装的是最新版redis
sudo docker pull redis:5.0
挂载
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
启动redis容器
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -v /mydata/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456
安装完成 使用docker ps 检查
进入客户端测试
docker exec -it redis redis-cli
redis默认配置是没有持久化的,数据都存在内存中,如果重启redis,数据都将丢失。
解决办法:设置redis持久化:
命令:vim mydata/redis/conf/redis.conf
加入以下配置:
appendonly yes
requirepass 123456
重启redis就可以了