当前位置: 首页 > article >正文

Ubuntu一键部署Docker与可视化面板Portainer实战

1. 为什么选择Docker与Portainer如果你是一名开发者或者运维人员肯定对Docker不陌生。简单来说Docker就像是一个魔法箱子可以把你的应用和它需要的所有东西打包在一起这样在任何地方运行都不会出问题。而Portainer就是这个魔法箱子的遥控器让你不用记住复杂的命令点点鼠标就能管理所有容器。我在刚接触Docker的时候最头疼的就是要记住各种命令参数。后来发现了Portainer这个神器简直就像发现了新大陆。它提供了一个清爽的网页界面所有操作一目了然。创建容器、查看日志、监控资源占用这些原本需要敲命令的操作现在点几下就能完成。2. 准备工作配置Ubuntu环境2.1 清理旧版本Docker在开始之前我们需要确保系统是干净的。Ubuntu自带的软件仓库里可能有旧版Docker这些版本不仅功能落后还可能和新版本冲突。我遇到过好几次因为旧版本残留导致安装失败的情况。打开终端依次执行以下命令sudo apt-get remove docker docker-engine docker-ce docker.io这个命令会把系统里可能存在的各种Docker相关包都清理掉。记得要加上sudo因为修改系统软件需要管理员权限。2.2 更新软件源接下来我们要确保软件源是最新的sudo apt-get update这个步骤很重要但经常被忽略。有次我给客户部署环境时跳过了这步结果安装的软件版本不对折腾了好久才发现问题。所以现在我养成了习惯每次安装新软件前都先更新软件源。2.3 安装必要依赖Docker需要通过HTTPS来获取软件包所以需要先安装一些基础工具sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common这些工具的作用分别是apt-transport-https让apt支持HTTPS协议ca-certificates管理CA证书curl用来下载文件software-properties-common管理软件源3. 安装Docker引擎3.1 添加Docker官方GPG密钥为了保证下载的软件包是正版且未被篡改我们需要添加Docker的GPG密钥curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -这个命令做了两件事先用curl下载密钥然后通过管道传给apt-key命令添加到系统里。记得检查命令执行后输出OK表示密钥添加成功。3.2 设置稳定版仓库现在告诉系统从哪里获取Dockersudo add-apt-repository deb [archamd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable这里有个小技巧$(lsb_release -cs)会自动获取当前系统的Ubuntu版本代号比如focal或jammy这样就能确保下载对应版本的Docker。3.3 安装Docker CE再次更新软件源后就可以安装Docker了sudo apt-get update sudo apt-get install -y docker-ce安装完成后Docker服务会自动启动。我建议这时候重启一下系统确保所有配置都生效。4. 验证Docker安装4.1 检查Docker服务状态想知道Docker是否正常运行用这个命令systemctl status docker如果看到active (running)就说明服务已经起来了。如果没有可以用sudo systemctl start docker手动启动。4.2 运行测试容器让我们跑个经典的小例子sudo docker run hello-world这个命令会下载一个测试镜像并运行。如果看到Hello from Docker!的欢迎信息恭喜你Docker安装成功了有时候可能会遇到网络问题导致下载失败提示TLS handshake timeout。别担心这通常是网络波动导致的多试几次就好。5. 配置国内镜像加速5.1 获取镜像加速地址在国内直接连Docker官方源可能会很慢。我们可以使用国内镜像加速服务比如阿里云的容器镜像服务。首先登录阿里云容器镜像服务控制台找到镜像加速器页面复制给你的专属加速地址。不同地区有不同的地址选择离你最近的。5.2 配置Docker使用镜像加速创建或修改/etc/docker/daemon.json文件sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [你的加速地址] } EOF然后重启Docker服务使配置生效sudo systemctl daemon-reload sudo systemctl restart docker配置完成后拉取镜像的速度会有明显提升。我实测下来原本需要几分钟才能拉取的镜像现在几十秒就能搞定。6. 部署Portainer可视化面板6.1 拉取Portainer镜像Portainer提供了官方镜像我们可以直接用Docker运行docker run -d -p 9000:9000 --restartalways \ -v /var/run/docker.sock:/var/run/docker.sock \ --name portainer portainer/portainer这个命令做了以下几件事-d让容器在后台运行-p 9000:9000把容器的9000端口映射到主机的9000端口--restartalways设置容器自动重启-v挂载Docker的Unix套接字这样Portainer才能管理Docker--name给容器起个名字6.2 访问Portainer界面在浏览器中输入http://你的服务器IP:9000就能看到Portainer的初始化界面了。第一次访问时需要设置管理员账号和密码。设置完成后就能看到清爽的管理界面了。在这里你可以查看所有运行中的容器快速创建新容器监控资源使用情况查看容器日志管理镜像和网络7. 进阶配置与使用技巧7.1 使用Docker免sudo默认情况下运行Docker命令需要sudo权限。为了方便使用我们可以把当前用户加入docker组sudo usermod -aG docker $USER然后退出重新登录或者执行newgrp docker使配置立即生效。这样以后就不用每次都输入sudo了。7.2 Portainer数据持久化默认情况下Portainer的数据是存在容器里的。如果容器被删除所有配置都会丢失。我们可以通过挂载卷来实现数据持久化docker run -d -p 9000:9000 --restartalways \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ --name portainer portainer/portainer这里新增的-v portainer_data:/data参数创建了一个名为portainer_data的卷用来持久化存储Portainer的数据。7.3 使用Nginx反向代理如果不想每次都记端口号可以用Nginx做个反向代理server { listen 80; server_name portainer.yourdomain.com; location / { proxy_pass http://localhost:9000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }这样就能通过http://portainer.yourdomain.com访问Portainer了看起来更专业也更容易记。8. 常见问题排查8.1 端口冲突问题如果9000端口已经被占用Portainer会启动失败。这时候可以换个端口比如docker run -d -p 9001:9000 --restartalways \ -v /var/run/docker.sock:/var/run/docker.sock \ --name portainer portainer/portainer这样就把Portainer映射到了9001端口。8.2 权限问题有时候会遇到权限不足的错误比如 Got permission denied while trying to connect to the Docker daemon socket这通常是因为当前用户不在docker组里。按照7.1节的步骤把用户加入docker组就能解决。8.3 镜像拉取失败如果拉取镜像时遇到网络问题可以尝试检查镜像加速配置是否正确临时关闭防火墙测试更换网络环境我在公司内网部署时就遇到过这个问题后来发现是公司防火墙拦截了Docker的流量。和网络管理员沟通后添加了例外规则就解决了。

