update docker
This commit is contained in:
21
scripts/docker-htop.sh
Executable file
21
scripts/docker-htop.sh
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
cd "$ROOT"
|
||||
# shellcheck source=docker-lib.sh
|
||||
source "$ROOT/scripts/docker-lib.sh"
|
||||
|
||||
docker_cmd
|
||||
|
||||
if ! "${DOCKER[@]}" ps --format '{{.Names}}' | grep -qx 'lidar-manager-limited'; then
|
||||
echo "Container chưa chạy. Khởi động: sudo docker compose up -d"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Giới hạn container:"
|
||||
print_container_limits lidar-manager-limited
|
||||
|
||||
echo
|
||||
echo "Mở htop trong container (q để thoát)..."
|
||||
exec "${DOCKER[@]}" exec -it lidar-manager-limited htop
|
||||
21
scripts/docker-lib.sh
Normal file
21
scripts/docker-lib.sh
Normal file
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
docker_cmd() {
|
||||
if docker info >/dev/null 2>&1; then
|
||||
DOCKER=(docker)
|
||||
elif sudo -n docker info >/dev/null 2>&1; then
|
||||
DOCKER=(sudo docker)
|
||||
else
|
||||
DOCKER=(sudo docker)
|
||||
fi
|
||||
}
|
||||
|
||||
print_container_limits() {
|
||||
local name="${1:-lidar-manager-limited}"
|
||||
local nano mem cpus ram_mb
|
||||
nano="$("${DOCKER[@]}" inspect -f '{{.HostConfig.NanoCpus}}' "$name")"
|
||||
mem="$("${DOCKER[@]}" inspect -f '{{.HostConfig.Memory}}' "$name")"
|
||||
cpus="$(awk "BEGIN { if ($nano > 0) printf \"%.2f\", $nano / 1000000000; else print \"unlimited\" }")"
|
||||
ram_mb=$((mem / 1048576))
|
||||
echo " CPUs quota = ${cpus} core(s), RAM max = ${ram_mb} MB"
|
||||
}
|
||||
44
scripts/docker-stats.sh
Executable file
44
scripts/docker-stats.sh
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
# shellcheck source=docker-lib.sh
|
||||
source "$ROOT/scripts/docker-lib.sh"
|
||||
|
||||
docker_cmd
|
||||
|
||||
NAME="${1:-lidar-manager-limited}"
|
||||
|
||||
if ! "${DOCKER[@]}" ps --format '{{.Names}}' | grep -qx "$NAME"; then
|
||||
echo "Container '$NAME' không chạy."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "=== docker stats (live) ==="
|
||||
"${DOCKER[@]}" stats --no-stream "$NAME"
|
||||
|
||||
echo
|
||||
echo "=== limits ==="
|
||||
print_container_limits "$NAME"
|
||||
|
||||
CID="$("${DOCKER[@]}" inspect -f '{{.Id}}' "$NAME")"
|
||||
CG="/sys/fs/cgroup"
|
||||
|
||||
echo
|
||||
echo "=== cgroup (host) ==="
|
||||
printf 'memory.usage = '
|
||||
cat "$CG/memory/docker/$CID/memory.usage_in_bytes" 2>/dev/null \
|
||||
|| cat "$CG/memory/system.slice/docker-$CID.scope/memory.usage_in_bytes" 2>/dev/null \
|
||||
|| echo "n/a"
|
||||
printf ' bytes\n'
|
||||
|
||||
printf 'cpu.cfs_quota / period = '
|
||||
cat "$CG/cpu,cpuacct/docker/$CID/cpu.cfs_quota_us" 2>/dev/null \
|
||||
|| echo -n "n/a"
|
||||
printf ' / '
|
||||
cat "$CG/cpu,cpuacct/docker/$CID/cpu.cfs_period_us" 2>/dev/null \
|
||||
|| echo "n/a"
|
||||
|
||||
echo
|
||||
echo "=== processes in container ==="
|
||||
"${DOCKER[@]}" top "$NAME"
|
||||
20
scripts/docker-up.sh
Executable file
20
scripts/docker-up.sh
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
cd "$ROOT"
|
||||
# shellcheck source=docker-lib.sh
|
||||
source "$ROOT/scripts/docker-lib.sh"
|
||||
|
||||
docker_cmd
|
||||
|
||||
if ! docker info >/dev/null 2>&1 && ! sudo -n docker info >/dev/null 2>&1; then
|
||||
echo "Cần quyền Docker. Chạy một trong hai cách:"
|
||||
echo " sudo usermod -aG docker \$USER # rồi đăng nhập lại"
|
||||
echo " sudo $0"
|
||||
fi
|
||||
|
||||
"${DOCKER[@]}" compose up --build -d
|
||||
echo "Đã chạy: http://localhost:8080/"
|
||||
echo -n "Giới hạn: "
|
||||
print_container_limits lidar-manager-limited
|
||||
Reference in New Issue
Block a user