阿里云那個鏡像地址獲取
阿里云鏡像加速器不是一個通用的 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 源。