阿里云服务器通过 docker CE 安装 Redis 和 Mysql
一、安装 Docker
1. 删除原有的 Docker 源(如有)
bash
sudo rm -f /etc/yum.repos.d/docker-ce.repo
2. 配置阿里云 Docker 源
bash
sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[docker-ce-stable]
name=Docker CE Stable - Alibaba Cloud
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
enabled=1
EOF
3. 清理缓存
bash
sudo yum clean all
4. 重建元数据
bash
sudo yum makecache
5. 安装 Docker CE
bash
sudo yum install docker-ce docker-ce-cli containerd.io -y
6. 启动并设置开机自启
bash
sudo systemctl start docker
sudo systemctl enable docker
二、配置 Docker 镜像
本章节描述的是阿里云服务器的专属镜像配置方式。如果你的服务器不是阿里云,建议忽略本章节的内容,搜索专属于你的服务器的 Docker 镜像配置方式进行配置。
1. 登录阿里云控制台
- 访问:cr.console.aliyun.com
- 登录你的阿里云账号。
2. 获取专属镜像加速地址
- 进入「容器镜像服务 ACR」 > 「镜像工具」 > 「镜像加速器」
地址大概长这样:
https://<your_id>.mirror.aliyuncs.com
3. 配置 Docker 使用加速器
bash
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://<your_id>.mirror.aliyuncs.com"]
}
EOF
注意:上面的
your_id
一定要替换为自己从 镜像加速器 看到的 id,否则会有问题。
4. 重启 Docker 服务
bash
sudo systemctl daemon-reload
sudo systemctl restart docker
三、安装 Redis
注意:一定要确保你的服务器可以正常访问 docker 仓库,否则无法继续下面的安装。
1. 拉取 Redis 镜像
bash
sudo docker pull redis:latest # 这里的 latest 可以替换为你期望的版本
2. 运行 Redis 容器
bash
sudo docker run --name my-redis -p 6379:6379 -d redis -v /data/redis:/data --appendonly yes
- 参数说明:
--name my-redis
:容器名称(可自定义)。-p 6379:6379
:映射宿主机 6379 端口到容器 6379 端口。Redis通常都是运行在这个端口上。-d
:后台运行。-v /data/redis:/data
:将 Redis 数据目录映射到宿主机 /data/redis。--appendonly yes
:启用 AOF 持久化。
3. 验证 Redis
bash
sudo docker exec -it my-redis redis-cli # 进入 Redis CLI
127.0.0.1:6379> SET test "hello" # 设置一个测试值
OK
127.0.0.1:6379> GET test # 获取上面的测试值
hello
4. 验证远程连接 Redis
- 在你的桌面端运行可以连接 Redis 的工具,然后通过 IP+端口 连接,检查是否可连接上。
- 如果你不知道用什么工具,建议搜索一下
phpStudy
工具,里面有 Redis、Mysql 的远程连接工具。
- 如果你不知道用什么工具,建议搜索一下
- 当你成功连接上之后,你应该可以在
db0
里看到刚刚通过命令行加入的数据 test ,查看这个数据的详情,可以看到它的 value 为命令行设置的 hello。 - 你可能遇到的问题:
- 问题1:通过 IP+端口 连接不上。
- 原因1:端口未开放。阿里云可通过 管理安全组规则 来放开端口。
四、安装 Mysql
注意:一定要确保你的服务器可以正常访问 docker 仓库,否则无法继续下面的安装。
1. 拉取镜像
bash
sudo docker pull mysql:latest # 这里的 latest 可以替换为你期望的版本
2. 运行 Mysql 容器
bash
sudo docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=your_password -p 3306:3306 -v /data/mysql:/var/lib/mysql -d mysql
-
参数说明:
--name my-mysql
:容器名称(可自定义)。-e MYSQL_ROOT_PASSWORD=your_password
:设置 root 密码(务必修改)。-p 3306:3306
:映射宿主机 3306 端口到容器 3306 端口。-d
:后台运行。-v /data/mysql:/var/lib/mysql
:将 MySQL 数据目录映射到宿主机 /data/mysql。
-
注意:如果你是在学习,期间多次执行了该命令来安装 MySQL 的容器,且每次密码不一样,则需要在安装前执行命令
sudo rm -rf /data/mysql/*
来删除旧数据,才能保证每次安装的密码是生效的。千万注意:
sudo rm -rf /data/mysql/*
命令会完全删除数据,一定要谨慎执行。
3. 验证 MySql
bash
sudo docker exec -it my-mysql mysql -uroot -p
# 然后输入你刚设置的密码
mysql > SHOW DATABASES;
# 然后显示了数据库里默认的四张表
4. 验证远程连接 Mysql
- 在你的桌面端运行可以连接 MySQL 的工具,然后通过 IP+端口+用户名+密码 连接,检查是否可连接上。
- 如果你不知道用什么工具,建议搜索一下
phpStudy
工具,里面有 Redis、Mysql 的远程连接工具。
- 如果你不知道用什么工具,建议搜索一下
- 当你成功连接上之后,你就可以看到 MySQL 里默认的四个数据库了。
- 你可能遇到的问题:
-
问题1:通过 IP+端口+用户名+密码 连接不上。
-
原因1:端口未开放。阿里云可通过 管理安全组规则 来放开端口。
-
问题2:无法通过 root+密码 连接。
-
原因2:要么是密码错误,要么是禁用了 root 远程登录。可通过第3步
验证 Mysql
进入 mysql,执行命令SELECT User, Host FROM mysql.user;
查看 root 是否禁用了远程登录。如果你看到了大概如下的内容,那就表示没有禁用远程登录,应该是你密码错了:sql+------------------+-----------+ | User | Host | +------------------+-----------+ | root | % | ......
如果是禁用了远程登录,可询问AI如何远程连接。
-
五、安装 Nginx
注意:一定要确保你的服务器可以正常访问 docker 仓库,否则无法继续下面的安装。
1. 拉取镜像
bash
sudo docker pull nginx:latest # 这里的 latest 可以替换为你期望的版本
2. 运行 Nginx 容器
bash
sudo docker run --name my-nginx -p 80:80 -v /data/nginx/logs:/var/log/nginx -d nginx
- 参数说明:
--name my-nginx
:容器名称(可自定义)。-p 80:80
:映射宿主机 80 端口到容器 80 端口。-v /data/nginx/logs:/var/log/nginx
:将 Mginx 运行日志映射到 /data/nginx/logs 目录。-d
:后台运行。
3. 验证访问
-
方式1:在服务器命令行窗口执行命令
curl http://localhost
,命令行窗口打印了 index.html 的内容。 -
方式2:在自己电脑的浏览器里通过服务器公网 ip 访问
http://<你的服务器公网ip>
,呈现 Welcome to nginx! 的界面。
附:使用 docker-compose
统一安装 Redid
、Mysql
、Nginx
前置条件:安装 docker。
注意:这一部分尚未验证,建议询问 AI 来确定如何安装验证。
1. 安装 docker-compose
bash
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose # 增加执行权限
2. 验证 docker-compose
bash
docker-compose -v
# 输出当前 docker-compose 版本
3. 编写 docker-compose.yml
yaml
# docker-compose.yml
version: '3.8'
services:
# MySQL 服务
mysql:
image: mysql:latest
container_name: dc-mysql # 设置容器名
environment:
MYSQL_ROOT_PASSWORD: "123456" # 设置 root 密码
MYSQL_DATABASE: "myapp_db" # 初始化数据库
volumes:
- ./data/mysql:/var/lib/mysql # 持久化数据
ports:
- "3306:3306" # 主机端口映射到容器端口
networks:
- my_network # 自定义网络,确保容器间通过服务名(如 mysql、redis)互通
restart: always # 崩溃后自动重启
# Redis 服务
redis:
image: redis:latest
container_name: redis
command: redis-server --appendonly yes # 启用持久化
volumes:
- ./data/redis:/data # 持久化数据
ports:
- "6379:6379" # 主机端口映射到容器端口
networks:
- my_network # 自定义网络,确保容器间通过服务名(如 mysql、redis)互通
restart: always
# Nginx 服务
nginx:
image: nginx:latest
container_name: nginx
ports:
- "80:80" # 主机 http 端口映射到容器端口
- "443:443" # 主机 https 端口映射到容器端口
volumes:
- ./data/nginx/conf:/etc/nginx/conf.d # 挂载自定义配置
- ./data/nginx/html:/usr/share/nginx/html # 挂载静态文件
networks:
- my_network # 自定义网络,确保容器间通过服务名(如 mysql、redis)互通
restart: always
# 自定义网络(确保容器间互通)
networks:
my_network:
driver: bridge
4. 启动服务
bash
docker-compose up -d # `-d` 表示后台运行。首次运行会自动拉取镜像并创建容器。
5. 检查服务状态
检查容器状态:docker-compose ps
。输出应显示三个服务均为 Up 状态。根据 三 3. 验证 Redis
、四 3. 验证 Mysql
、五 3. 验证 Nginx
分别验证三个服务是否可访问。
结语
如果你是初学者,想学习 Docker 知识,了解 Docker 的部署过程,可根据一到四章节逐步学习。
如果你是开发者,想快速部署你的应用服务,可在你的服务器集成 docker-compose
,在你的项目内定义好 docker-compose.yml
,一键部署项目到你的服务器上。