相关文章:

Ubuntu一键部署Docker与可视化面板Portainer实战

1. 为什么选择Docker与Portainer? 如果你是一名开发者或者运维人员,肯定对Docker不陌生。简单来说,Docker就像是一个魔法箱子,可以把你的应用和它需要的所有东西打包在一起,这样在任何地方运行都不会出问题。而Portain…...

如何快速配置英雄联盟助手:ChampR的完整使用指南

如何快速配置英雄联盟助手:ChampR的完整使用指南 【免费下载链接】champr 🐶 Yet another League of Legends helper 项目地址: https://gitcode.com/gh_mirrors/ch/champr 你是否曾经在英雄联盟游戏中因为出装选择而犹豫不决?&#x…...

给AMD APU装Debian驱动,除了firmware-linux,你还需要注意这个Secure Display报错

给AMD APU装Debian驱动:从Secure Display报错到完美图形加速 在Debian系统上为AMD APU(加速处理单元)配置显卡驱动时,许多用户会遇到一个令人困惑的报错——"Secure Display: Generic Failure"。这个看似简单的提示背后…...

QSpectrumAnalyzer终极指南:3步掌握多平台SDR频谱分析

QSpectrumAnalyzer终极指南:3步掌握多平台SDR频谱分析 【免费下载链接】qspectrumanalyzer Spectrum analyzer for multiple SDR platforms (PyQtGraph based GUI for soapy_power, hackrf_sweep, rtl_power, rx_power and other backends) 项目地址: https://git…...

手把手教你如何在企业网络中部署SyncE(含芯片选型指南)

手把手教你如何在企业网络中部署SyncE(含芯片选型指南) 在数字化转型浪潮中,企业网络对时钟同步精度的要求正从毫秒级向微秒级跃迁。SyncE(同步以太网)技术凭借其媲美传统SDH的同步性能,正在5G前传、金融交…...

西门子1200 PLC罐装线项目:博图编程实践与精彩解析

西门子1200plc罐装线项目,程序包括modbus通讯,模拟量输入输出,西门子程序画面精彩,程序编辑分类清晰,非常具有参考学习意义,支持博图V13及以上版本打开在自动化控制领域,西门子1200 PLC以其强大…...

Windows上安装APK的终极解决方案:APK Installer完整指南

Windows上安装APK的终极解决方案:APK Installer完整指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为Windows电脑无法直接安装安卓应用而烦恼吗&a…...

Android SVG 实战:从零构建交互式中国地图组件

