在Linux安装Docker和Portainer
并不是所有事情都应该直接在您的操作系统上运行。 像SQL Server这样的工具占用大量资源,而裸机运行它们意味着这些资源无论您是否需要都被消耗。 容器解决了这个问题:您在需要时启动一个,在不需要时停止它。 Docker是驱动这个工作流程的引擎,Portainer是轻量级GUI,使其无需记住大量CLI命令即可管理。
这种基于Tim Corey的Linux开发系列的细分详情了Ubuntu上的完整设置:注册apt仓库,设置引擎,移除个人计算机的sudo要求,以及将Portainer CE部署为一个持久容器。
步骤1:添加Docker的apt仓库
[3:10 - 6:00] 在通过apt安装Docker之前,您需要注册Docker的包源,并使您的系统可以信任它。 Docker提供了一个可复制的命令块,通过一次粘贴解决了这一切。 前往docs.docker.com,导航到安装部分,然后选择Ubuntu。 "使用apt仓库安装"下的命令就是您需要的。
该块按顺序执行多个操作:安装所需的证书工具,下载Docker的官方GPG密钥,调整其权限,并将存储库地址写入您的apt源列表。通过从文档中复制整个块并粘贴到带有Ctrl+Shift+V的终端中一次性运行整个块。
要强调一个重要点:不要盲目添加新软件包来源。 在安装其证书之前,验证您是否信任该来源。 Docker是可信赖的,值得信任,但这一原则适用于您添加的每个来源。 这种方法实际上比许多包管理器的默认做法更为严格,这是一种功能,而不是一种复杂性。
步骤2:安装Docker引擎
[6:00 - 7:10] 在注册了库之后,安装Docker是一条简单的apt命令:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginsudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin在提示时确认,apt负责下载和安装。 Docker配置为开机自动启动,因此每次重启后,它都会在后台运行,无需额外步骤。
要确认一切正常,运行hello-world容器:
sudo docker run hello-worldsudo docker run hello-worldDocker拉取镜像,执行并打印确认消息。 该输出意味着您的安装正常工作。 hello-world容器设计为运行一次并退出; 它的存在仅仅是为了验证引擎正在响应。
步骤3:在无sudo的情况下运行Docker(仅限个人机器)
[7:45 - 10:30] 默认情况下,Docker命令需要sudo,因为管理容器是一项特权操作。 在共享服务器或生产机器上,请保持原样。 对于您单独控制的个人开发机器,将自己添加到docker组可以去除前缀:
sudo usermod -aG docker $USERsudo usermod -aG docker $USER-aG 将当前账户附加到它。 大小写很重要:$USER 必须是大写。 更改不会立即生效,直到您注销并重新登录; 相比简单的注销,整个系统重启通常更可靠地应用群组成员身份。 一旦这样做,docker run hello-world 无需sudo即可工作。
这是一种便利性的权衡,而不是安全改进。 仅将其保留用于开发机器。
步骤4:为Portainer创建卷
[11:30 - 12:45] 在启动Portainer之前,创建一个命名卷以在容器重启和更换过程中持久化其数据:
docker volume create portainer_datadocker volume create portainer_data容器本质上是短暂的,销毁它将擦除内部存储的任何内容。 卷存在于容器生命周期之外,由Docker管理的路径上,因此即使销毁并重建Portainer,配置也能幸存。
步骤5:运行Portainer容器
[12:45 - 14:10] Portainer CE本身是一个Docker容器。 完整的运行命令是:
docker run -d -p 9000:9000 --name portainer \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-cedocker run -d -p 9000:9000 --name portainer \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce分解:-d 使容器以分离方式运行以便它保持在后台。 -p 9000:9000 暴露主机端口9000并将其路由到容器内的匹配内部地址。 第一个-v 挂载Docker socket,使Portainer可以查看和控制您的其他容器和镜像。 以这种方式连接套接字是允许GUI读取和管理您的整个Docker环境的原因。 第二个-v 将您刚创建的卷链接到容器内的/data,保持其状态。
从portainer/portainer-ce拉取(Community Edition)。 portainer.io网站以付费企业版为首,但CE版是免费的,完全适合本地和个人使用。
浏览Portainer界面
[14:10 - 17:30] 一旦容器启动,打开浏览器并转到http://localhost:9000。 Portainer 在首次访问时提示您创建一个管理员密码; 必须至少12个字符。 登录后,点击快速设置向导,而不增加额外的环境,然后从仪表板中选择本地环境。
主页视图显示了一个摘要:下载的镜像、存在的容器、配置的网络和正在使用的卷。 点击每个部分可完全控制。 在Images下,您将看到hello-world和设置期间执行的两个拉取中的Portainer CE镜像。在Containers中,两个hello-world运行会以停止状态出现,旁边是Portainer自身,它正在运行。
从容器面板中,您可以启动、停止或移除任何条目。 选择一个容器并点击日志可显示输出。 hello-world条目显示了两次执行时熟悉的欢迎文本。 重启一个容器并检查其日志确认,新输出附加在第一次输出下方。
卷按其挂载路径列出。 /var/lib/docker/volumes/下的位置,那里引擎将所有命名卷数据存储在磁盘上。
为什么选择Portainer而不是Docker Desktop
[17:30 - 18:10] Docker Desktop配有GUI,但占用显著的开销,这在Linux开发机器上很重要,您希望将系统资源用于实际工作负载。 Portainer CE本身作为一个容器运行,消耗更少的内存和CPU。 它覆盖了实际需要:浏览镜像和容器、读取日志、管理卷、启动和停止服务,而没有重量。
下一步是什么
[17:50 - 18:30] 有了Docker和Portainer,系列中的下一个步骤是运行SQL Server作为一个容器。 单个docker run命令拉取镜像并启动一个实例。 从Portainer容器面板中,您可在会话结束时停止它,并在需要时重新启动。 这一模式同样适用于Redis和其他基础架构工具,这些工具长期运行昂贵,但容易容器化。
结论
[18:30 - end] 回顾一下:使用其GPG密钥注册Docker的apt存储库,通过localhost:9000为您提供一个GUI,可以处理日常管理Linux上的容器的工作,而无需为日常任务触碰CLI。
在Tim Corey的YouTube完整视频中观看在实际机器上的安装。

