141 lines
5.9 KiB
Markdown
141 lines
5.9 KiB
Markdown
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命令输sudo)sudo 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+https)cpolar 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的MySQL(3306端口)cpolar tcp 3306
|
||
``` |