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 ```