Shashidhar Soppin 发布的文章

作为第 1 部分的延续,本第 2 部分将介绍 Portainer 的其余功能。

监控 docker 容器镜像

root@linuxtechi ~}$ docker ps -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS   PORTS                             NAMES
9ab9aa72f015        ubuntu                "/bin/bash"         14 seconds ago      Exited (0) 12 seconds ago                  suspicious_shannon
305369d3b2bb        centos                "/bin/bash"         24 seconds ago      Exited (0) 22 seconds ago                  admiring_mestorf
9a669f3dc4f6        portainer/portainer   "/portainer"        7 minutes ago       Up 7 minutes   0.0.0.0:9000->9000/tcp      trusting_keller

包括 portainer(docker 容器镜像),所有已退出和当前正在运行的 docker 镜像都会显示出来。下面的 Portainer GUI 屏幕截图显示了相同的情况。

Docker_status

监视事件

单击 portainer 网页中的“Events”选项,如下所示。

基于 docker 容器活动生成和创建的各种事件将被提取并显示在此页面中.

Container-Events-Poratiner-GUI

现在检查并验证“Events”部分是如何工作的。创建一个新的 docker 容器镜像 redis,如下所述,在 docker 命令行检查状态:docker ps –a

root@linuxtechi ~}$ docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED              STATUS         PORTS                    NAMES
cdbfbef59c31        redis                 "docker-entrypoint.s…"   About a minute ago   Up About a minute         6379/tcp                 angry_varahamihira
9ab9aa72f015        ubuntu                "/bin/bash"              10 minutes ago       Exited (0) 10 minutes ago                            suspicious_shannon
305369d3b2bb        centos                "/bin/bash"              11 minutes ago       Exited (0) 11 minutes ago                            admiring_mestorf
9a669f3dc4f6        portainer/portainer   "/portainer"             17 minutes ago       Up 17 minutes         0.0.0.0:9000->9000/tcp   trusting_keller

单击顶部的“Event List”刷新事件列表,

events_updated

现在事件的页面也更新了这个变化,

主机状态

下面是 portainer 显示主机状态的屏幕截图。这是一个简单的窗口。这显示了主机 Linux 机器的基本信息,如“CPU”、“主机名”、“操作系统信息”等。这个页面在不需要登录主机命令行的情况下提供了非常有用的信息,以便快速浏览。

Host-names-Portainer

Portainer 中的仪表板

到目前为止,我们已经在“Local”部分看到了基于 portainer 的各种特性。现在跳到所选 Docker 容器镜像的“Dashboard”部分。

在 Portainer 的网页中单击“EndPoint”选项时,会出现以下窗口:

End_Point_Settings

对于主机容器镜像,此仪表板有许多状态和选项。

Stacks

单击此选项可提供任何堆栈(如果有的话)的状态。因为这里没有堆栈,所以显示为零。

Images

单击此选项可提供主机中可用的容器镜像。此选项将显示所有活动和退出的容器镜像。

Docker-Container-Images-Portainer

例如,再创建一个“Nginx”容器并刷新此列表以查看更新:

root@linuxtechi ~}$  sudo docker run nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
27833a3ba0a5: Pull complete
ea005e36e544: Pull complete
d172c7f0578d: Pull complete
Digest: sha256:e71b1bf4281f25533cf15e6e5f9be4dac74d2328152edf7ecde23abc54e16c1c
Status: Downloaded newer image for nginx:latest

下面是刷新后的镜像界面:

Nginx_Image_creation

当 Nginx 镜像处于 stopped/killed 状态时,docker 的容器镜像会改变为 unused 状态。

:你可以看到这里所有的镜像的细节都非常清楚,比如内存使用,创建日期和时间。与命令行选项相比,从这里维护和监视容器将非常容易。

Networks

此选项用于网络操作。例如分配 IP 地址、创建子网、提供 IP 地址范围、访问控制(管理员和普通用户)。下面的窗口提供了各种可能选项的详细信息。根据你的需要,可以进一步去自行研究这些选项。

Conatiner-Network-Portainer

输入所有各种网络参数后,单击“create network”按钮即可创建网络。

Container

