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

5.9 KiB
Raw Blame History

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命令输sudosudo usermod -aG docker $USER # 生效组配置(需重新登录或执行以下命令)newgrp docker # 验证免sudo执行docker --versiondocker 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 cpolarsudo 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+httpscpolar http 80

执行后终端会输出类似以下内容,复制https://xxx.cpolar.io即可公网访问Docker的Nginx服务:

Forwarding  http://xxx.cpolar.io -> http://localhost:80Forwarding  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的MySQL3306端口)cpolar tcp 3306