Skip to main content

Parameters for Environment Detection

Take a CentOS 7.9 server as an example

User

Description: The user when running the script

Requirement: To root a user or a user with root permissions is required because docker is in use.

Selinux

Description: The security system of Linux

Requirement: Selinux should be disabled because docker is in use.

Temporarily disabled: `setenforce 0

Permanently disabled: modify SELINUX=enforcing or SELINUX=permissive to SELINUX=disabled in /etc/selinux/config

Firewalld

Note: It is a self-contained firewall tool. It is recommended to disable the firewall as it tends to conflict with iptables rules. Cloud servers can rely on security group rules for network control.

Temporarily disabled: systemctl stop firewalld (you need to restart the docker service after shutting down the firewall, otherwise the rules may be lost and lead to network anomalies)

Permanently disabled: systemctl disable firewalld

CPU

Description: Processor

Requirements: Minimum 4 cores

Memory

Description: Memory

Requirement: Minimum 32G memory capacity

docker

Description: The docker command must be available in the environment variable and can be executed successfully.

Requirement: It will be added to the PATH environment variable automatically after installation via RPM. If it is a binary installation, you need to add it to the environment variable manually.

dockerd

Note: The dockerd command must be available in the environment variable and can be executed successfully.

Requirement: It will be added to the PATH environment variable automatically after installation via RPM. If it is a binary installation, you need to add it to the environment variable manually.

container

Description: The file descriptor limit actually available to processes inside containers. After Docker v29 updates containerd to v2.1.5, containers use systemd's default LimitNOFILE, and ulimit -n may drop to 1024. This change affects all containers and may cause databases, middleware, and other services to fail to start or run abnormally due to insufficient file handles.

Adjustment: modify or create /etc/docker/daemon.json, add the default-ulimits configuration, and set nofile to 102400:

{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Soft": 102400,
"Hard": 102400
}
}
}

Restart the docker service for the change to take effect.

MaxMapCount

Description: It limits the number of VMAs (Virtual Memory Areas) that a process can have, and the built-in Elasticsearch needs to be adjusted to start successfully.

Temporary adjustment: sysctl -w vm.max_map_count=262144

Permanent adjustment: add the file vm.max_map_count=262144 to /etc/sysctl.conf

SysFileNr

Description: OS-level file descriptor limit

Temporary adjustment: sysctl -w fs.file-max=2048000

Permanent adjustment: add the file fs.file-max=2048000 to /etc/sysctl.conf

IPv4Forward

Note: It needs to be enabled for docker to provide external services.

Temporary adjustment: sysctl -w net.ipv4.ip_forward=1

Permanent adjustment: add the file net.ipv4.ip_forward=1 to /etc/sysctl.conf

DockerCgroupDrive

Description: The Cgroup driver used by docker containers. If the check result is systemd, containers may have insufficient file descriptors. If the check result is dockerd is not running, start the docker service first: systemctl start docker

Adjustment: modify or create /etc/docker/daemon.json, add the exec-opts configuration, and set the Cgroup driver to cgroupfs:

{
"exec-opts": ["native.cgroupdriver=cgroupfs"]
}

Restart the docker service for the change to take effect.

DockerdFileNr

Description: The number of file descriptors in docker. If dockerd is not running, you need to start dockerd (systemctl start docker).

Permanent adjustment: For example, if you start the docker service via systemd, set LimitNOFILE=102400 in the file docker.service.