阿里云服务器通过 docker CE 安装 Redis+Mysql+Nginx

阿里云服务器通过 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. 登录阿里云控制台

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 统一安装 RedidMysqlNginx

前置条件:安装 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,一键部署项目到你的服务器上。

相关推荐
七夜zippoe6 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy6487 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满8 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠8 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey9038 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技9 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀9 小时前
Linux环境变量
linux·运维·服务器
zzzsde9 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º11 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
NPE~11 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化