阿里云镜像地址获取,并安装 docker的mysql和nginx等服务,java,python,ffmpeg,go等环境

阿里云那个镜像地址获取

阿里云镜像加速器不是一个通用的 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 的时候,一般需要:

  1. 把宿主机的前端项目文件夹映射到容器的 /usr/share/nginx/html(这样才能访问你自己的前端项目);

  2. 把宿主机的 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"


要不要我帮你写一套命令,直接一步到位:

  1. 检查系统有没有装 java-21

  2. 如果没有就安装

  3. 自动切换到 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.10pip3.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

  1. 下载适合 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 源。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/96125.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/96125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

conda环境导出

1. 激活你想要打包的环境首先&#xff0c;确保你激活了你要打包的 conda 环境&#xff1a;conda activate qwen2. 导出环境配置使用 conda 命令将当前环境的配置导出为一个 .yml 文件&#xff0c;记录下环境中所有的依赖和版本&#xff1a;conda list --export > techgpt_en…

openEuler2403安装部署Kafka

文章目录 openEuler2403安装部署Kafka with KRaft一、前言1.简介2.架构3.环境 二、正文1.部署服务器2.基础环境1&#xff09;JDK 安装部署2&#xff09;关闭防火墙 3.单机部署1&#xff09;下载软件包2&#xff09;修改配置文件3&#xff09;格式化存储目录4&#xff09;单机启…

发布工业智能体,云从科技打造制造业AI“运营大脑”

近日&#xff0c;在2025世界智能产业博览会重庆市工业智能体首发仪式现场&#xff0c;云从科技重磅发布经营决策-产线运营智能体&#xff0c;为制造业的智能化转型提供了全新的解决方案。该智能体的亮相&#xff0c;不仅代表着人工智能技术在工业领域的深度应用&#xff0c;更标…

【Linux基础】parted命令详解:从入门到精通的磁盘分区管理完全指南

目录 前言 1 parted命令概述 1.1 什么是parted 1.2 parted与fdisk的对比 1.3 parted的主要优势 2 parted命令的安装与基本语法 2.1 在不同Linux发行版中安装parted 2.2 parted的基本语法 2.3 parted的工作模式 3 parted交互式命令详解 3.1 交互式操作流程 3.2 主要…

如何在路由器上配置DHCP服务器?

在路由器上配置DHCP服务器的步骤因品牌&#xff08;如TP-Link、华为、小米、华硕等&#xff09;略有差异&#xff0c;但核心流程一致&#xff0c;主要包括登录管理界面、开启DHCP功能、设置IP地址池及相关参数。以下是通用操作指南&#xff1a; 一、准备工作 确保电脑/手机已连…

HTML和CSS学习

