Files
StudyDiary/10-WebClipper/Ubuntu系统下安装Docker并结合cpolar实现内网穿透 - gosamuel - 博客园.md
T
2026-07-23 20:36:13 +08:00

141 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Ubuntu系统下安装Docker并结合cpolar实现内网穿透的完整步骤,涵盖环境准备、软件安装、配置验证等全流程,适配Ubuntu 18.04/20.04/22.04等主流版本。
### 一、前置准备:更新系统并安装依赖
首先确保系统包索引最新,并安装Docker和cpolar所需的基础依赖:
```null
# 更新系统包sudo apt update && sudo apt upgrade -y # 安装Docker依赖的工具sudo apt install -y apt-transport-https ca-certificates curl software-properties-common # 安装cpolar依赖的工具(如必要)sudo apt install -y wget gnupg2
```
### 二、安装Docker(官方推荐方式)
#### 1\. 添加Docker官方GPG密钥
```null
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
```
#### 2\. 添加Docker官方软件源
```null
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```
#### 3\. 安装Docker Engine
```null
# 更新包索引(加载新添加的Docker源)sudo apt update # 安装Docker核心组件sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```
#### 4\. 验证Docker安装并配置免sudo(可选)
```null
# 验证Docker是否运行sudo systemctl status docker # 设为开机自启sudo systemctl enable docker # 添加当前用户到docker组(避免每次执行docker命令输sudosudo usermod -aG docker $USER # 生效组配置(需重新登录或执行以下命令)newgrp docker # 验证免sudo执行docker --versiondocker run hello-world # 运行测试容器,成功则安装完成
```
### 三、安装cpolar内网穿透工具
cpolar支持一键安装脚本,也可手动安装,以下是官方一键安装方式:
#### 1\. 下载并安装cpolar
```null
# 下载cpolar安装脚本并执行curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
```
#### 2\. 验证cpolar安装
```null
# 查看cpolar版本cpolar version # 启动cpolar服务并设为开机自启sudo systemctl enable cpolarsudo systemctl start cpolar # 验证cpolar服务状态sudo systemctl status cpolar
```
#### 3\. 配置cpolar认证(必须)
cpolar需要账号认证才能使用,步骤如下:
1. 访问cpolar官网注册账号:[https://www.cpolar.com/](https://www.cpolar.com/)
2. 登录后在「仪表盘」→「验证」页面复制你的「认证令牌」
3. 在Ubuntu终端执行以下命令配置令牌:
```null
# 替换为你的实际令牌cpolar authtoken <你的cpolar认证令牌> # 重启cpolar服务使配置生效sudo systemctl restart cpolar
```
### 四、使用cpolar穿透Docker服务(示例)
以穿透Docker中运行的Web服务(如Nginx,端口80)为例,演示内网穿透配置:
#### 1\. 先启动一个Docker Web容器(测试用)
```null
# 拉取Nginx镜像并运行,映射主机80端口docker run -d --name test-nginx -p 80:80 nginx
```
#### 2\. 配置cpolar穿透规则
cpolar支持临时穿透(会话结束失效)和持久穿透(需配置文件),以下是两种方式:
##### 方式1:临时穿透(快速测试)
```null
# 穿透本地80端口,生成临时公网地址(http+httpscpolar http 80
```
执行后终端会输出类似以下内容,复制`https://xxx.cpolar.io`即可公网访问Docker的Nginx服务:
```null
Forwarding http://xxx.cpolar.io -> http://localhost:80Forwarding https://xxx.cpolar.io -> http://localhost:80
```
##### 方式2:持久穿透(配置文件)
临时穿透关闭终端后失效,通过配置文件可实现持久化:
```null
# 编辑cpolar配置文件sudo nano /usr/local/etc/cpolar/cpolar.yml
```
在配置文件中添加自定义穿透规则(示例:穿透80端口,名称为docker-nginx):
```null
authtoken: <你的cpolar认证令牌> # 已配置可忽略tunnels: docker-nginx: proto: http addr: 80 region: cn_vip # 可选:cn_vip(国内)、us(美国)、hk(香港)
```
保存并退出(Ctrl+O → 回车 → Ctrl+X),重启cpolar
```null
sudo systemctl restart cpolar
```
#### 3\. 查看穿透地址
访问cpolar仪表盘([https://dashboard.cpolar.com/),在「隧道管理」→「在线隧道」中可查看你的持久化公网地址,无需保持终端开启。](https://dashboard.cpolar.com/%EF%BC%89%EF%BC%8C%E5%9C%A8%E3%80%8C%E9%9A%A7%E9%81%93%E7%AE%A1%E7%90%86%E3%80%8D%E2%86%92%E3%80%8C%E5%9C%A8%E7%BA%BF%E9%9A%A7%E9%81%93%E3%80%8D%E4%B8%AD%E5%8F%AF%E6%9F%A5%E7%9C%8B%E4%BD%A0%E7%9A%84%E6%8C%81%E4%B9%85%E5%8C%96%E5%85%AC%E7%BD%91%E5%9C%B0%E5%9D%80%EF%BC%8C%E6%97%A0%E9%9C%80%E4%BF%9D%E6%8C%81%E7%BB%88%E7%AB%AF%E5%BC%80%E5%90%AF%E3%80%82)
### 五、常见问题解决
1. **Docker启动失败**
* 检查是否有其他服务占用Docker端口:`sudo lsof -i :2375`
* 重启Docker服务:`sudo systemctl restart docker`
2. **cpolar穿透后无法访问**
* 检查Ubuntu防火墙是否放行端口:`sudo ufw allow 80`
* 验证本地服务是否正常:`curl http://localhost:80`
* 确认cpolar隧道配置的端口与Docker映射端口一致
3. **cpolar认证失败**
* 重新配置令牌:`cpolar authtoken <新令牌>`
* 检查网络是否能访问cpolar服务器:`ping api.cpolar.com`
### 六、总结
1. 完成Docker安装后,可通过`docker run`启动任意服务并映射端口;
2. cpolar通过简单命令或配置文件即可将本地Docker服务暴露到公网;
3. 持久化配置需修改`cpolar.yml`并重启服务,公网地址可在cpolar仪表盘查看。
如果需要穿透其他Docker服务(如MySQL、Redis),只需将cpolar的`addr`改为对应映射端口(如3306、6379),并将`proto`改为`tcp`(非HTTP服务需用TCP穿透),例如:
```null
# TCP穿透Docker的MySQL3306端口)cpolar tcp 3306
```