服务器部署环境(docker安装Mysql + Redis + MongoDB)

1. 安装Docker

1、选择要安装的平台

Docker要求CentOS系统的内核版本高于3.10

powershell 复制代码
uname -r #通过 uname -r 命令查看你当前的内核版本

官网地址

2. 卸载已安装的Docker,

使用Root权限登录 Centos。确保yum包更新到最新。

powershell 复制代码
sudo yum update

如果操作系统没有安装过Docker , 就不需要执行卸载命令。

powershell 复制代码
 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

3.建立仓库

powershell 复制代码
## 安装Docker所需要的一些工具包
sudo yum install -y yum-utils
 
## 建立Docker仓库 (映射仓库地址)
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装最新版本

powershell 复制代码
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin


查看Docker是否成功及安装的具体版本号

powershell 复制代码
docker info

启动docker服务(并开机自启)

powershell 复制代码
systemctl start docker.service
systemctl enable docker.service

测试 Docker 是否安装正常

powershell 复制代码
sudo docker run hello-world

查看docker服务状态 running 就是启动成功

systemctl status docker

使用docker镜像(阿里云加速器)

powershell 复制代码
 也可使用中国科学技术大学的镜像: "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]

命令行

powershell 复制代码
sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://q0dw5726.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

4. Docker 安装 MySQL

拉取镜像

查询有哪些 mySQL 镜像

powershell 复制代码
docker search mysql

通过以下命令拉取镜像:mysql 后面不加 latest 也是可以的,默认就是拉去最新版本。

powershell 复制代码
docker pull mysql:latest

创建容器

通过以下命令查看已下载的镜像

powershell 复制代码
docker images

mysql 就是刚刚下载的镜像

###通过以下命令创建并运行容器

powershell 复制代码
docker run -d \
--name mysql \
--restart=always \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=20240321 \
mysql:latest

解释:

-d : 后台运行

-p:端口映射 本机的端口:docker中的端口

--name :容器起别名

--restart:docker启动的时候随之启动

-e MYSQL_ROOT_PASSWORD :设置mysql的root用户的密码

查看容器

通过以下命令进入容器

powershell 复制代码
docker exec -it 8dcff2228a5d  bash  //8dcff2228a5d 为容器的id,此处是我的容器id

登录MySQL:

powershell 复制代码
mysql -u root -p

可以远程连接一下测试是否可以用

5. docker 安装 Redis

docker 镜像库

Docker如果想安装软件 , 必须先到 Docker 镜像仓库下载镜像。

命令 描述
docker pull redis 下载最新版Redis镜像 (其实此命令就等同于 : docker pull redis:latest )
docker pull redis:xxx 下载指定版本的Redis镜像 (xxx指具体版本号)
docker search redis 查看
exit 退出

查看是否拉取成功;出现 Redis 表示拉取成功

powershell 复制代码
docker images -a

去redis官网下载redis,然后在redis-7.0.0\redis-7.0.0找到redis.conf文件官网链接

修改文件中以下配置项:

powershell 复制代码
1.将bind 127.0.0.1 -::1注释掉
# bind 127.0.0.1 -::1
2.将 appendonly no 设置成yes,开启redis数据持久化 
 appendonly yes  
3.将  requirepass foobared 解开注释,设置密码
 requirepass root
4.以下两项配置可选(如果不需要从外部连接,可不进行配置,以下配置有风险,请谨慎配置)
保护模式:如果设置为yes,那么只允许我们在本机的回环连接,其他机器无法连接,即外部无法连接,此处关闭
protected-mode no 
将bind 127.0.0.1注释掉,此项配置的作用是服务绑定监听本机的哪个ip
# bind 127.0.0.1

修改完毕后的完整redis.conf文件如下:

powershell 复制代码
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#bind 127.0.0.1

protected-mode no

port 6379

tcp-backlog 511

requirepass root

timeout 0

tcp-keepalive 300

daemonize no

supervised no

pidfile /var/run/redis_6379.pid

loglevel notice

logfile ""

databases 30

always-show-logo yes

save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir ./

replica-serve-stale-data yes

replica-read-only yes

repl-diskless-sync no

repl-disable-tcp-nodelay no

