Анхны container ажиллуулах
Онол хангалттай — практик эхэлцгээе. Энэ хичээлд docker run командыг янз бүрийн горимд ашиглана.
docker run — үндсэн команд
docker run нь image-аас container үүсгэж, ажиллуулдаг үндсэн команд.
docker run ubuntu
Юу болов? Ubuntu image татаж, container ажиллуулав — гэхдээ шууд зогслоо. Яагаад?
Ubuntu image нь bash shell ажиллуулдаг боловч terminal-тай холбогдоогүй тул хийх зүйлгүй гэж үзэж зогссон. Ажиллаж байгаа container харахад:
docker ps
Хоосон гарна. Бүх container харахад:
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 эмулятор холбо
docker run -it ubuntu bash
Одоо Ubuntu container-ийн bash shell-д орлоо:
root@a3f2b1c4d5e6:/#
Энд аль ч Ubuntu команд ажиллуулж болно:
ls /
cat /etc/os-release
apt update
apt install curl -y
curl --version
Shell-ээс гарахад:
exit
Container автоматаар зогсно.
Detached горим (-d)
Background-д ажиллуулахын тулд -d флаг ашиглана. Вэб сервер шиг удаан ажиллах container-т тохиромжтой.
docker run -d nginx
Гаралт нь container ID байна:
7b3c2a1f9e8d4c6b5a0f3e2d1c4b7a8f9e0d3c2b1a4f5e6d7c8b9a0f
Container background-д ажиллаж байна. Шалгах:
docker ps
CONTAINER ID IMAGE COMMAND STATUS PORTS
7b3c2a1f9e8d nginx "/docker-entrypoint.…" Up 2 minutes 80/tcp
Container нэрлэх (--name)
Docker автоматаар санамсаргүй нэр өгдөг (жишээ нь happy_einstein). Өөрөө нэр өгөхөд:
docker run -d --name my-nginx nginx
Одоо container-ийг ID-гаар биш нэрээр удирдаж болно:
docker stop my-nginx
docker start my-nginx
docker restart my-nginx
docker rm my-nginx
Нэрлэсэн container дахин ажиллуулахад нэр давхцахгүйн тулд эхлээд устгах хэрэгтэй.
Нэг удаа ажиллуулах (--rm)
Container зогссоны дараа автоматаар устгахад --rm флаг ашиглана:
docker run --rm ubuntu echo "Сайн уу, Docker!"
Сайн уу, Docker!
Container ажиллаж, дуусаад автоматаар устна. docker ps -a-д харагдахгүй.
Практик жишээнүүд
Alpine Linux container:
docker run -it --rm alpine sh
Alpine нь маш жижиг (~5MB) Linux дистрибьюц. bash байхгүй тул sh ашиглана.
Python shell:
docker run -it --rm python:3.12 python
Python суулгалгүйгээр Python ашиглаж болно!
>>> print("Docker дотроос Python!")
Docker дотроос Python!
>>> exit()
Node.js shell:
docker run -it --rm node:20 node
> console.log("Node.js container дотор!")
Node.js container дотор!
> .exit
Container доторх файл систем
Container нь өөрийн тусгаарлагдсан файл системтэй:
# 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 зэрэг өдөр тутмын үндсэн командуудыг дэлгэрэнгүй үзнэ.