此选项将提供容器状态。此列表将提供有关活动的和未运行的容器状态的详细信息。此输出类似于 docker ps 命令选项。

Containers-Status-Portainer

在该窗口中,通过选中复选框并选择上述按钮可以根据需要控制容器停止和启动。一个例子如下:

例如,“CentOS”和“Ubuntu”容器都处于停止状态,现在可以通过选中复选框并点击“Start”按钮来启动它们。

start_containers1

start_containers2

注意: 因为这两个都是 Linux 容器镜像,所以不会被启动。Portainer 尝试启动,但稍后又停止。试试启动“Nginx”,你会看到它变成了 running 状态。

start_containers3

Volume

参见本文章第一部分。

Portainer 中的设置选项

到目前为止,我们已经在“Local”部分看到了基于 portainer 的各种特性。现在跳到所选 Docker 容器图像的“Settings”部分。

在 Portainer 的网页中单击“Settings”选项时,可以使用以下的配置选项:

Extensions

这是一个简单的 Portainer CE 订阅程序。详细信息和用途可以从附加的窗口中看到。这主要用于维护相应版本的许可证和订阅。

Extensions

Users

此选项用于添加具有或不具有管理权限的“用户”。下面的示例提供了相同的示例。

在本例中输入你的想好的用户名比如“shashi”和你选择的密码,然后点击下面的“Create User”按钮。

create_user_portainer

create_user2_portainer

Internal-user-Portainer

类似地,可以通过选中复选框并点击 “remove” 按钮来删除刚刚创建的用户“shashi”。

user_remove_portainer

Endpoints

此选项用于端点终端管理。终端可以添加和删除,如附加窗口中所示。

Endpoint-Portainer-GUI

新终端“shashi”是使用如下所示的各种默认参数创建的,

Endpoint2-Portainer-GUI

类似地,可以通过单击复选框并单击移除按钮来移除此端点。

Registries

此选项用于注册管理。由于 docker hub 有各种镜像的注册,因此此功能可用于类似的目的。

Registry-Portainer-GUI

使用默认选项就可以创建“shashi-registry”。

Registry2-Portainer-GUI

同样,如果不需要了,就可以移除它。

Settings

此选项用于设置以下各种选项,

  • 设置快照间隔
  • 设置自定义徽标
  • 创建外部模板
  • 安全功能,如:为非管理员禁用和启用 bin 挂载,为非管理员禁用/启用权限,启用主机管理功能

下面的屏幕截图显示了出于演示目的启用和禁用的一些选项。一旦全部完成点击“保存设置”按钮保存所有这些选项。

Portainer-GUI-Settings

现在点开“Authentication settings”就会弹出 LDAP、Internal 和 OAuth(extension)选项,如下所示:

Authentication-Portainer-GUI-Settings

根据我们想要的环境安全特性级别,选择相应的选项。

以上就是本文的内容,我希望这些介绍 portainer 的文章能帮助你更有效地管理和监视容器。请分享你的反馈和意见。


via: https://www.linuxtechi.com/monitor-manage-docker-containers-portainer-io-part-2/

作者:Shashidhar Soppin 选题:lujun9972 译者:Chao-zhi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

随着 Docker 的使用量越来越大,监控 Docker 容器正在变得更有挑战性。每天都有大量的 Docker 容器被创建,因此如何监控它们就变得非常重要。目前已经有一些内置的工具和技术,不过对它们进行配置有一些复杂。随着基于微服务的架构正在变成接下来事实上的标准,学会这种技术将为你的知识库再添一项新技能。

基于上述场景,对一种轻量、健壮的镜像管理工具的需求日益增加。Portainer.io 解决了这个问题。 Portainer.io(最新版本是 1.20.2)非常轻量,只需 2-3 个命令就可以配置好,已经在 Docker 用户中流行起来。

比起其他工具,这个工具有很多优势,其中一些如下所示:

  • 轻量(安装此工具仅需 2 到 3 个命令,与此同时安装镜像的大小在 26 M 到 30 M 之间)
  • 健壮且易用
  • 可用于 Docker 监控和构建
  • 提供对 Docker 环境的详细概况
  • 可以管理容器、镜像、网络和卷
  • Portainer 部署方便,仅需一个 Docker 命令(可以在任意地方运行)
  • 可以对完整的 Docker 容器环境进行监控