1. SVG基础与Android开发准备 SVG(Scalable Vector Graphics)作为矢量图形标准,在Android开发中具有独特优势。与传统的位图格式不同,SVG通过XML描述图形,这意味着无论放大多少倍都不会出现像素化。在Android项目中&a…...

从SGD到Adam:深度学习优化器演进之路与实战选型指南

1. 优化器:深度学习的隐形引擎 第一次训练神经网络时,我盯着损失曲线像过山车一样上蹿下跳,差点以为代码写错了。后来才发现,问题出在那个不起眼的优化器参数上。优化器就像深度学习模型的导航系统,它决定了模型参数如…...

别光看菜单了!HFSS 2023 R2工作界面保姆级拆解:从建模到仿真的高效操作流

HFSS 2023 R2界面深度优化指南:从功能认知到效率革命 第一次打开HFSS 2023 R2时,那个充满各种窗口和工具栏的界面可能会让你感到些许压迫感。但别担心,这就像飞行员第一次坐进战斗机驾驶舱——看似复杂的仪表盘背后,其实隐藏着精…...

告别复杂配置!在Ubuntu 20.04/22.04上快速部署Astra Pro摄像头(含PCL点云实时显示)

在Ubuntu 20.04/22.04上极简部署Astra Pro深度相机的完整指南 深度相机在机器人、三维重建和计算机视觉领域扮演着越来越重要的角色。Astra Pro作为一款性价比极高的深度感知设备,其部署过程却常常让开发者头疼。本文将彻底改变这一现状——通过自动化脚本和现代包管…...

从踩坑到精通:Element el-date-picker 与后端 API 联调的那些‘坑’和最佳实践

从踩坑到精通:Element el-date-picker 与后端 API 联调实战指南 在前后端分离的开发模式中,日期选择器作为高频交互组件,其与后端的数据对接往往成为初级开发者的"隐形杀手"。Element UI 的 el-date-picker 组件虽然功能强大&#…...

别再只调参了!用进化算法给DDPG当“外挂”,解决强化学习探索难题(附PyTorch代码)

进化算法与DDPG的协同进化:突破强化学习探索瓶颈的工程实践 在机器人控制、游戏AI等需要连续动作决策的场景中,深度确定性策略梯度算法(DDPG)因其出色的表现而广受欢迎。然而,许多工程师在实际项目中都会遇到这样的困…...

量化分析第一步:手把手教你用Pandas清洗网易金融下载的股票CSV数据

量化分析第一步:手把手教你用Pandas清洗网易金融下载的股票CSV数据 刚拿到网易金融导出的股票CSV数据时,很多人会直接扔进分析工具——直到发现中文列名报错、日期格式混乱、停牌日数据缺失等问题才手忙脚乱。作为量化分析的真正起点,数据清洗…...

用Vue3 + CSS动画复刻扭蛋抽奖效果:从产品原型到流畅交互的完整实现

Vue3 CSS动画打造高沉浸感扭蛋抽奖:工程化实现与性能优化实战 扭蛋机抽奖效果在营销活动中总能吸引用户眼球——那些跳跃的彩球、戏剧性的下落过程、充满惊喜的开启瞬间,构成了完美的用户体验闭环。作为前端开发者,我们不仅要还原视觉效果&a…...

IDEA调试必备:VM options和Program arguments的10个高级用法(含Spring/MyBatis实战)

IDEA调试进阶:VM Options与Program Arguments的10个企业级实战技巧 在Java开发领域,IDEA作为主流IDE,其调试功能的高阶使用往往能显著提升开发效率。特别是VM Options和Program Arguments这两个看似基础的配置项,实则蕴含着许多未…...

【SketchUp 2024】从模糊到清晰:二维图像交互全流程优化与三维模型导入/导出实战解析

1. SketchUp 2024图像处理全流程优化 每次打开SketchUp准备大展拳脚时,最让人头疼的就是导入的参考图总是糊成一片。这个问题在2024版其实有更智能的解决方案。在系统设置里找到OpenGL选项时,会发现新增了"智能纹理优化"选项,这个功…...

【IMX6ULL驱动开发实战】03.打通开发环境:从零配置IMX6ULL与虚拟机的静态IP网络

1. 为什么需要配置静态IP网络环境 刚接触IMX6ULL开发板的朋友经常会遇到一个头疼的问题:为什么我在虚拟机里编译好的程序,死活传不到开发板上?这就像你写了一封信,却找不到收件人的具体地址一样让人抓狂。其实核心原因就在于网络…...

如何用MTB Nodes轻松制作专业级ComfyUI动画:免费开源终极指南

