Docker 可视化运维指南:DockerUI 与 Portainer 对比实操,附带 WordPress、Ghost 部署实验
第10章 docker图形界面管理
摘要: 本章详细介绍了三种 Docker 图形化管理工具的安装与使用:DockerUI、Portainer 以及通过 WordPress 和 Ghost 构建的完整应用。DockerUI 是一款轻量级 Web 管理界面,适合 Docker 初学者;Portainer 功能更全面,支持容器、镜像、网络、卷的图形化管理;最后通过综合实验演示了如何使用 Docker 部署 WordPress 博客系统和 Ghost 内容管理系统,包括环境配置、容器创建、数据持久化和服务验证等完整流程。
续上篇博客 一文吃透 Docker Compose:从概念语法到多容器一键部署实战
DockerUI 容器管理器的安装与使用
简介:
DockerUI是一个易用且轻量化的 Docker 管理工具,通过 Web 界面的操作,更方便对于 Docker 指令不 熟悉的用户更容易操作 Docker。
功能:
- Docker主机管理:数据卷管理,镜像管理,容器管理,构建管理,仓库配置管理,网络配置管理
- Docker Swarm集群管理:集群概要信息,节点管理,Service管理,任务管理,密码管理,配置管理
镜像:

我今天分享的这个镜像是来自于这位大佬@joinsunsoft 的,他发布在Docker Hub的镜像地址为:https://hub.docker.com/r/joinsunsoft/docker.ui
安装
启动容器并映射8999端口:
[root@docker ~]# docker run -d --name docker.ui --restart always -v /var/run/docker.sock:/var/run/docker.sock -p 8999:8999 joinsunsoft/docker.ui
7af59b5074732e4bd7cb9ca532379ddc35f52cbbc6aa653bda67954e56ce8d3e
启动效果
你可以访问: http://192.168.108.30:8999 ,将IP替换为自己服务器IP地址。
默认用户名密码:ginghan/123456

DockerUI的主界面(概览),它展示的信息还是很多的,除了容器相关,还有资源占用情况等信息。不 得不说还是国人更懂国人,UI界面还是很漂亮的对吧~

**Docker 图形化界面管理工具 Portainer **
Portainer 是一个 Docker 图形化管理工具,可以通过 Web UI 轻松的管理容器、镜像、网络、卷。同时 上手难度也更大一些
Portainer 分为社区版和商业版,本文安装的是社区版(Portainer CE),该版本免费,比较适合个人用户使用
安装
1.创建存储卷
[root@docker ~]# docker volume create portainer_data
portainer_data
2.通过docker安装Portainer
[root@docker ~]# docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
bd0967eedcae7fddbe5217bafcac7761c6a2d6f430e4b80bf5f4a9551567a828
9443 端口默认会启用 SSL,如果需要直接通过 http 访问,需要加上 -p 9000:9000 访问 9000 端口
这里,-v /var/run/docker.sock:/var/run/docker.sock 参数使得Portainer能够访问Docker 守护进程,从而能够管理容器。-v portainer_data:/data 参数则用于持久化Portainer的数 据。
访问
通过 https://ip:9443 访问 Portainer,首次访问需要创建管理员账号

创建用户及密码

完成登录后,管理本机直接点击 Get Started

进入主界面可以看到 local,点击 Live connect

连接到该机器后,就可以看到 Docker 相关状态并且可以对其进行管理

综合实验
构建WordPress
通过WordPress和mysql镜像构建WordPress应用。
下载镜像:
[root@docker ~]# docker pull mysql
[root@docker ~]# docker pull wordpress
创建mysql容器,并创建wordpress数据库:
[root@docker ~]# docker run -d -p 3306:3306 \-v /mysql:/var/lib/mysql:z \
--name mysql \
-e MYSQL_ROOT_PASSWORD=huawei \-e MYSQL_DATABASE=wordpress \
mysql
6dd12147c9156055042587950e23d543cca47617c3a82bef14c58ffe90580301
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
6dd12147c915 mysql "docker-entrypoint.s…" 15 seconds ago Up 14 seconds
0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
创建WordPress容器:
[root@docker ~]# docker inspect mysql|grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
[root@docker ~]# docker run -d -p 80:80 -v /www:/var/www/html:z \
--name wordpress \
-e WORDPRESS_DB_HOST=172.17.0.2 \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=huawei \
-e WORDPRESS_DB_NAME=wordpress \
wordpress
63fa3a61f9bae2a03f3c0c21b574cca75c9a58c5c2645a6f702179c63f5f06eb
说明:
-e WORDPRESS_DB_HOST=... (defaults to the IP and port of the linked mysql container)
-e WORDPRESS_DB_USER=... (defaults to “root”)
-e WORDPRESS_DB_PASSWORD=... (defaults to the value of the MYSQL_ROOT_PASSWORD environment variable from the linked mysql container)
-e WORDPRESS_DB_NAME=... (defaults to “wordpress”)
验证:浏览器打开 http://192.168.108.30,配置WordPress:





