首页 AI前沿 Web开发 机器学习 深度学习 Go编程 Python编程 网络技术 区块链 时间序列 闲情逸致 我的网站

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需要账号认证才能使用,步骤如下:

  1. 访问cpolar官网注册账号:https://www.cpolar.com/
  2. 登录后在「仪表盘」→「验证」页面复制你的「认证令牌」
  3. 在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/),在「隧道管理」→「在线隧道」中可查看你的持久化公网地址,无需保持终端开启。

五、常见问题解决

  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穿透),例如:

# TCP穿透Docker的MySQL(3306端口)
cpolar tcp 3306
posted @ 2025-12-14 11:20  gosamuel  阅读(10)  评论(0)    收藏  举报
© 2025 Woloveai | 版权所有 如有侵权,请联系删除。