Portainer 同时具有以下服务:

  • 社区支持
  • 企业支持
  • 与合作伙伴 OEM 服务一起的专业服务

Portainer 的功能和特性如下:

1. 配备了漂亮的仪表盘,易于使用和监控
2. 自带大量内置模板,便于操作和创建
3. 服务支持(仅 OEM 和企业用户)
4. 对容器、镜像、网络、卷以及配置进行几乎实时的监控
5. 包含 Docker 集群监控功能
6. 功能多样的用户管理

另请阅读:如何在 Ubuntu 16.04 / 18.04 LTS 版本中安装 Docker CE

如何在 Ubuntu Linux / RHEL / CentOS 系统上安装和配置 Portainer.io

注意:下面的安装过程是在 Ubuntu 18.04 上完成的,但是对 RHEL 和 CentOS 同样适用,同时假设你已经在系统上安装了 Docker CE。

root@linuxtechi:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04 LTS
Release:        18.04
Codename:       bionic
root@linuxtechi:~$

为 Portainer 创建卷:

root@linuxtechi:~$ sudo docker volume create portainer_data
portainer_data
root@linuxtechi:~$

使用下面的 Docker 命令来运行 Portainer 容器:

root@linuxtechi:~$ sudo docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
Unable to find image 'portainer/portainer:latest' locally
latest: Pulling from portainer/portainer
d1e017099d17: Pull complete
0b1e707a06d2: Pull complete
Digest: sha256:d6cc2c20c0af38d8d557ab994c419c799a10fe825e4aa57fea2e2e507a13747d
Status: Downloaded newer image for portainer/portainer:latest
35286de9f2e21d197309575bb52b5599fec24d4f373cc27210d98abc60244107
root@linuxtechi:~$

安装完成之后,通过主机或 Docker 的 IP 加上 Docker 引擎使用的 9000 端口在浏览器中打开 Portainer。

注意:如果 Docker 所在主机的系统防火墙开启,需要确保 9000 端口被放行,否则浏览器页面将无法打开。

在我这边,我的 Docker 主机/引擎的 IP 是 192.168.1.16,所以 URL 就是 http://192.168.1.16:9000

Portainer-Login-User-Name-Password

在创建管理员用户时,请确保密码是 8 个字符,同时用户名为 admin,然后点击 “Create User”。

接下来进入如下所示的页面,选中 “Local” 矩形框。

Connect-Portainer-Local-Docker

点击 “Connect”,

可以看到 admin 用户的漂亮首页如下所示,

Portainer-io-Docker-Monitor-Dashboard

现在 Portainer 已经准备好运行和管理你的 Docker 容器了,同时也可用于容器监控。

在 Portainer 中管理容器镜像

Portainer-Endpoints

检查当前的状态,可以看到有两个容器已经在运行了,如果你创建另一个也会立即显示出来。

像下面这样,在命令行中启动一个或两个容器,

root@linuxtechi:~$ sudo docker run --name test -it debian
Unable to find image 'debian:latest' locally
latest: Pulling from library/debian
e79bb959ec00: Pull complete
Digest: sha256:724b0fbbda7fda6372ffed586670573c59e07a48c86d606bab05db118abe0ef5
Status: Downloaded newer image for debian:latest
root@linuxtechi:/#

然后在 Portainer 页面中点击刷新按钮(会出现一条让你确认的消息,点击上面的 “Continue”),就可以像下面高亮显示的一样看到 3 个容器了。

Portainer-io-new-container-image

点击上图中红圈圈出来的 “containers”,下一个页面会显示 “Dashboard Endpoint summary”。

Portainer-io-Docker-Container-Dash

在这个页面中,点击上图高亮和红圈圈出来的 “Containers”,就可以对容器进行监控了。

以简单的方式对容器进行监控

继续上面的步骤,就会出现一个如下所示精致、漂亮的 “Container list” 页面。

Portainer-Container-List

所有的容器都可以在这里进行控制(停止、启动等等)。