Docker环境下部署Ghost开源内容管理系统
一、Ghost介绍
1.1 Ghost简介
Ghost是一款用于博客、出版物和内容网站的免费且开源的CMS(内容管理系统),它是完全基于 JavaScript编写的。Ghost的主要特点是简单易用、高度可扩展、精美的设计和优秀的性能。
1.2 Ghost特点
简单易用:Ghost的用户界面非常简单和直观,因此非常易于使用。它提供了一个简单的写作体验,让您 专注于写作。
可扩展:Ghost提供了一个强大的API,使得开发者可以轻松地扩展其功能,并将其与其他应用程序集 成。
设计优美:Ghost的设计非常美观和优雅,它为您提供了多种主题和自定义选项来满足您的需求。
性能优越:Ghost的性能非常好,因为它是基于Node.js构建的,使用了非阻塞I/O,可以处理大量的请求 和并发连接。
1.3 Ghost使用场景
Ghost适用于各种类型的博客、出版物和内容网站,包括但不限于以下场景。
个人博客:Ghost提供简单易用的界面,使个人博主能够轻松创建和管理自己的博客,并分享自己的想 法、故事和经验。
新闻网站:Ghost的高度可扩展性使其成为构建新闻网站的理想选择。它具有良好的性能,可以处理大量 的文章和高流量的访问。
音乐/艺术家网站:Ghost的精美设计和优秀的性能使其非常适合用于展示音乐家、艺术家和其他创意人 才的作品和信息。
企业博客:许多企业都拥有自己的博客来发布公司新闻、产品更新、行业见解等内容。Ghost提供了一个 灵活且易于定制的平台,可以满足企业博客的需求。
下载Ghost镜像
[root@docker ~]# docker pull ghost
Using default tag: latest
latest: Pulling from library/ghost
302e3ee49805: Already exists
f4523b1e3485: Pull complete
643a6ed41aef: Pull complete
23663f1b1336: Pull complete
2fad2dcef2d4: Pull complete
3f316e596507: Pull complete
bf2a403ec6b6: Pull complete
9b79a6ed50e6: Pull complete
4f4fb700ef54: Pull complete
dce26c7b2132: Pull complete
Digest: sha256:a8dbbc0bfe9b57148b97ad4fa58064dd58b3bfcd019fe90fa60e5d5cd9b77750
Status: Downloaded newer image for ghost:latest
docker.io/library/ghost:latest
部署Ghost开源内容管理系统
创建数据目录
[root@docker ~]# mkdir -p /data/ghost
创建Ghost容器
[root@docker ~]# docker run -d \
--restart always \
--name ghost \
-p 2368:2368 \
-v /data/ghost:/var/lib/ghost/content \
-e NODE_ENV=development \
-e url=http://localhost:2368 \
ghost
50462e8dc684336b1124fcf5372cb78019362f78dbffde2838229011084571ca
目录授权
[root@docker ~]# chmod -R 777 /data/ghost/
重启ghost容器
[root@docker ~]# docker restart ghost
ghost
检查Ghost容器状态
检查Ghost容器状态,确保容器正常启动
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
50462e8dc684 ghost "docker-entrypoint.s…" About a minute ago
Up 15 seconds 0.0.0.0:2368->2368/tcp, :::2368->2368/tcp ghost
检查Ghost容器运行日志
查Ghost容器运行日志,检查有无报错,确保Ghost服务正常启动。
[root@docker ~]# docker logs ghost
[2024-10-08 15:23:03] INFO Ghost is running in development...
[2024-10-08 15:23:03] INFO Listening on: :::2368
[2024-10-08 15:23:03] INFO Url configured as: http://192.168.3.166:2368/
[2024-10-08 15:23:03] INFO Ctrl+C to shut down
[2024-10-08 15:23:03] INFO Ghost server started in 0.4s
[2024-10-08 15:23:03] WARN Database state requires initialisation.
[2024-10-08 15:23:03] INFO Creating table: newsletters
[2024-10-08 15:23:03] INFO Creating table: posts
[2024-10-08 15:23:03] INFO Creating table: posts_meta
[2024-10-08 15:23:03] INFO Creating table: users
[2024-10-08 15:23:03] INFO Creating table: posts_authors
[2024-10-08 15:23:03] INFO Creating table: roles
[2024-10-08 15:23:03] INFO Creating table: roles_users
[2024-10-08 15:23:03] INFO Creating table: permissions
[2024-10-08 15:23:03] INFO Creating table: permissions_users
[2024-10-08 15:23:03] INFO Creating table: permissions_roles
[2024-10-08 15:23:03] INFO Creating table: settings
[2024-10-08 15:23:03] INFO Creating table: tags
[2024-10-08 15:23:03] INFO Creating table: posts_tags
[2024-10-08 15:23:03] INFO Creating table: invites
[2024-10-08 15:23:03] INFO Creating table: brute
[2024-10-08 15:23:03] INFO Creating table: sessions
[2024-10-08 15:23:03] INFO Creating table: integrations
[2024-10-08 15:23:03] INFO Creating table: webhooks
[2024-10-08 15:23:03] INFO Creating table: api_keys
[2024-10-08 15:23:03] INFO Creating table: mobiledoc_revisions
[2024-10-08 15:23:03] INFO Creating table: post_revisions
[2024-10-08 15:23:03] INFO Creating table: members
[2024-10-08 15:23:03] INFO Creating table: products
[2024-10-08 15:23:03] INFO Creating table: offers
[2024-10-08 15:23:03] INFO Creating table: benefits
[2024-10-08 15:23:03] INFO Creating table: products_benefits
[2024-10-08 15:23:03] INFO Creating table: members_products
[2024-10-08 15:23:03] INFO Creating table: posts_products
[2024-10-08 15:23:03] INFO Creating table: members_created_events
[2024-10-08 15:23:03] INFO Creating table: members_cancel_events
[2024-10-08 15:23:03] INFO Creating table: members_payment_events
[2024-10-08 15:23:03] INFO Creating table: members_login_events
[2024-10-08 15:23:03] INFO Creating table: members_email_change_events
[2024-10-08 15:23:03] INFO Creating table: members_status_events
[2024-10-08 15:23:03] INFO Creating table: members_product_events
[2024-10-08 15:23:03] INFO Creating table: members_paid_subscription_events
[2024-10-08 15:23:03] INFO Creating table: labels
[2024-10-08 15:23:03] INFO Creating table: members_labels
[2024-10-08 15:23:03] INFO Creating table: members_stripe_customers
[2024-10-08 15:23:03] INFO Creating table: subscriptions
[2024-10-08 15:23:03] INFO Creating table: members_stripe_customers_subscriptions
[2024-10-08 15:23:03] INFO Creating table: members_subscription_created_events
[2024-10-08 15:23:03] INFO Creating table: offer_redemptions
[2024-10-08 15:23:03] INFO Creating table: members_subscribe_events
[2024-10-08 15:23:03] INFO Creating table: donation_payment_events
[2024-10-08 15:23:03] INFO Creating table: stripe_products
[2024-10-08 15:23:04] INFO Creating table: stripe_prices
[2024-10-08 15:23:04] INFO Creating table: actions
[2024-10-08 15:23:04] INFO Creating table: emails
[2024-10-08 15:23:04] INFO Creating table: email_batches
[2024-10-08 15:23:04] INFO Creating table: email_recipients
[2024-10-08 15:23:04] INFO Creating table: email_recipient_failures
[2024-10-08 15:23:04] INFO Creating table: tokens
[2024-10-08 15:23:04] INFO Creating table: snippets
[2024-10-08 15:23:04] INFO Creating table: custom_theme_settings
[2024-10-08 15:23:04] INFO Creating table: members_newsletters
[2024-10-08 15:23:04] INFO Creating table: comments
[2024-10-08 15:23:04] INFO Creating table: comment_likes
[2024-10-08 15:23:04] INFO Creating table: comment_reports
[2024-10-08 15:23:04] INFO Creating table: jobs
[2024-10-08 15:23:04] INFO Creating table: redirects
[2024-10-08 15:23:04] INFO Creating table: members_click_events
[2024-10-08 15:23:04] INFO Creating table: members_feedback
[2024-10-08 15:23:04] INFO Creating table: suppressions
[2024-10-08 15:23:04] INFO Creating table: email_spam_complaint_events
[2024-10-08 15:23:04] INFO Creating table: mentions
[2024-10-08 15:23:04] INFO Creating table: milestones
[2024-10-08 15:23:04] INFO Creating table: temp_mail_events
[2024-10-08 15:23:04] INFO Creating table: collections
[2024-10-08 15:23:04] INFO Creating table: collections_posts
[2024-10-08 15:23:04] INFO Creating table: recommendations
[2024-10-08 15:23:04] INFO Creating table: recommendation_click_events
[2024-10-08 15:23:04] INFO Creating table: recommendation_subscribe_events
[2024-10-08 15:23:13] INFO Model: Collection
[2024-10-08 15:23:13] INFO Model: Product
[2024-10-08 15:23:13] INFO Model: Newsletter
[2024-10-08 15:23:13] INFO Model: Tag
[2024-10-08 15:23:13] INFO Model: Permission
[2024-10-08 15:23:13] INFO Model: Post
[2024-10-08 15:23:13] INFO Model: Integration
[2024-10-08 15:23:13] INFO Relation: Role to Permission
[2024-10-08 15:23:13] INFO Relation: Post to Tag
[2024-10-08 15:23:13] INFO Database is in a ready state.
[2024-10-08 15:23:13] INFO Ghost database ready in 10.765s
[2024-10-08 15:23:15] INFO Adding offloaded job to the queue
[2024-10-08 15:23:15] INFO Scheduling job mentions-email-report at 12 48 * * * *.
Next run on: Tue Oct 08 2024 15:48:12 GMT+0000 (Coordinated Universal Time)
[2024-10-08 15:23:15] INFO Adding one-off job to queue with current length = 0
called 'members-migrations'
[2024-10-08 15:23:15] INFO Stripe not configured - skipping migrations
[2024-10-08 15:23:15] INFO Ghost URL Service Ready in 12.297s
[2024-10-08 15:23:15] INFO Adding offloaded job to the queue
[2024-10-08 15:23:15] INFO Scheduling job clean-expired-comped at 0 15 2 * * *.
Next run on: Wed Oct 09 2024 02:15:00 GMT+0000 (Coordinated Universal Time)
[2024-10-08 15:23:15] INFO Adding offloaded job to the queue
[2024-10-08 15:23:15] INFO Scheduling job clean-tokens at 20 17 2 * * *.
Next run on: Wed Oct 09 2024 02:17:20 GMT+0000 (Coordinated Universal Time)
[2024-10-08 15:23:15] INFO Ghost booted in 12.633s
[2024-10-08 15:23:15] INFO Adding offloaded job to the queue
[2024-10-08 15:23:15] INFO Scheduling job update-check at 4 44 20 * * *.
Next run on: Tue Oct 08 2024 20:44:04 GMT+0000 (Coordinated Universal Time)
[2024-10-08 15:23:15] INFO Running milestone emails job on Tue Oct 08 2024
15:23:20 GMT+0000 (Coordinated Universal Time)
[2024-10-08 15:23:55] WARN Ghost is shutting down
[2024-10-08 15:23:55] WARN Ghost has shut down
[2024-10-08 15:23:55] WARN Ghost was running for a minute
[2024-10-08 15:23:56] INFO Ghost is running in development...
[2024-10-08 15:23:56] INFO Listening on: :::2368
[2024-10-08 15:23:56] INFO Url configured as: http://192.168.3.166:2368/
[2024-10-08 15:23:56] INFO Ctrl+C to shut down
[2024-10-08 15:23:56] INFO Ghost server started in 0.376s
[2024-10-08 15:23:56] INFO Database is in a ready state.
[2024-10-08 15:23:56] INFO Ghost database ready in 0.468s
[2024-10-08 15:23:57] INFO Adding offloaded job to the queue
[2024-10-08 15:23:57] INFO Scheduling job mentions-email-report at 34 34 * * * *.
Next run on: Tue Oct 08 2024 15:34:34 GMT+0000 (Coordinated Universal Time)
[2024-10-08 15:23:57] INFO Adding offloaded job to the queue
[2024-10-08 15:23:57] INFO Scheduling job clean-expired-comped at 15 1 0 * * *.
Next run on: Wed Oct 09 2024 00:01:15 GMT+0000 (Coordinated Universal Time)
[2024-10-08 15:23:57] INFO Adding offloaded job to the queue
[2024-10-08 15:23:57] INFO Scheduling job clean-tokens at 38 6 15 * * *.
Next run on: Wed Oct 09 2024 15:06:38 GMT+0000 (Coordinated Universal Time)
[2024-10-08 15:23:57] INFO Ghost booted in 1.969s
[2024-10-08 15:23:57] INFO Adding offloaded job to the queue
[2024-10-08 15:23:57] INFO Scheduling job update-check at 51 38 18 * * *.
Next run on: Tue Oct 08 2024 18:38:51 GMT+0000 (Coordinated Universal Time)
[2024-10-08 15:23:57] INFO Running milestone emails job on Tue Oct 08 2024
15:24:02 GMT+0000 (Coordinated Universal Time)
[2024-10-08 15:23:57] INFO Ghost URL Service Ready in 2.202s
访问Ghost首页
访问地址: http://192.168.108.30:2368,将IP替换为自己服务器IP地址,如果无法访问到该页面,注意自己服务器的防火墙是否关闭或者放行相关端口,使用云服务器则还需要设置安全组规则。

进入账号注册页面
http://192.168.108.30:2368/ghost
进入Ghost后台管理页面

发布网站内容
进入内容编辑页面
按如下操作,进入内容编辑页面

编辑网站内容,选择pulish

查看网站内容 http://192.168.108.30:2368


更多推荐

所有评论(0)