阿里云服务器通过 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,一键部署项目到你的服务器上。

相关推荐
所念皆为东辞15 分钟前
gitlab+jenkins的ci/cd部署
运维·ci/cd·gitlab·jenkins
AIZHINAN22 分钟前
性能测试篇 :Jmeter监控服务器性能
运维·服务器·jmeter
快快网络-三七27 分钟前
第二篇:Linux 文件系统操作:从基础到进阶
linux·运维·服务器·centos·快快网络
Doris_LMS29 分钟前
Linux的访问权限(保姆级别)
linux·运维·服务器·面试
dessler1 小时前
RabbitMQ-镜像队列(Mirrored Queues)
linux·运维·rabbitmq
发抖吧小喵喵1 小时前
rpm包直接安装新系统缺少依赖问题处理
linux·运维·服务器
Asuicao2 小时前
最新docker国内镜像源地址大全
运维·docker·容器
xhdll2 小时前
embodied复现所需docker环境配置粗略流程
运维·docker·容器
Nazi62 小时前
dockerfile基础
linux·运维·docker·容器·云计算