Docker Уводни Водич: Брзо Контејнеризујте Вашу Апликацију

2/18/2026
5 min read

markdown\n# Docker Уводни Водич: Брзо Контејнеризујте Вашу Апликацију\n\nDocker је постао незаобилазан део модерног развоја и имплементације софтвера. Иако су дискусије о Kubernetes-у свеприсутне, Docker је и даље омиљени алат многих компанија за изградњу, тестирање и имплементацију апликација. Овај чланак ће вас брзо увести у Docker, упознати са његовим основним концептима и пружити практичан пример који ће вам помоћи да почнете да контејнеризујете вашу апликацију.\n\n## Docker Основни Концепти\n\nПре него што почнете са праксом, важно је разумети неке од основних Docker концепата:\n\n* **Слика (Image):** Слика је шаблон само за читање који садржи све што је потребно за покретање апликације: код, окружење за извршавање, системске алате, библиотеке и зависности. Слично је слици виртуелне машине, али је лакша.\n\n* **Контејнер (Container):** Контејнер је покренута инстанца креирана од слике. То је инстанца слике у времену извршавања, која садржи апликацију и све њене зависности. Контејнери су међусобно изоловани и имају сопствени систем датотека, процесе и мрежни простор.\n\n* **Docker Hub:** Docker Hub је јавно складиште слика, са којег можете преузети унапред изграђене слике, или уплодовати своје слике. Слично је GitHub-у, али је специјализован за Docker слике.\n\n* **Dockerfile:** Dockerfile је текстуална датотека која садржи све инструкције за изградњу Docker слике. Писањем Dockerfile-а, можете аутоматизовати процес креирања слике.\n\n* **Docker Compose:** Docker Compose је алат за дефинисање и покретање Docker апликација са више контејнера. Омогућава вам да користите YAML датотеку за конфигурисање сервиса апликације, а затим користите једну команду за покретање или заустављање свих сервиса.\n\n## Docker Инсталација\n\nПрво, морате инсталирати Docker. Docker нуди инсталационе пакете за различите оперативне системе. Посетите [Docker званичну веб страницу](https://www.docker.com/get-started/) и пратите одговарајућа упутства за инсталацију.\n\nНакон инсталације, можете проверити да ли је Docker правилно инсталиран покретањем команде `docker --version`.\n\n## Контејнеризација једноставне Python Апликације\n\nКреираћемо једноставну Python апликацију и користити Docker да је контејнеризујемо.\n\n### 1. Креирање Python Апликације\n\nКреирајте датотеку под називом `app.py`, која садржи следећи код:\n\npython\nfrom flask import Flask\napp = Flask(name)\n\n@app.route(# 将应用程序代码复制到工作目录 COPY app.py .

暴露端口 5000

EXPOSE 5000

定义启动命令

CMD ["python", "app.py"]


**Dockerfile 说明:**

*   `FROM python:3.9-slim-buster`:  指定基础镜像为 Python 3.9 的精简版。 (Određuje baznu sliku kao pojednostavljenu verziju Python 3.9).
*   `WORKDIR /app`:  设置容器内的工作目录为 `/app`。 (Postavlja radni direktorijum unutar kontejnera na `/app`).
*   `COPY requirements.txt .`:  将当前目录下的 `requirements.txt` 文件复制到容器的 `/app` 目录。 (Kopira `requirements.txt` datoteku iz trenutnog direktorijuma u `/app` direktorijum kontejnera).
*   `RUN pip install --no-cache-dir -r requirements.txt`:  在容器内运行 `pip` 命令安装 `requirements.txt` 文件中指定的依赖项。  `--no-cache-dir`  参数可以减小镜像的大小。 (Pokreće `pip` komandu unutar kontejnera da instalira zavisnosti navedene u `requirements.txt` datoteci. `--no-cache-dir` parametar može smanjiti veličinu slike).
*   `COPY app.py .`:  将当前目录下的 `app.py` 文件复制到容器的 `/app` 目录。 (Kopira `app.py` datoteku iz trenutnog direktorijuma u `/app` direktorijum kontejnera).
*   `EXPOSE 5000`:  声明容器将监听 5000 端口。 (Deklariše da će kontejner slušati na portu 5000).
*   `CMD ["python", "app.py"]`:  定义容器启动时执行的命令。 (Definiše komandu koja se izvršava kada se kontejner pokrene).

### 4. 构建 Docker 镜像

在包含 `Dockerfile` 的目录下,运行以下命令构建 Docker 镜像:(U direktorijumu koji sadrži `Dockerfile`, pokrenite sledeću komandu da biste izgradili Docker sliku):

