Docker / Container inspect ба debugging
Container inspect ба debugging
Container ажиллахгүй байх, санаандгүй зогсох, буруу үр дүн гарах зэрэг асуудал гардаг. Эдгээрийг шийдэх хэрэгсэл ба арга техникийг энэ хичээлд үзнэ.
docker inspect
Container эсвэл image-ийн бүрэн мэдээллийг JSON форматаар харуулна:
bash
docker inspect mycontainer
Гаралт нь маш урт тул тодорхой талбар сонгоно:
bash
# IP хаяг харах
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycontainer
# Mount цэгүүд харах
docker inspect --format='{{json .Mounts}}' mycontainer | python3 -m json.tool
# Environment variable харах
docker inspect --format='{{json .Config.Env}}' mycontainer
# Restart тоолол харах
docker inspect --format='{{.RestartCount}}' mycontainer
# Container ажиллаж байгаа эсэх
docker inspect --format='{{.State.Status}}' mycontainer
# running / exited / paused
docker stats
Ажиллаж байгаа container-уудын CPU, санах ой, сүлжээний хэрэглээг бодит цагт харна:
bash
# Бүх container-ийн статистик (live)
docker stats
# Тодорхой container
docker stats mycontainer
# Нэг удаа хэвлэж зогсох
docker stats --no-stream
# Форматлах
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
Гаралт:
код
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O
a1b2c3d4e5f6 mycontainer 0.5% 45.2MiB / 512MiB 8.8% 1.2kB / 800B
docker top
Container дотор ажиллаж байгаа процессуудыг харна:
bash
docker top mycontainer
# UID PID PPID CMD
# root 1234 1 node dist/index.js
# root 1456 1234 /bin/sh -c npm start
docker exec — container доторх файл харах
Container дотор орж шалгах:
bash
# Bash shell нээх
docker exec -it mycontainer bash
# Alpine-д bash байхгүй, sh ашиглана
docker exec -it mycontainer sh
# Нэг команд ажиллуулах
docker exec mycontainer ls -la /app
docker exec mycontainer cat /app/config.json
docker exec mycontainer env
Container доторх файл систем шалгах:
bash
docker exec -it mycontainer sh
# Container дотор
ls /app
cat /etc/hosts
ps aux
netstat -tlnp
docker diff
Container үүссэнээс хойш файл системд гарсан өөрчлөлтийг харна:
bash
docker diff mycontainer
# A /app/logs ← нэмэгдсэн (Added)
# C /app/config.json ← өөрчлөгдсөн (Changed)
# D /tmp/tempfile ← устсан (Deleted)
docker cp — файл хуулах
Container болон host хооронд файл хуулах:
bash
# Container → Host
docker cp mycontainer:/app/logs/error.log ./error.log
# Host → Container
docker cp ./config.json mycontainer:/app/config.json
# Фолдер хуулах
docker cp mycontainer:/app/logs ./logs
Troubleshooting алхмууд
Container эхлэхгүй байна
bash
# Зогссон container-ийн log харах
docker logs mycontainer
# Container-ийг interactive горимд ажиллуулж шалгах
docker run -it myimage sh
# Entrypoint-ийг override хийж shell нээх
docker run -it --entrypoint sh myimage
Container шууд зогсдог
bash
# Exit код харах
docker inspect --format='{{.State.ExitCode}}' mycontainer
# 0 — хэвийн зогссон
# 1 — алдаатай гарсан
# 137 — SIGKILL (санах ой дүүрсэн эсвэл docker kill)
# 143 — SIGTERM (docker stop)
# Log харах
docker logs --tail 50 mycontainer
Сүлжээний асуудал
bash
# Container-ийн IP болон port мэдээлэл
docker inspect --format='{{json .NetworkSettings}}' mycontainer
# Port binding шалгах
docker port mycontainer
# Container дотроос network шалгах
docker exec mycontainer wget -qO- http://localhost:8000/health
docker exec mycontainer ping google.com
Санах ойн асуудал
bash
# Санах ойн хязгаар шалгах
docker inspect --format='{{.HostConfig.Memory}}' mycontainer
# 0 → хязгааргүй
# 536870912 → 512MB (byte-аар)
# Бодит хэрэглээ
docker stats --no-stream mycontainer
docker events
Docker-ийн бодит цагийн event stream:
bash
# Бүх event харах
docker events
# Тодорхой container-ийн event
docker events --filter container=mycontainer
# Тодорхой төрлийн event
docker events --filter event=die
docker events --filter event=start
Дараагийн хичээлд:
Log-уудыг харах, хадгалах, эргүүлэх — docker logs командын бүх боломж болон logging driver.