Ubuntu一键部署Docker与可视化面板Portainer实战
2026/4/18 16:53:26 网站建设 项目流程

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 设置稳定版仓库

现在告诉系统从哪里获取Docker:

sudo add-apt-repository "deb [arch=amd64] 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 --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ --name portainer portainer/portainer

这个命令做了以下几件事:

  • -d:让容器在后台运行
  • -p 9000:9000:把容器的9000端口映射到主机的9000端口
  • --restart=always:设置容器自动重启
  • -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 --restart=always \ -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 --restart=always \ -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 镜像拉取失败

如果拉取镜像时遇到网络问题,可以尝试:

  1. 检查镜像加速配置是否正确
  2. 临时关闭防火墙测试
  3. 更换网络环境

我在公司内网部署时就遇到过这个问题,后来发现是公司防火墙拦截了Docker的流量。和网络管理员沟通后,添加了例外规则就解决了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询