Ubuntu系统下安装Docker并结合cpolar实现内网穿透
Ubuntu系统下安装Docker并结合cpolar实现内网穿透的完整步骤,涵盖环境准备、软件安装、配置验证等全流程,适配Ubuntu 18.04/20.04/22.04等主流版本。
一、前置准备:更新系统并安装依赖
首先确保系统包索引最新,并安装Docker和cpolar所需的基础依赖:
# 更新系统包
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密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
2. 添加Docker官方软件源
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
# 更新包索引(加载新添加的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(可选)
# 验证Docker是否运行
sudo systemctl status docker
# 设为开机自启
sudo systemctl enable docker
# 添加当前用户到docker组(避免每次执行docker命令输sudo)
sudo usermod -aG docker $USER
# 生效组配置(需重新登录或执行以下命令)
newgrp docker
# 验证免sudo执行
docker --version
docker run hello-world # 运行测试容器,成功则安装完成
三、安装cpolar内网穿透工具
cpolar支持一键安装脚本,也可手动安装,以下是官方一键安装方式:
1. 下载并安装cpolar
# 下载cpolar安装脚本并执行
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
2. 验证cpolar安装
# 查看cpolar版本
cpolar version
# 启动cpolar服务并设为开机自启
sudo systemctl enable cpolar
sudo systemctl start cpolar
# 验证cpolar服务状态
sudo systemctl status cpolar
3. 配置cpolar认证(必须)
cpolar需要账号认证才能使用,步骤如下:
- 访问cpolar官网注册账号:https://www.cpolar.com/
- 登录后在「仪表盘」→「验证」页面复制你的「认证令牌」
- 在Ubuntu终端执行以下命令配置令牌:
# 替换为你的实际令牌
cpolar authtoken <你的cpolar认证令牌>
# 重启cpolar服务使配置生效
sudo systemctl restart cpolar
四、使用cpolar穿透Docker服务(示例)
以穿透Docker中运行的Web服务(如Nginx,端口80)为例,演示内网穿透配置:
1. 先启动一个Docker Web容器(测试用)
# 拉取Nginx镜像并运行,映射主机80端口
docker run -d --name test-nginx -p 80:80 nginx
2. 配置cpolar穿透规则
cpolar支持临时穿透(会话结束失效)和持久穿透(需配置文件),以下是两种方式:
方式1:临时穿透(快速测试)
# 穿透本地80端口,生成临时公网地址(http+https)
cpolar http 80
执行后终端会输出类似以下内容,复制https://xxx.cpolar.io即可公网访问Docker的Nginx服务:
Forwarding http://xxx.cpolar.io -> http://localhost:80
Forwarding https://xxx.cpolar.io -> http://localhost:80
方式2:持久穿透(配置文件)
临时穿透关闭终端后失效,通过配置文件可实现持久化:
# 编辑cpolar配置文件
sudo nano /usr/local/etc/cpolar/cpolar.yml
在配置文件中添加自定义穿透规则(示例:穿透80端口,名称为docker-nginx):
authtoken: <你的cpolar认证令牌> # 已配置可忽略
tunnels:
docker-nginx:
proto: http
addr: 80
region: cn_vip # 可选:cn_vip(国内)、us(美国)、hk(香港)
保存并退出(Ctrl+O → 回车 → Ctrl+X),重启cpolar:
sudo systemctl restart cpolar
3. 查看穿透地址
访问cpolar仪表盘(https://dashboard.cpolar.com/),在「隧道管理」→「在线隧道」中可查看你的持久化公网地址,无需保持终端开启。
五、常见问题解决
-
Docker启动失败:
- 检查是否有其他服务占用Docker端口:
sudo lsof -i :2375 - 重启Docker服务:
sudo systemctl restart docker
- 检查是否有其他服务占用Docker端口:
-
cpolar穿透后无法访问:
- 检查Ubuntu防火墙是否放行端口:
sudo ufw allow 80 - 验证本地服务是否正常:
curl http://localhost:80 - 确认cpolar隧道配置的端口与Docker映射端口一致
- 检查Ubuntu防火墙是否放行端口:
-
cpolar认证失败:
- 重新配置令牌:
cpolar authtoken <新令牌> - 检查网络是否能访问cpolar服务器:
ping api.cpolar.com
- 重新配置令牌:
六、总结
- 完成Docker安装后,可通过
docker run启动任意服务并映射端口; - cpolar通过简单命令或配置文件即可将本地Docker服务暴露到公网;
- 持久化配置需修改
cpolar.yml并重启服务,公网地址可在cpolar仪表盘查看。
如果需要穿透其他Docker服务(如MySQL、Redis),只需将cpolar的addr改为对应映射端口(如3306、6379),并将proto改为tcp(非HTTP服务需用TCP穿透),例如:
# TCP穿透Docker的MySQL(3306端口)
cpolar tcp 3306
本文来自博客园,作者:gosamuel,转载请注明原文链接:https://www.cnblogs.com/woloveai/articles/19348283

浙公网安备 33010602011771号