replica-priority 100

lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

appendonly yes

appendfilename "appendonly.aof"

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble yes

lua-time-limit 5000

slowlog-max-len 128

notify-keyspace-events ""

hash-max-ziplist-entries 512
hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

stream-node-max-bytes 4096
stream-node-max-entries 100

activerehashing yes

hz 10

dynamic-hz yes

aof-rewrite-incremental-fsync yes

rdb-save-incremental-fsync yes

在linux服务器中新建/home/redis/目录,将redis.conf文件上传至该目录

使用如下命令运行redis容器:

powershell 复制代码
docker run  -p 6379:6379 --name myredis -v /home/redis/redis.conf:/etc/redis/redis.conf -v /home/redis/data:/data -d redis redis-server /etc/redis/redis.conf    --requirepass "root"

或者

在linux服务器中新建docker-software/redis目录,将redis.conf文件上传至该目录

powershell 复制代码
docker run --restart=always --log-opt max-size=1024m --log-opt max-file=2 -p 6379:6379 --name redis -v /docker-software/redis/conf/redis.conf:/etc/redis/redis.conf  -v /docker-software/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass redis123456

查看是否运行成功

powershell 复制代码
docker ps
powershell 复制代码
 docker exec -it myredis redis-cli
docker run -d --name redis -p 6379:6379 --restart unless-stopped -v /home/redis/data:/data -v /home/redis/conf/redis.conf:/etc/redis/redis.conf redis-server /etc/redis/redis.conf redis:bullseye

正在使用的方案:

在根目录下创建文件夹data

powershell 复制代码
docker run  --restart=always -p 6379:6379 --name redis \
-v /data/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
-d redis:latest redis-server /etc/redis/redis.conf

6.1 docker 拉取mysql镜像

powershell 复制代码
docker pull mongo:latest

6.2 运行容器

powershell 复制代码
docker run -itd --name mongo -p 27017:27017 mongo --auth
参数说明:
-p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。
--auth:需要密码才能访问容器服务。

6.3 创建用户并设置密码

powershell 复制代码
docker exec -it mongo mongo admin(5.0版本以上连接mongo使用命令mongosh)
创建一个名为 admin,密码为 123456 的用户。
db.createUser({ user:'admin',pwd:'XXXXXX',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
尝试使用上面创建的用户信息进行连接。
db.auth('admin', 'XXXXXX');

4.注释

权限 说明 read 允许用户读取指定数据库 readWrite 允许用户读写指定数据库

dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

userAdmin 允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户

clusterAdmin 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限

readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限

readWriteAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读写权限

userAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

dbAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限

root 只在admin数据库中可用。超级账号,超级权限
正在使用的版本命令:

powershell 复制代码
docker run -dit --name mongo -p 27017:27017 mongo:latest --auth


-p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。
--auth:需要密码才能访问容器服务。

docker exec -it mongo mongosh admin // (5.0版本以上连接mongo使用命令mongosh)

创建一个名为 admin,密码为 123456 的用户。
db.createUser({ user:'admin',pwd:'20004321',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
尝试使用上面创建的用户信息进行连接。
db.auth('admin', '20004321');
相关推荐
青木9608 分钟前
封装成开箱即用的docker
docker·容器
白露与泡影12 分钟前
MySQL 时间类型选型避坑:timestamp 和 datetime 该怎么选?
数据库·mysql
爱丽_1 小时前
Docker 从原理到项目落地(镜像 / 容器 / 网络 / 卷 / Dockerfile)
网络·docker·容器
janthinasnail2 小时前
Docker镜像源加速器
docker·docker镜像源
pangares2 小时前
防火墙安全策略(基本配置)
服务器·php·apache
运维 小白2 小时前
2. 部署mysql服务并监控mysql
数据库·mysql·adb
坚定的共产主义生产设备永不宕机2 小时前
网络层协议(IPV4报头)
运维·服务器·网络
北漂Zachary2 小时前
Mysql中使用sql语句生成雪花算法Id
sql·mysql·算法
kc胡聪聪3 小时前
nginx的核心功能
服务器·nginx
小云数据库服务专线3 小时前
linux awk使用
linux·运维·服务器