阿里云那个镜像地址获取
阿里云镜像加速器不是一个通用的 registry.cn-hangzhou.aliyuncs.com
,而是你账号专属的,比如这样:
https://abcd1234.mirror.aliyuncs.com
👉 登录阿里云控制台获取:
阿里云镜像加速器
然后替换 /etc/docker/daemon.json
里面的地址:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://<你的专属ID>.mirror.aliyuncs.com"]
}
EOFsudo systemctl daemon-reload
sudo systemctl restart docker
mysql
数据持久化(推荐)
这样容器删除后,数据还在:
docker run -d \--name mysql8 \-p 3310:3306 \-e MYSQL_ROOT_PASSWORD=root \-v /mydata/mysql8:/var/lib/mysql \mysql:8.0
这里
/mydata/mysql8
是宿主机目录,用来保存 MySQL 数据文件。
要不要我顺便帮你写一个 docker-compose.yml,这样以后你只要 docker-compose up -d
就能快速启动?
nginx
👌 对,你理解的没错。
用 Docker 跑 Nginx 的时候,一般需要:
-
把宿主机的前端项目文件夹映射到容器的
/usr/share/nginx/html
(这样才能访问你自己的前端项目); -
把宿主机的 Nginx 配置文件挂载到容器的
/etc/nginx/conf.d
(这样可以修改 Nginx 配置,不用进容器)。
我给你一个完整的安装步骤:
1. 先拉取 nginx 镜像
docker pull nginx:latest
2. 在 Linux 上创建目录
假设你前端项目代码放在 /mydata/frontend
,Nginx 配置放在 /mydata/nginx/conf
:
mkdir -p /mydata/frontend
mkdir -p /mydata/nginx/conf
3. 准备一个默认配置文件
创建 /mydata/nginx/conf/default.conf
:
touch /mydata/nginx/conf/default.conf
只写server的内容就行
server {listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}
}
4. 启动 Nginx 容器
把端口、项目文件夹、配置文件都映射出来:
docker run -d \--name nginx \-p 8080:80 \-v /mydata/frontend:/usr/share/nginx/html \-v /mydata/nginx/conf:/etc/nginx/conf.d \nginx:latest
5. 验证是否成功
-
浏览器访问:
http://你的服务器IP:8080
-
如果看到你放在
/mydata/frontend/index.html
的页面,就说明成功了。 -
修改
/mydata/nginx/conf/default.conf
后,只需要重启容器:
docker restart nginx
修改配置
验证配置是否正确
docker exec -it nginx nginx -t
修改配置并重新加载
vi /mydata/nginx/conf/default.conf
docker exec -it nginx nginx -s reload
✅ 总结:
-
/mydata/frontend
→ 存放前端项目(宿主机和容器共享)。 -
/mydata/nginx/conf
→ 存放配置文件。 -
Nginx 在容器里会用你宿主机的配置和静态文件。
要不要我帮你直接写一个 docker-compose.yml?这样你就只需要 docker-compose up -d
就能跑起来,不用记长命令。
redis
👌 好的,很简单,我给你一个最小化的 Redis Docker 启动命令,不用密码,端口映射到 6389:
命令启动方式
docker run -d \--name redis6389 \-p 6389:6379 \redis:latest \redis-server --appendonly yes --requirepass ""
说明
-
--name redis6389
:容器名字叫 redis6389 -
-p 6389:6379
:宿主机的 6389 → 容器里的 6379(Redis 默认端口) -
redis:latest
:拉取最新版 Redis -
redis-server --appendonly yes
:开启持久化(避免宕机数据丢失) -
--requirepass ""
:不设置密码(空字符串 = 无密码)
进入 Redis
docker exec -it redis6389 redis-cli -p 6379
或者直接从宿主机连接:
redis-cli -h 127.0.0.1 -p 6389
持久化(推荐)
如果你想让数据保存在宿主机,比如放在 /mydata/redis
目录:
docker run -d \--name redis6389 \-p 6389:6379 \-v /mydata/redis:/data \redis:latest \redis-server --appendonly yes --requirepass ""
要不要我给你顺手写个 docker-compose.yml,这样以后你一条命令就能启动 Redis(端口 6389,无密码,带持久化)?
Java环境
Yum 安装(可能是 OpenJDK 21)
先检查仓库里是否有 JDK 21:
yum search java-21
如果能找到(例如 java-21-openjdk
),直接安装:
sudo yum install -y java-21-openjdk java-21-openjdk-devel
验证:
java -version
嗯,我懂了 👍
你之前确实执行过安装 JDK 21 的命令,但现在运行 java -version
看到的还是 Java 11,说明系统上 可能已经安装了 Java 21,但默认版本还没切换过去。
在 CentOS / RHEL 系统里,默认的 Java 版本由 alternatives
控制。
你可以用下面的命令查看和切换:
# 查看系统已安装的 Java 版本
alternatives --display java# 或者交互式选择版本
alternatives --config java
执行 alternatives --config java
后,你会看到类似这样的列表:
There are 2 programs which provide 'java'.Selection Command
-----------------------------------------------
*+ 1 /usr/lib/jvm/java-11-openjdk-11.0.25/bin/java2 /usr/lib/jvm/java-21-openjdk-21.0.2/bin/javaEnter to keep the current selection[+], or type selection number:
👉 你只需要输入 2
(对应 java-21)回车,就能切换到 Java 21。
然后再验证:
java -version
就应该显示 openjdk version "21.0.x"。
要不要我帮你写一套命令,直接一步到位:
-
检查系统有没有装 java-21
-
如果没有就安装
-
自动切换到 java-21 并验证
python环境
明白了 😅,你当前的 Alibaba Cloud Linux 系统 不支持 DNF 模块管理,所以 dnf module list python
返回为空。这种情况下,系统仓库里没有 Python 3.10 包,只能用 源码编译安装。
下面我给你一个 完整一键安装 Python 3.10 的方案(源码安装 + 配置环境变量 + pip):
一键安装 Python 3.10(源码)
# 1. 安装依赖
sudo yum groupinstall -y "Development Tools"
sudo yum install -y gcc gcc-c++ make bzip2 bzip2-devel zlib-devel xz-devel libffi-devel wget# 2. 下载 Python 3.10.15 源码
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.10.15/Python-3.10.15.tgz
sudo tar xzf Python-3.10.15.tgz
cd Python-3.10.15# 3. 编译安装到 /usr/local/python3.10
sudo ./configure --enable-optimizations --prefix=/usr/local/python3.10
sudo make -j$(nproc)
sudo make altinstall # 注意:使用 altinstall 避免覆盖系统 python# 4. 配置环境变量
sudo tee /etc/profile.d/python3.10.sh <<'EOF'
export PATH=/usr/local/python3.10/bin:$PATH
EOF
source /etc/profile.d/python3.10.sh# 5. 验证
python3.10 --version
pip3.10 --version
说明
-
make altinstall
:避免覆盖系统默认 Python(防止破坏系统工具) -
安装路径
/usr/local/python3.10
:独立版本,不影响系统自带 Python -
pip 会随 Python 一起安装
-
使用
source /etc/profile.d/python3.10.sh
刷新环境变量
如果你需要,我可以帮你写一个 脚本版,直接一条命令执行完所有步骤,安装完成后可以直接使用 python3.10
和 pip3.10
。
你希望我写吗?
python安装依赖-节约内存写法
python3.10 -m pip install --no-cache-dir -r requirements.txt
ffmpeg安装
明白了,你现在的系统是 阿里云定制的 Linux 8(alinux3),阿里云 EPEL 源里并没有 ffmpeg
包,所以 yum install ffmpeg
找不到。官方 EPEL 也冲突,直接安装失败。
有两种解决方案:
方案 1:使用 RPM 包直接安装 ffmpeg
-
下载适合 CentOS 8 / RHEL 8 的 ffmpeg 静态包:
cd /tmp
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
tar -xvf ffmpeg-release-amd64-static.tar.xz
sudo cp ffmpeg-*/ffmpeg ffmpeg-*/ffprobe /usr/local/bin/
sudo chmod +x /usr/local/bin/ffmpeg /usr/local/bin/ffprobe
ffmpeg -version
这样可以快速安装,不用管 yum 源。