Docker / Анхны container ажиллуулах

Анхны container ажиллуулах

Онол хангалттай — практик эхэлцгээе. Энэ хичээлд docker run командыг янз бүрийн горимд ашиглана.

docker run — үндсэн команд

docker run нь image-аас container үүсгэж, ажиллуулдаг үндсэн команд.

bash
docker run ubuntu

Юу болов? Ubuntu image татаж, container ажиллуулав — гэхдээ шууд зогслоо. Яагаад?

Ubuntu image нь bash shell ажиллуулдаг боловч terminal-тай холбогдоогүй тул хийх зүйлгүй гэж үзэж зогссон. Ажиллаж байгаа container харахад:

bash
docker ps

Хоосон гарна. Бүх container харахад:

bash
docker ps -a
код
CONTAINER ID   IMAGE    COMMAND   CREATED         STATUS
a3f2b1c4d5e6   ubuntu   "bash"    5 seconds ago   Exited (0) 4 seconds ago

Exited (0) — амжилттай зогссон гэсэн үг.

Interactive горим (-it)

Container-тай харилцахын тулд -it флаг ашиглана:

  • -i — interactive: standard input нээлттэй байлга
  • -t — tty: terminal эмулятор холбо
bash
docker run -it ubuntu bash

Одоо Ubuntu container-ийн bash shell-д орлоо:

код
root@a3f2b1c4d5e6:/#

Энд аль ч Ubuntu команд ажиллуулж болно:

bash
ls /
cat /etc/os-release
apt update
apt install curl -y
curl --version

Shell-ээс гарахад:

bash
exit

Container автоматаар зогсно.

Detached горим (-d)

Background-д ажиллуулахын тулд -d флаг ашиглана. Вэб сервер шиг удаан ажиллах container-т тохиромжтой.

bash
docker run -d nginx

Гаралт нь container ID байна:

код
7b3c2a1f9e8d4c6b5a0f3e2d1c4b7a8f9e0d3c2b1a4f5e6d7c8b9a0f

Container background-д ажиллаж байна. Шалгах:

bash
docker ps
код
CONTAINER ID   IMAGE   COMMAND                  STATUS         PORTS
7b3c2a1f9e8d   nginx   "/docker-entrypoint.…"   Up 2 minutes   80/tcp

Container нэрлэх (--name)

Docker автоматаар санамсаргүй нэр өгдөг (жишээ нь happy_einstein). Өөрөө нэр өгөхөд:

bash
docker run -d --name my-nginx nginx

Одоо container-ийг ID-гаар биш нэрээр удирдаж болно:

bash
docker stop my-nginx
docker start my-nginx
docker restart my-nginx
docker rm my-nginx

Нэрлэсэн container дахин ажиллуулахад нэр давхцахгүйн тулд эхлээд устгах хэрэгтэй.

Нэг удаа ажиллуулах (--rm)

Container зогссоны дараа автоматаар устгахад --rm флаг ашиглана:

bash
docker run --rm ubuntu echo "Сайн уу, Docker!"
код
Сайн уу, Docker!

Container ажиллаж, дуусаад автоматаар устна. docker ps -a-д харагдахгүй.

Практик жишээнүүд

Alpine Linux container:

bash
docker run -it --rm alpine sh

Alpine нь маш жижиг (~5MB) Linux дистрибьюц. bash байхгүй тул sh ашиглана.

Python shell:

bash
docker run -it --rm python:3.12 python

Python суулгалгүйгээр Python ашиглаж болно!

python
>>> print("Docker дотроос Python!")
Docker дотроос Python!
>>> exit()

Node.js shell:

bash
docker run -it --rm node:20 node
javascript
> console.log("Node.js container дотор!")
Node.js container дотор!
> .exit

Container доторх файл систем

Container нь өөрийн тусгаарлагдсан файл системтэй:

bash
# Container дотор файл үүсгэх
docker run -it --rm ubuntu bash
root@:/# echo "туршилт" > /tmp/test.txt
root@:/# cat /tmp/test.txt
туршилт
root@:/# exit

Container зогссоны дараа тэр файл устна. Өгөгдлийг хадгалахын тулд Volume ашиглана (10-р хичээлд үзнэ).

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

docker ps, docker stop, docker rm, docker logs, docker exec зэрэг өдөр тутмын үндсэн командуудыг дэлгэрэнгүй үзнэ.