1、在这个页面上,停止我们之前启动的 “test” 容器(这是一个我们早先启动的 debian 容器)。

选中此容器前面的复选框,然后点击上面的“Stop”按钮来停止。

Stop-Container-Portainer-io-dashboard

在命令行中,你也会看到这个容器现在已经停止或退出了:

root@linuxtechi:~$ sudo docker container ls -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS                       PORTS                    NAMES
d45902e717c0        debian                "bash"              21 minutes ago      Exited (0) 49 seconds ago                             test
08b96eddbae9        centos:7              "/bin/bash"         About an hour ago   Exited (137) 9 minutes ago                            mycontainer2
35286de9f2e2        portainer/portainer   "/portainer"        2 hours ago         Up About an hour             0.0.0.0:9000->9000/tcp   compassionate_benz
root@linuxtechi:~$

2、现在,在 Portainer 页面中启动已经停止的两个容器(test 和 mycontainer2)

选中已停止的这两个容器前面的复选框,然后点击 “Start”。

Start-Containers-Portainer-GUI

你会立即看到两条窗口提醒,内容是“容器成功启动”,并且两个容器的状态变为正在运行。

Conatiner-Started-successfully-Portainer-GUI

一步步探索其他多种选项和特性

1、点击高亮的“Images”,你会看到如下页面:

Docker-Container-Images-Portainer-GUI

这是可用的容器列表,其中一些可能没在运行。这些容器可以被导入、导出或者上传到不同的位置,截图如下所示。

Upload-Docker-Container-Image-Portainer-GUI

2、点击高亮的“Volumes”,显示如下页面:

Volume-list-Portainer-io-gui

3、通过下面的操作,可以很容易的添加卷。点击添加卷按钮,出现如下页面,在名称输入框中输入卷名称,例如 “myvol”,然后点击 “Create the volume” 按钮:

Volume-Creation-Portainer-io-gui

新创建的卷如下所示(状态为未使用):

Volume-unused-Portainer-io-gui

结论

通过上面的安装步骤,你可以到配置和使用 Portainer.io 的多种选项是多么简单和精美,它提供了用于构建和监控 Docker 容器的多种功能和选项。如前所述,这个一个非常轻量的工具,因此不会给主机系统增加任何负担。下一组选项将在本系列的第 2 部分中进行探讨。

另请阅读: 用 Portainer.io 来监控和管理 Docker 容器(2)


via: https://www.linuxtechi.com/monitor-manage-docker-containers-portainer-part1/

作者:Shashidhar Soppin 选题:lujun9972 译者:jlztan 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

简介:在生产环境中遇到打开文件数这类的挑战如今已是司空见惯的事情了。因为许多应用程序是基于 Java 和 Apache 的,安装和配置它们可能会导致打开过多的文件(文件描述符)。如果打开的文件描述符超过了默认设置的限制,就可能会面临访问控制问题,受阻于打开文件的挑战。许多生产环境因此而陷入停滞状态。

幸运的是,在基于 Linux 的服务器上,都有 ulimit 命令,通过它可以查看、设置、获取文件打开的状态和配置详情。此命令配备了许多选项,通过这些组合可以设置打开文件的数量。下面逐个命令用示例做了详细说明。

查看任何 Linux 系统中当前打开文件数的限制

要在 Linux 服务器上得到打开文件数的限制,请执行以下命令,

[root@ubuntu ~]# cat /proc/sys/fs/file-max
146013

上面的数字表明用户可以在每个用户登录会话中打开 ‘146013’ 个文件。

[root@centos ~]# cat /proc/sys/fs/file-max
149219
[root@debian ~]# cat /proc/sys/fs/file-max
73906

这清楚地表明,各个 Linux 操作系统具有不同的打开文件数限制。这基于各自系统中运行的依赖关系和应用程序。

ulimit 命令

顾名思义,ulimit(用户限制)用于显示和设置登录用户的资源限制。当我们使用 -a 选项运行 ulimit 命令时,它将打印登录用户的所有资源限制。现在让我们在 Ubuntu/Debian 和 CentOS 系统上运行 ulimit -a

Ubuntu / Debian 系统

shashi@Ubuntu ~}$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 5731
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024      
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 5731
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

