Docker-ге кіріспе: Қолданбаларыңызды контейнерлеуді жылдам бастау
# Docker-ге кіріспе: Қолданбаларыңызды контейнерлеуді жылдам бастау
Docker қазіргі заманғы бағдарламалық жасақтаманы әзірлеу мен орналастырудың ажырамас бөлігіне айналды. Kubernetes төңірегіндегі талқылаулар кеңінен таралғанымен, Docker әлі де көптеген компаниялар үшін қолданбаларды құру, сынау және орналастыру үшін таңдаулы құрал болып табылады. Бұл мақала сізді Docker-мен жылдам таныстырады, оның негізгі тұжырымдарын түсіндіреді және қолданбаларыңызды контейнерлеуді бастауға көмектесетін практикалық мысал ұсынады.
## Docker негізгі тұжырымдамалары
Тәжірибеге кіріспес бұрын, Docker-дің кейбір негізгі тұжырымдарын түсіну маңызды:
* **Бейне (Image):** Бейне - бұл тек оқуға арналған шаблон, ол қолданбаны іске қосу үшін қажет нәрсенің бәрін қамтиды: код, орындалу ортасы, жүйелік құралдар, кітапханалар және тәуелділіктер. Виртуалды машина бейнесіне ұқсас, бірақ жеңілірек.
* **Контейнер (Container):** Контейнер - бұл бейнеден жасалған жұмыс істеп тұрған дана. Бұл бейненің жұмыс уақытындағы данасы, ол қолданбаны және оның барлық тәуелділіктерін қамтиды. Контейнерлер бір-бірінен оқшауланған, олардың өз файлдық жүйесі, процестері және желілік кеңістігі бар.
* **Docker Hub:** Docker Hub - бұл алдын ала құрастырылған бейнелерді жүктеп алуға немесе өзіңіздің бейнелеріңізді жүктеуге болатын жалпыға ортақ бейне қоймасы. GitHub-қа ұқсас, бірақ Docker бейнелеріне арналған.
* **Dockerfile:** Dockerfile - бұл Docker бейнесін құру үшін барлық нұсқауларды қамтитын мәтіндік файл. Dockerfile жазу арқылы сіз бейне құру процесін автоматтандыра аласыз.
* **Docker Compose:** Docker Compose - бұл көп контейнерлі Docker қолданбаларын анықтау және іске қосу құралы. Ол қолданба қызметтерін YAML файлы арқылы конфигурациялауға, содан кейін барлық қызметтерді бір командамен іске қосуға немесе тоқтатуға мүмкіндік береді.
## Docker орнату
Алдымен Docker-ді орнату керек. Docker әртүрлі операциялық жүйелерге арналған орнату пакеттерін ұсынады. [Docker ресми сайтына](https://www.docker.com/get-started/) кіріп, сәйкес нұсқауларды орындаңыз.
Орнату аяқталғаннан кейін Docker дұрыс орнатылғанын тексеру үшін `docker --version` командасын іске қосуға болады.
## Қарапайым Python қолданбасын контейнерлеу
Біз қарапайым Python қолданбасын жасаймыз және оны Docker көмегімен контейнерлейміз.
### 1. Python қолданбасын жасау
`app.py` деп аталатын файл жасаңыз, оған келесі кодты енгізіңіз:
```python
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, Docker!"
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0')
Бұл қарапайым Flask қолданбасы түбірлік жолда / "Hello, Docker!" қайтарады.
2. requirements.txt файлын жасау
Қолданба Flask кітапханасына тәуелді, біз бұл тәуелділіктерді жариялау үшін requirements.txt файлын жасауымыз керек.
Flask
3. Dockerfile жасау
Dockerfile деп аталатын файл жасаңыз және келесі мазмұнды қосыңыз:
# Ресми Python бейнесін негізгі бейне ретінде пайдаланыңыз
FROM python:3.9-slim-buster
# Жұмыс каталогын орнатыңыз
WORKDIR /app
# requirements.txt файлын жұмыс каталогына көшіріңіз
COPY requirements.txt .
# Тәуелділіктерді орнатыңыз
RUN pip install --no-cache-dir -r requirements.txt
```# Қолданба кодын жұмыс каталогына көшіру
COPY app.py .
# 5000 портын ашу
EXPOSE 5000
# Іске қосу командасын анықтау
CMD ["python", "app.py"]
Dockerfile түсіндірмесі:
FROM python:3.9-slim-buster: Негізгі бейнені Python 3.9-дың жеңілдетілген нұсқасы ретінде көрсетеді.WORKDIR /app: Контейнер ішіндегі жұмыс каталогын/appретінде орнатады.COPY requirements.txt .: Ағымдағы каталогтағыrequirements.txtфайлын контейнердің/appкаталогына көшіреді.RUN pip install --no-cache-dir -r requirements.txt: Контейнер ішіндеpipкомандасын іске қосып,requirements.txtфайлында көрсетілген тәуелділіктерді орнатады.--no-cache-dirпараметрі бейненің көлемін кішірейтеді.COPY app.py .: Ағымдағы каталогтағыapp.pyфайлын контейнердің/appкаталогына көшіреді.EXPOSE 5000: Контейнердің 5000 портын тыңдайтынын жариялайды.CMD ["python", "app.py"]: Контейнер іске қосылғанда орындалатын команданы анықтайды.
4. Docker бейнесін құру
Dockerfile бар каталогта Docker бейнесін құру үшін келесі команданы орындаңыз:
docker build -t my-python-app .
docker build: Бейнені құру командасы.-t my-python-app: Бейнеге атау береді (my-python-app)..: Dockerfile орналасқан каталогты көрсетеді (ағымдағы каталог).
Құру процесі желі жылдамдығына және тәуелділіктердің көлеміне байланысты біраз уақыт алуы мүмкін.
5. Docker контейнерін іске қосу
Docker контейнерін іске қосу үшін келесі команданы пайдаланыңыз:
docker run -d -p 5000:5000 my-python-app
docker run: Контейнерді іске қосу командасы.-d: Контейнерді бөлек режимде іске қосады (фонда іске қосылады).-p 5000:5000: Хост машинасының 5000 портын контейнердің 5000 портына картаға түсіреді.my-python-app: Қолданылатын бейненің атауын көрсетеді.
6. Қолданбаны тексеру
Браузерде http://localhost:5000 мекенжайына кіріңіз, сіз "Hello, Docker!" дегенді көруіңіз керек.
7. Контейнерді тоқтату және жою
Контейнерді тоқтату үшін келесі команданы пайдаланыңыз:
docker stop
`` командасы арқылы көруге болады docker ps.
Контейнерді жою үшін келесі команданы пайдаланыңыз:
docker rm
Docker Compose-пен жұмысты бастау
Егер сіздің қолданбаңыз бірнеше қызметтен тұрса, оларды басқару үшін Docker Compose-ді пайдалануға болады.
1. docker-compose.yml файлын жасау
docker-compose.yml деп аталатын файл жасаңыз және келесі мазмұнды қосыңыз:
version: "3.9"
services:
web:
image: my-python-app
ports:
- "5000:5000"
docker-compose.yml түсіндірмесі:* version: "3.9": Docker Compose файлының нұсқасын көрсетеді.
services: Қосымшаның сервистерін анықтайды.web: "web" деп аталатын сервисті анықтайды.image: my-python-app: Сервис қолданатын имиджді көрсетеді.ports: Порттарды салыстыруды анықтайды.
2. Қосымшаны іске қосу
docker-compose.yml файлы бар каталогта қосымшаны іске қосу үшін келесі команданы орындаңыз:
docker-compose up -d
docker-compose up: Қосымшаны іске қосу командасы.-d: Контейнерді бөлек режимде іске қосады.
3. Қосымшаны тоқтату
Қосымшаны тоқтату үшін келесі команданы қолданыңыз:
docker-compose down
Docker қауіпсіздігінің үздік тәжірибелері
Талқылаудан көрініп тұрғандай, Docker имидждерінің қауіпсіздігі маңызды мәселе. Төменде Docker қауіпсіздігінің кейбір үздік тәжірибелері берілген:
- Ресми имидждерді пайдаланыңыз: Мүмкіндігінше ресми ұсынылған имидждерді пайдаланыңыз, бұл имидждер әдетте қауіпсіздік сканерлеуінен өтеді және қолдау көрсетіледі.
- Имидждердегі осалдықтарды сканерлеңіз: Trivy сияқты құралдарды қолданып, имидждердегі белгілі осалдықтарды сканерлеңіз және имидждерді уақытылы жаңартыңыз.
- Ең аз рұқсаттар қағидасын қолданыңыз: Контейнерлерді root пайдаланушысы ретінде іске қосудан аулақ болыңыз.
- Контейнер ресурстарын шектеңіз: cgroups көмегімен контейнердің CPU және жадты пайдалануын шектеңіз.
- Имидждерді үнемі жаңартыңыз: Қауіпсіздік осалдықтарын түзету үшін имидждерді жаңартыңыз.
- Қауіпсіздік сканерлеу құралдарын пайдаланыңыз: Snyk, Clair сияқты құралдарды CI/CD процесіне біріктіруге болады, бұл имидждердегі осалдықтарды автоматты түрде сканерлейді.





