Docker / Compose команд (up, down, logs)

Compose команд (up, down, logs)

docker compose командуудыг мэдвэл олон container-тай аппликейшнийг хялбар удирдана. Энэ хичээлд өдөр тутам хэрэглэгддэг командуудыг бүрэн судална.

docker compose up

Service-уудыг эхлүүлэх үндсэн команд.

bash
# Бүх service эхлүүлэх (foreground — log шууд харагдана)
docker compose up

# Background-д ажиллуулах (detached)
docker compose up -d

# Тодорхой service-ийг л эхлүүлэх
docker compose up -d db redis

# Image дахин build хийж эхлүүлэх
docker compose up -d --build

# Хэдэн жишээ ажиллуулах (scaling)
docker compose up -d --scale app=3

--build флаг нь Dockerfile өөрчлөгдсөн бол заавал хэрэгтэй — үгүй бол хуучин image ашиглана.

docker compose down

Service зогсоох ба устгах.

bash
# Container ба network устгах (volume хадгална)
docker compose down

# Volume ч устгах
docker compose down -v

# Image ч устгах
docker compose down --rmi all

# Зөвхөн local image устгах
docker compose down --rmi local

Ялгаа:

  • docker compose stop — Container зогсоона, устгахгүй. Дахин start хийж болно.
  • docker compose down — Container ба network устгана.
  • docker compose down -v — Бүгд + volume устгана. Өгөгдөл алдагдана!

docker compose logs

Service-ийн log харах.

bash
# Бүх service-ийн log
docker compose logs

# Тодорхой service-ийн log
docker compose logs app
docker compose logs db

# Бодит цаг хугацаанд дагах
docker compose logs -f
docker compose logs -f app

# Сүүлийн N мөр
docker compose logs --tail 100 app

# Цаг хугацааны тэмдэгтэй
docker compose logs -t app

# Хамтад нь
docker compose logs -f -t --tail 50 app

Олон service-ийг нэгэн зэрэг дагах:

bash
docker compose logs -f app db redis

Log-д service нэр угтвар болж харагдана:

код
app-1   | Server 3000 port дээр ажиллаж байна
db-1    | database system is ready to accept connections
redis-1 | Ready to accept connections

docker compose ps

Service-уудын төлөв харах.

bash
# Бүх service-ийн товч мэдээлэл
docker compose ps

# Дэлгэрэнгүй
docker compose ps --all

# Зөвхөн нэг service
docker compose ps app

Гаралт:

код
NAME          IMAGE         COMMAND                  SERVICE   STATUS         PORTS
myapp-app-1   myapp:1.0     "node index.js"          app       running        0.0.0.0:3000->3000/tcp
myapp-db-1    postgres:16   "docker-entrypoint.s…"   db        running        5432/tcp
myapp-redis-1 redis:7       "docker-entrypoint.s…"   redis     running        6379/tcp

docker compose exec

Ажиллаж байгаа container дотор команд ажиллуулах.

bash
# Interactive shell нээх
docker compose exec app sh
docker compose exec db bash

# Нэг команд ажиллуулах
docker compose exec app node --version
docker compose exec db psql -U postgres -d mydb

# PostgreSQL дотор SQL ажиллуулах
docker compose exec db psql -U postgres -c "SELECT COUNT(*) FROM users;"

# Root хэрэглэгчээр нэвтрэх
docker compose exec --user root app sh

docker compose build

Image build хийх (ажиллуулахгүй).

bash
# Бүх service build хийх
docker compose build

# Тодорхой service build хийх
docker compose build app

# Cache ашиглахгүй
docker compose build --no-cache app

# Build аргумент дамжуулах
docker compose build --build-arg NODE_ENV=production app

docker compose pull

Registry-аас image шинэчлэх.

bash
# Бүх image татах
docker compose pull

# Тодорхой service-ийн image татах
docker compose pull db redis

docker compose restart

Service дахин эхлүүлэх.

bash
# Бүх service дахин эхлүүлэх
docker compose restart

# Тодорхой service
docker compose restart app

# Хугацааны хязгаарт зогсоох (секунд)
docker compose restart -t 30 app

docker compose stop / start

Container зогсоох ба дахин эхлүүлэх (устгахгүй).

bash
# Зогсоох
docker compose stop
docker compose stop app

# Эхлүүлэх (зогссон container)
docker compose start
docker compose start app db

docker compose run

Нэг удаагийн ажиллуулалт — шинэ container үүсгэж команд ажиллуулаад зогсоно.

bash
# Database migration ажиллуулах
docker compose run --rm app npm run migrate

# Test ажиллуулах
docker compose run --rm app npm test

# Тодорхой команд
docker compose run --rm db psql -U postgres

--rm — дуусаад container автоматаар устна.

docker compose config

Compose файлын тохиргоог шалгах — .env хувьсагчид орлуулагдсан эцсийн тохиргоог харуулна.

bash
docker compose config

# Зөвхөн service нэрсийг харах
docker compose config --services

# Зөвхөн volume нэрсийг харах
docker compose config --volumes

Debug хийхэд маш хэрэгтэй — .env файлын утгууд зөв орж байгаа эсэхийг шалгана.

Өдөр тутмын workflow

Хөгжүүлэлт эхлүүлэх:

bash
docker compose up -d
docker compose logs -f app

Код өөрчилсний дараа дахин build:

bash
docker compose up -d --build app
docker compose logs -f app

Алдаа дибаг хийх:

bash
# Log харах
docker compose logs --tail 50 app

# Container дотор орох
docker compose exec app sh

# Environment variable шалгах
docker compose exec app env | grep DB

Бүгдийг зогсоох:

bash
# Хадгалалт хамт зогсоох (өгөгдөл хадгалагдана)
docker compose down

# Бүгдийг цэвэрлэх (шинэ эхлэл)
docker compose down -v

Хурдан лавлах хүснэгт

| Команд | Тайлбар | | ------------------------------ | ------------------------------ | | docker compose up -d | Background-д эхлүүлэх | | docker compose up -d --build | Дахин build хийж эхлүүлэх | | docker compose down | Зогсоож устгах | | docker compose down -v | Зогсоож устгах + volume устгах | | docker compose logs -f | Log бодит цаг хугацаанд дагах | | docker compose ps | Төлөв харах | | docker compose exec app sh | Container дотор shell нээх | | docker compose build | Image build хийх | | docker compose restart app | Service дахин эхлүүлэх | | docker compose run --rm app | Нэг удаагийн ажиллуулалт | | docker compose config | Тохиргоо шалгах |

Дараагийн хичээлд:

Multi-stage build — нэг Dockerfile-д хэд хэдэн FROM ашиглан жижиг, аюулгүй production image үүсгэнэ.