Docker 在 macOS 下的安装与 Gitea 部署经验总结

Docker 在 macOS 下的安装与 Gitea 部署经验总结

我在 macOS 上成功安装并运行了 Docker,并使用 Docker 搭建了 Gitea 作为 Git 代码管理服务器。以下是你的完整安装与调试过程,包括遇到的问题和解决方案。


1. Docker 安装

你首先尝试在 macOS 上安装 Docker,并使用 Homebrew 进行安装:

sh 复制代码
brew install --cask docker

然后启动 Docker Desktop:

sh 复制代码
open -a Docker

但在运行 docker info 时,遇到了 Cannot connect to the Docker daemon 错误,表明 Docker 守护进程 (dockerd) 没有运行。你解决问题的方法:

sh 复制代码
docker system prune -a
open -a Docker

2. Gitea 运行

你尝试运行 Gitea 容器:

sh 复制代码
docker run -d --name gitea -p 8888:3000 -p 22:22 -v /data/gitea:/data --restart always gitea/gitea:latest

但出现 文件共享错误:

vbnet 复制代码
mounts denied: The path /data/gitea is not shared from the host.

你尝试创建 /data/gitea 目录:

sh 复制代码
sudo mkdir -p /data/gitea
chmod 777 /data/gitea

但 /data 在 macOS 上是 只读文件系统 ,导致 mkdir: /data: Read-only file system 失败。


3. 解决 Docker 文件共享问题

你决定使用 $HOME/data 而不是 /data:

sh 复制代码
mkdir -p ~/data/gitea
chmod 777 ~/data/gitea

然后调整 Docker 命令:

sh 复制代码
docker run -d --name gitea -p 8888:3000 -p 22:22 -v ~/data/gitea:/data --restart always gitea/gitea:latest

但仍然遇到 端口冲突问题:

perl 复制代码
ports are not available: exposing port TCP 0.0.0.0:22 -> 127.0.0.1:0: listen tcp 0.0.0.0:22: bind: address already in use

这表明 本机的 SSH 服务器占用了 22 端口。


4. 修改 Gitea 容器的 SSH 端口

你决定修改 SSH 端口,避免冲突:

sh 复制代码
docker run -d --name gitea -p 8888:3000 -p 2222:22 -v ~/data/gitea:/data --restart always gitea/gitea:latest

最终,你成功启动了 Gitea,容器 ID:

复制代码
4fe5773cc7377a339c3558c29a51742b1e5da9744a9c7d37de11e9766c336da9

5. 访问 Gitea

现在,你可以在浏览器中访问:

arduino 复制代码
http://localhost:8888

并通过 SSH 进行 Git 操作:

sh 复制代码
git remote add origin ssh://git@localhost:2222/my-repo.git
git push origin main

总结

在 macOS 下运行 Docker 并部署 Gitea,你遇到了 文件共享问题、端口冲突、已有容器占用 等问题,并成功解决: ✅ 使用 $HOME/data 目录替代 /data

✅ 修改 SSH 端口避免与 macOS 的 22 端口冲突

✅ 清理和管理已有 Docker 容器

你的最终成功指令:

sh 复制代码
mkdir -p ~/data/gitea
chmod 777 ~/data/gitea
docker run -d --name gitea -p 8888:3000 -p 2222:22 -v ~/data/gitea:/data --restart always gitea/gitea:latest

这样,你的 macOS 上已经成功运行 Gitea 作为代码管理服务器!🚀 你打算如何利用它?主要是 MCP 相关项目吗?还是用来管理 Node.js 工程?

相关推荐
打工仔折腾 AI37 分钟前
把AI Agent托管在家用电脑:UU远程终端与端口映射实测记录
人工智能·后端·python·langchain·ai agent 实战
vx_Biye_Design1 小时前
springboot高校选课系统82776-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express
打工仔折腾 AI3 小时前
LLaMA 1 到 LLaMA 3 架构演进拆解:从 RoPE、GQA 到词表扩张
人工智能·后端·python·深度学习·langchain·llama
可乐鸡翅yeah_3 小时前
HLS 分片过期清理,直播旧 TS 分片磁盘爆满问题处理
java·后端·spring·m3u8·m3u8在线·音视频在线播放
张彦峰ZYF3 小时前
加了锁不等于扛得住争用:synchronized、显式锁与 CAS 的语义分层、争用代价账本与选型判据
后端·同步设施·内置锁的四种状态与单向升级·可重入的由来与四条硬边界·显式锁的状态字段与等待队列·读写锁与邮戳锁·一次同步的开销账本
专业程序开发源4 小时前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计
Gopher_HBo4 小时前
zap采样器与性能优化内幕
后端
变量探索SEQVEC4 小时前
我埋了 8 个假文件,看谁会上钩:12 天 502 次扫描实录
后端
llqbzllll4 小时前
HashMap 的核心结构:从一次 put 看到扩容、桶迁移与树化边界
后端