如何用MTB Nodes轻松制作专业级ComfyUI动画:免费开源终极指南 【免费下载链接】comfy_mtb Animation oriented nodes pack for ComfyUI 项目地址: https://gitcode.com/gh_mirrors/co/comfy_mtb 想用ComfyUI创作惊艳动画却不知从何开始?MTB Nodes…...

STM32 HAL库驱动NRF24L01老是失败?这份避坑指南帮你搞定SPI配置、电源和天线

STM32 HAL库驱动NRF24L01实战避坑指南 调试NRF24L01模块时,明明硬件连接正确,代码也照着示例写了,可就是无法正常通信——这种抓狂的经历相信不少开发者都遇到过。作为一款经典的2.4GHz无线模块,NRF24L01以其低成本和高性能在物联…...

深度学习模型解释:SHAP与LIME

深度学习模型解释:SHAP与LIME 引言 深度学习模型在各个领域取得了显著的成功,但它们往往被视为"黑盒",难以理解其决策过程。模型解释性已成为深度学习应用中的关键挑战,尤其是在医疗、金融等对决策可解释性要求较高的领…...

2023最新GPS星历下载指南:从广播星历到精密星历(附RINEX/SP3文件解析)

2023最新GPS星历数据获取与实战应用全解析 在卫星导航定位领域,GPS星历数据的质量直接影响着定位精度。无论是测绘工程中的厘米级作业,还是自动驾驶车辆的高精度导航,都离不开准确的星历数据支撑。2023年,随着全球导航卫星系统&am…...

国民技术 N32G457VEL7 LQFP-100 单片机

关键特性 内核CPU一32位ARM Cortex-M4内核FPU,单周期硬件乘除法指令,支持DSP指令和MPU 内置8KB指令缓存,支持Flash加速单元执行程序0等待最高主频144MHz,180DMIPS 加密存储器 硬件ECC校验,10万次擦写次数,10年数据保持…...

国民技术 N32G451RCL7 LQFP-64 单片机

关键特性 内核CPU 32位ARM Cortex-M4内核FPU,单周期硬件乘除法指令,支持 DSP指令和 MPU 内置8KB指令Cache缓存,支持Flash加速单元执行程序0等待 最高主频144MHz,180DMIPS 加密存储器 高达512KByte片内Flash,支持加密存…...

别再乱用本地布线了!7系列FPGA时钟设计避坑指南:BUFG、BUFH、BUFR到底怎么选?

7系列FPGA时钟架构深度解析:BUFG、BUFH与BUFR的黄金选择法则 当你在Vivado中看到时序报告里那些令人头疼的红色警告时,是否曾怀疑过自己的时钟方案出了问题?7系列FPGA的时钟架构就像一座精密的钟表,每个齿轮(时钟缓冲…...

EXPKEYSIG签名失效:Open Robotics密钥更新与APT源安全修复实战

1. 当APT更新报错时发生了什么? 那天我正在给一台Ubuntu 18.04的机器人开发机做例行更新,突然在终端里看到一串刺眼的红色错误提示:"下列签名无效:EXPKEYSIG F42ED6FBAB17C654"。作为一个常年和Linux打交道的开发者&am…...

终极指南:如何用Bioicons免费矢量图标库快速制作专业科研图表

终极指南:如何用Bioicons免费矢量图标库快速制作专业科研图表 【免费下载链接】bioicons A library of free open source icons for science illustrations in biology and chemistry 项目地址: https://gitcode.com/gh_mirrors/bi/bioicons Bioicons是一个免…...

INAV/Ardupilot固件Mixer进阶:手把手教你为自定义飞行器(如扑翼机)编写动力分配函数

INAV/Ardupilot固件Mixer进阶:手把手教你为自定义飞行器编写动力分配函数 当四轴飞行器和固定翼已经无法满足你的创造力时,或许该考虑为那只机械蜂鸟或矢量推进的异形飞行器编写专属的动力分配逻辑了。作为开源飞控领域的双子星,INAV和Ardupi…...

GHelper:如何用10MB替代华硕官方控制中心,实现极致轻量化的硬件掌控

GHelper:如何用10MB替代华硕官方控制中心,实现极致轻量化的硬件掌控 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyr…...

TI毫米波雷达选型指南:IWR6843 vs IWR1843性能对比与实战场景解析

TI毫米波雷达选型指南:IWR6843 vs IWR1843性能对比与实战场景解析 毫米波雷达技术正在重塑工业检测、智能交通和自动化控制领域的感知能力。作为该领域的核心器件,德州仪器(TI)的IWR系列毫米波雷达凭借其高集成度和卓越性能&…...