HTML学习 注释 <!-- -->组成 告诉浏览器我是html文件<!DOCTYPE html> <title>浏览器标签</title> <body> <!--- 其中是主要内容 ---> <p> 段落 </p> </body> </html> (结束点…

OpenTenBase vs MySQL vs Oracle,企业级应用数据库实盘对比分析

摘要 因为工作久了的缘故&#xff0c;接触过不少数据库。公司的管理系统用的MySQL&#xff0c;财务系统用的Oracle。随着时代发展&#xff0c;国产开源数据库已经在性能上能与这些国际知名顶尖数据库品牌相媲美&#xff0c;其中OpenTenBase以其开放环境和优越性能脱颖而出&…

Oracle 备份与恢复常见的七大问题

为了最大限度保障数据的安全性&#xff0c;同时能在不可预计灾难的情况下保证数据的快速恢复&#xff0c;需要根据数据的类型和重要程度制定相应的备份和恢复方案。在这个过程中&#xff0c;DBA的职责就是要保证数据库&#xff08;其它数据由其它岗位负责&#xff09;的高可用和…

StringBuilder类的数据结构和扩容方式解读

目录 StringBuilder是什么 核心特性&#xff1a; StringBuilder数据结构 1. 核心存储结构&#xff08;基于父类 AbstractStringBuilder&#xff09; 2. 类定义与继承关系 3. 数据结构的核心特点 StringBuilder数据结构的初始化方式 1. 无参构造&#xff1a;默认初始容量…

LangChain实战(十七):构建与PDF/PPT文档对话的AI助手

本文是《LangChain实战课》系列的第十七篇,将专篇深入讲解如何构建能够与PDF和PPT文档进行智能对话的AI助手。通过学习本文,您将掌握复杂格式文档的解析技巧、文本与表格处理技术,以及实现精准问答的系统方法。 前言 在日常工作和学习中,PDF和PPT文档是我们最常接触的文档…

鱼眼相机模型

鱼眼相机模型 最近涉及鱼眼相机模型、标定使用等&#xff0c;作为记录&#xff0c;更新很久不曾更新的博客。 文章目录鱼眼相机模型1 相机成像2 鱼眼模型3 畸变3.1 适用针孔和MEI3.2 Kannala-Brandt鱼眼模型4 代码实现1 相机成像 针孔相机&#xff1a;所有光线从一个孔&#xf…

大语言模型提示词工程详尽实战指南

引言&#xff1a;与大型语言模型&#xff08;LLM&#xff09;高效对话的艺术大型语言模型&#xff08;LLM&#xff09;——例如我们熟知的GPT系列、Claude、Llama等——在自然语言处理&#xff08;NLP&#xff09;领域展现了惊人的能力&#xff0c;能够执行文本摘要、翻译、代码…

HTTP 请求体格式详解

1. 概览与概念 Content-Type&#xff1a;HTTP 请求/响应头&#xff0c;表示消息体的媒体类型&#xff08;MIME type&#xff09;。服务端用它决定如何解析请求体。常见场景&#xff1a; 纯结构化数据&#xff08;JSON&#xff09; → application/json表单 文件上传 → multip…

事务设置和消息分发

事务 RabbitMQ是基于AMQP协议实现的&#xff0c;该协议实现了事务机制&#xff0c;因此RabbitMQ也支持事务机制. SpringAMQP也提供了对事务相关的操作&#xff0c;RabbitMQ事务允许开发者确保消息的发送和接收是原子性的&#xff0c;要么 全部成功&#xff0c;要么全部失败.| 前…

Python 中 try / except / else / finally 异常处理详解

1. 基本结构 try:# 可能会抛出异常的代码 except SomeException as e:# 捕获并处理异常 else:# 如果 try 中代码没有异常&#xff0c;就执行这里 finally:# 无论是否发生异常&#xff0c;最后都会执行这里2. 各部分的作用 try 用途&#xff1a;包含可能发生异常的代码段。如果代…

冰火岛 Tech 传:Apple Foundation Models 心法解密(下集)

引子 上集说到冰火岛冰屋内,谢逊、张翠山、殷素素三人亲见 “指令(Instructions)” 如何让 AI 脱胎换骨,从木讷报地名的 “愣头青”,变身为文采斐然的 “旅行作家”。 正当素素惊叹这 AI 武学的奇妙时,谢逊却突然神色一凛,指着手腕上用冰屑刻的 “4096” 字样道:“这等…

Qt信号与槽机制全面解析

✨ 1. 核心概念信号与槽是Qt独创的一种对象间通信机制&#xff0c;它使得一个对象的状态变化或事件发生能够自动通知其他对象作出响应&#xff0c;从而实现高度解耦的代码设计。1.1 信号&#xff08;Signals&#xff09;定义&#xff1a;信号是由对象在特定事件发生时发出&…

2025年COR SCI2区,基于近似细胞分解的能源高效无人机路径规划问题用于地质灾害监测,深度解析+性能实测

目录1.摘要2.问题描述与数学模型3.能源网格混合元启发式算法4.结果展示5.参考文献6.代码获取7.算法辅导应用定制读者交流1.摘要 本文提出了一种能源高效的无人机路径规划方法&#xff08;EURP&#xff09;用于监测分散的地质灾害易发区域&#xff0c;通过建立无人机飞行模式的…

LangChain关于提示词的几种写法

上文中 <---->(可点击移步查阅),我们已经了解到LangChain如何编写调用大模型的一个基本框架, 在编写完这个基本框架后,就要与大模型进行交互了,这时候,就需要我们编写提示词了, 那么以下,就会介绍提示词的几种编写方式 1 可携带变量的提示词 1.1 PromptTempla…

CyberPoC 是一个现代化的网络安全练习和竞赛平台,支持容器化部署的安全挑战,为用户提供实践网络安全技能的环境。

工具介绍 CyberPoC 是一个现代化的网络安全练习和竞赛平台&#xff0c;支持容器化部署的安全挑战&#xff0c;为用户提供实践网络安全技能的环境。 &#x1f680; 快速开始 使用 Docker Compose (推荐) 克隆项目 git clone https://github.com/dushixiang/cyberpoc.gitcd cy…