IRONSOFTWAREHOME

在Linux安装Docker和Portainer

在Linux上安装Docker和Portainer

Tim Corey

~18m

并不是所有事情都应该直接在您的操作系统上运行。 像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-plugin
SHELL

在提示时确认,apt负责下载和安装。 Docker配置为开机自动启动,因此每次重启后,它都会在后台运行,无需额外步骤。

要确认一切正常,运行hello-world容器:

sudo docker run hello-world
SHELL

Docker拉取镜像,执行并打印确认消息。 该输出意味着您的安装正常工作。 hello-world容器设计为运行一次并退出; 它的存在仅仅是为了验证引擎正在响应。

步骤3:在无sudo的情况下运行Docker(仅限个人机器)

[7:45 - 10:30] 默认情况下,Docker命令需要sudo,因为管理容器是特权操作。 在共享服务器或生产机器上,请保持原样。 对于您单独控制的个人开发机器,将自己添加到docker组中可以去掉前缀:

sudo usermod -aG docker $USER
SHELL

-aG将当前账户追加到其中。 区分大小写:$USER必须是大写。 更改不会立即生效,直到您注销并重新登录; 相比简单的注销,整个系统重启通常更可靠地应用群组成员身份。 一旦做到这一点,sudo即可工作。

这是一种便利性的权衡,而不是安全改进。 仅将其保留用于开发机器。

步骤4:为Portainer创建卷

[11:30 - 12:45] 在启动Portainer之前,创建一个命名卷以在容器重启和更换过程中持久化其数据:

docker volume create portainer_data
SHELL

容器本质上是短暂的,销毁它将擦除内部存储的任何内容。 卷存在于容器生命周期之外,由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-ce
SHELL

分解一下:-d以分离模式运行容器,使其保持在后台。 -p 9000:9000暴露主机端口9000并将其路由到容器内的匹配内部地址。 第一个-v挂载Docker套接字,使Portainer能够查看和控制您的其他容器和镜像。 以这种方式连接套接字是允许GUI读取和管理您的整个Docker环境的原因。 第二个/data,以持久化其状态。

portainer/portainer-ce(社区版)中拉取。 portainer.io网站以付费企业版为首,但CE版是免费的,完全适合本地和个人使用。

浏览Portainer界面

[14:10 - 17:30] 一旦容器启动,打开浏览器并转到http://localhost:9000。 Portainer 在首次访问时提示您创建一个管理员密码; 必须至少12个字符。 登录后,点击快速设置向导,而不增加额外的环境,然后从仪表板中选择本地环境。

主页视图显示了一个摘要:下载的镜像、存在的容器、配置的网络和正在使用的卷。 点击每个部分可完全控制。 在镜像下,您将看到hello-world和在设置期间执行的两次拉取的Portainer CE镜像。 在容器中,两个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为您提供一个覆盖日常管理Linux上容器的GUI,无需为常规任务接触CLI。

在Tim Corey的YouTube完整视频中观看在实际机器上的安装。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户