```bash
docker build -t my-python-app .
  • docker build: 构建镜像的命令。 (Komanda za izgradnju slike).
  • -t my-python-app: 为镜像指定一个名称 (my-python-app)。 (Dodjeljuje ime slici (my-python-app)).
  • .: 指定 Dockerfile 所在的目录 (当前目录)。 (Određuje direktorijum u kojem se nalazi Dockerfile (trenutni direktorijum)).

构建过程可能需要一些时间,取决于网络速度和依赖项的大小。(Proces izgradnje može potrajati neko vreme, u zavisnosti od brzine mreže i veličine zavisnosti).

5. 运行 Docker 容器

使用以下命令运行 Docker 容器:(Koristite sledeću komandu da pokrenete Docker kontejner):

docker run -d -p 5000:5000 my-python-app
  • docker run: 运行容器的命令。 (Komanda za pokretanje kontejnera).
  • -d: 以分离模式运行容器 (在后台运行)。 (Pokreće kontejner u odvojenom režimu (radi u pozadini)).
  • -p 5000:5000: 将宿主机的 5000 端口映射到容器的 5000 端口。 (Mapira port 5000 host mašine na port 5000 kontejnera).
  • my-python-app: 指定要使用的镜像名称。 (Određuje ime slike koja će se koristiti).

6. 验证应用程序

在浏览器中访问 http://localhost:5000,你应该能看到 "Hello, Docker!"。(Posetite http://localhost:5000 u pregledaču, trebalo bi da vidite "Hello, Docker!").

7. 停止和删除容器

使用以下命令停止容器:(Koristite sledeću komandu da zaustavite kontejner):

docker stop 

`` 可以通过 docker ps 命令查看。 (Može se videti pomoću komande docker ps).

使用以下命令删除容器:(Koristite sledeću komandu da obrišete kontejner):

docker rm 

Docker Compose 入门

如果你的应用程序由多个服务组成,可以使用 Docker Compose 来管理它们。(Ako se vaša aplikacija sastoji od više servisa, možete koristiti Docker Compose da biste ih upravljali).

1. 创建 docker-compose.yml 文件

创建一个名为 docker-compose.yml 的文件,并添加以下内容:(Napravite datoteku pod nazivom docker-compose.yml i dodajte sledeći sadržaj):

version: "3.9"
services:
  web:
    image: my-python-app
    ports:
      - "5000:5000"

docker-compose.yml 说明:

  • version: "3.9": Određuje verziju Docker Compose datoteke.
  • services: Definiše servise aplikacije.
  • web: Definiše servis pod nazivom "web".
  • image: my-python-app: Određuje image koji servis koristi.
  • ports: Definiše mapiranje portova.

2. Pokretanje aplikacije

U direktorijumu koji sadrži docker-compose.yml datoteku, pokrenite sledeću komandu da biste pokrenuli aplikaciju:

docker-compose up -d
  • docker-compose up: Komanda za pokretanje aplikacije.
  • -d: Pokreće kontejnere u odvojenom (detached) režimu.

3. Zaustavljanje aplikacije

Koristite sledeću komandu da zaustavite aplikaciju:

docker-compose down

Docker bezbednosne najbolje prakse

Kao što se može videti iz diskusije, bezbednost Docker image-a je važno pitanje. Sledi nekoliko Docker bezbednosnih najboljih praksi:

  • Koristite zvanične image-e: Koristite zvanične image-e kad god je to moguće, jer su oni obično skenirani i održavani u pogledu bezbednosti.
  • Skenirajte image-e na ranjivosti: Koristite alate kao što je Trivy da skenirate image-e na poznate ranjivosti i blagovremeno ažurirajte image-e.
  • Koristite princip minimalnih privilegija: Izbegavajte pokretanje kontejnera kao root korisnik.
  • Ograničite resurse kontejnera: Koristite cgroups da ograničite upotrebu CPU-a i memorije kontejnera.
  • Redovno ažurirajte image-e: Održavajte image-e ažurnim da biste popravili bezbednosne propuste.
  • Koristite alate za bezbednosno skeniranje: Alati kao što su Snyk, Clair itd. se mogu integrisati u vaš CI/CD proces da automatski skeniraju image-e na ranjivosti.

ZaključakOvaj članak pruža brzi vodič za početak rada sa Docker-om, pokrivajući osnovne koncepte, korake instalacije i jednostavan primer kontejnerizacije Python aplikacije. Učenjem ovih osnova, možete početi da koristite Docker za izgradnju, testiranje i implementaciju vaših aplikacija. Zapamtite, bezbednost je od suštinskog značaja, uvek obratite pažnju na bezbednost Docker image-a i preduzmite odgovarajuće mere da zaštitite svoje aplikacije. Iako je Kubernetes moćan u orkestraciji kontejnera velikih razmera, Docker je i dalje jednostavno i efikasno rešenje u mnogim scenarijima. Ovladavanjem Docker-om, bićete bolje opremljeni da se nosite sa izazovima modernog razvoja i implementacije softvera.

Published in Technology

You Might Also Like