CentOS 系统

shashi@centos ~}$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 5901
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 5901
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

正如我们可以在这里看到的,不同的操作系统具有不同的限制设置。所有这些限制都可以使用 ulimit 命令进行配置/更改。

要显示单个资源限制,可以在 ulimit 命令中传递特定的参数,下面列出了一些参数:

  • ulimit -n –> 显示打开文件数限制
  • ulimit -c –> 显示核心转储文件大小
  • umilit -u –> 显示登录用户的最大用户进程数限制
  • ulimit -f –> 显示用户可以拥有的最大文件大小
  • umilit -m –> 显示登录用户的最大内存大小
  • ulimit -v –> 显示最大内存大小限制

使用以下命令检查登录用户打开文件数量的硬限制和软限制:

shashi@Ubuntu ~}$ ulimit -Hn
1048576
shashi@Ubuntu ~}$ ulimit -Sn
1024

如何修复达到最大文件数限制的问题?

让我们假设我们的 Linux 服务器已经达到了打开文件的最大数量限制,并希望在系统范围扩展该限制,例如,我们希望将 100000 设置为打开文件数量的限制。

root@ubuntu~]# sysctl -w fs.file-max=100000
fs.file-max = 100000

上述更改将在下次重启之前有效,因此要使这些更改在重启后仍存在,请编辑文件 /etc/sysctl.conf 并添加相同的参数,

root@ubuntu~]# vi /etc/sysctl.conf
fs.file-max = 100000

保存文件并退出。

运行下面命令,使上述更改立即生效,而无需注销和重新启动。

root@ubuntu~]# sysctl -p

现在验证新的更改是否生效。

root@ubuntu~]# cat /proc/sys/fs/file-max
100000

使用以下命令找出当前正在使用的文件描述符数量:

[root@ansible ~]# more /proc/sys/fs/file-nr
1216    0       100000

注意:命令 sysctl -p 用于在不重新启动和注销的情况下提交更改。

通过 limit.conf 文件设置用户级资源限制

/etc/sysctl.conf 文件用于设置系统范围的资源限制,但如果要为 Oracle、MariaDB 和 Apache 等特定用户设置资源限制,则可以通过 /etc/security/limits.conf 文件去实现。

示例 limits.conf 如下所示,

root@ubuntu~]# cat /etc/security/limits.conf

Limits-conf-linux-part1

Limits-conf-linux-part2

假设我们要为 linuxtechi 用户设置打开文件数量的硬限制和软限制,而对于 oracle 用户设置打开进程数量的硬限制和软限制,编辑文件 /etc/security/limits.conf 并添加以下行:

# hard limit for max opened files for linuxtechi user
linuxtechi       hard    nofile          4096
# soft limit for max opened files for linuxtechi user
linuxtechi       soft    nofile          1024

# hard limit for max number of process for oracle user
oracle           hard    nproc          8096
# soft limit for max number of process for oracle user
oracle           soft    nproc          4096

保存文件并退出。

注意: 如果你想对一个组而不是用户进行资源限制,那么也可以通过 limits.conf 文件,输入 @<组名> 代替用户名,其余项都是相同的,示例如下,

# hard limit for max opened files for sysadmin group
@sysadmin        hard         nofile            4096 
# soft limit for max opened files for sysadmin group
@sysadmin        soft         nofile            1024

验证新的更改是否生效:

~]# su - linuxtechi
~]$ ulimit -n -H
4096
~]$ ulimit -n -S
1024

~]# su - oracle
~]$ ulimit -H -u
8096
~]$ ulimit -S -u
4096

注:其他主要使用的命令是 lsof,可用于找出“当前打开了多少个文件”,这命令对管理员非常有帮助。

结尾

正如在介绍部分提到的,ulimit 命令非常强大,可以帮助用户配置并确保应用程序安装更加流畅而没有任何瓶颈。此命令有助于修复基于 Linux 的服务器中的(打开)大量文件的限制。


via: https://www.linuxtechi.com/set-ulimit-file-descriptors-limit-linux-servers/

作者:Shashidhar Soppin 选题:lujun9972 译者:zgj1024 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出