Docker Uvodni vodič: Brzo pokrenite kontejnerizaciju svoje aplikacije

2/18/2026
6 min read

Docker Uvodni vodič: Brzo pokrenite kontejnerizaciju svoje aplikacije

Docker je postao neizostavan dio modernog razvoja i implementacije softvera. Iako su rasprave o Kubernetesu sveprisutne, Docker je i dalje preferirani alat mnogih tvrtki za izgradnju, testiranje i implementaciju aplikacija. Ovaj će vas članak brzo uvesti u Docker, upoznati vas s njegovim temeljnim konceptima i pružiti praktičan primjer koji će vam pomoći da započnete s kontejnerizacijom svoje aplikacije.

Docker Temeljni koncepti

Prije nego što započnete s praksom, važno je razumjeti neke od temeljnih koncepata Dockera:

  • Slika (Image): Slika je predložak samo za čitanje koji sadrži sve što je potrebno za pokretanje aplikacije: kod, okruženje izvođenja, sistemske alate, biblioteke i ovisnosti. Slično je slici virtualnog stroja, ali je lakša.

  • Kontejner (Container): Kontejner je pokrenuta instanca stvorena iz slike. To je instanca slike u vremenu izvođenja koja sadrži aplikaciju i sve njezine ovisnosti. Kontejneri su međusobno izolirani i imaju vlastiti datotečni sustav, procese i mrežni prostor.

  • Docker Hub: Docker Hub je javno spremište slika s kojeg možete preuzeti unaprijed izgrađene slike ili prenijeti vlastite slike. Slično je GitHubu, ali je specijaliziran za Docker slike.

  • Dockerfile: Dockerfile je tekstualna datoteka koja sadrži sve upute za izgradnju Docker slike. Pisanjem Dockerfilea možete automatizirati proces stvaranja slike.

  • Docker Compose: Docker Compose je alat za definiranje i pokretanje Docker aplikacija s više kontejnera. Omogućuje vam konfiguriranje usluga aplikacije pomoću YAML datoteke, a zatim pokretanje ili zaustavljanje svih usluga jednom naredbom.

Instalacija Dockera

Prvo morate instalirati Docker. Docker nudi instalacijske pakete za različite operativne sustave. Posjetite Docker službenu web stranicu i slijedite odgovarajuće upute za instalaciju.

Nakon instalacije, možete provjeriti je li Docker ispravno instaliran pokretanjem naredbe docker --version.

Kontejnerizacija jednostavne Python aplikacije

Stvorit ćemo jednostavnu Python aplikaciju i kontejnerizirati je pomoću Dockera.

1. Stvaranje Python aplikacije

Stvorite datoteku pod nazivom app.py koja sadrži sljedeći kod:

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')

Ova jednostavna Flask aplikacija vratit će "Hello, Docker!" na korijenskoj putanji /.

2. Stvaranje requirements.txt datoteke

Aplikacija ovisi o Flask biblioteci, pa moramo stvoriti datoteku requirements.txt da bismo deklarirali te ovisnosti.

Flask

3. Stvaranje Dockerfilea

Stvorite datoteku pod nazivom Dockerfile i dodajte sljedeći sadržaj:

# Koristite službenu Python sliku kao osnovnu sliku
FROM python:3.9-slim-buster

# Postavite radni direktorij
WORKDIR /app

# Kopirajte requirements.txt datoteku u radni direktorij
COPY requirements.txt .

# Instalirajte ovisnosti
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 的精简版。(Određuje baznu sliku kao pojednostavljenu verziju Pythona 3.9.)
  • WORKDIR /app: 设置容器内的工作目录为 /app。(Postavlja radni direktorij unutar spremnika na /app.)
  • COPY requirements.txt .: 将当前目录下的 requirements.txt 文件复制到容器的 /app 目录。(Kopira datoteku requirements.txt iz trenutnog direktorija u direktorij /app spremnika.)
  • RUN pip install --no-cache-dir -r requirements.txt: 在容器内运行 pip 命令安装 requirements.txt 文件中指定的依赖项。 --no-cache-dir 参数可以减小镜像的大小。(Pokreće naredbu pip unutar spremnika za instalaciju ovisnosti navedenih u datoteci requirements.txt. Parametar --no-cache-dir može smanjiti veličinu slike.)
  • COPY app.py .: 将当前目录下的 app.py 文件复制到容器的 /app 目录。(Kopira datoteku app.py iz trenutnog direktorija u direktorij /app spremnika.)
  • EXPOSE 5000: 声明容器将监听 5000 端口。(Izjavljuje da će spremnik slušati na portu 5000.)
  • CMD ["python", "app.py"]: 定义容器启动时执行的命令。(Definira naredbu koja se izvršava kada se spremnik pokrene.)

4. 构建 Docker 镜像

在包含 Dockerfile 的目录下,运行以下命令构建 Docker 镜像:(U direktoriju koji sadrži Dockerfile, pokrenite sljedeću naredbu za izgradnju Docker slike:)

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

构建过程可能需要一些时间,取决于网络速度和依赖项的大小。(Proces izgradnje može potrajati neko vrijeme, ovisno o brzini mreže i veličini ovisnosti.)

5. 运行 Docker 容器

使用以下命令运行 Docker 容器:(Koristite sljedeću naredbu za pokretanje Docker spremnika:)

docker run -d -p 5000:5000 my-python-app
  • docker run: 运行容器的命令。(Naredba za pokretanje spremnika.)
  • -d: 以分离模式运行容器 (在后台运行)。(Pokreće spremnik u odvojenom načinu rada (pokreće se u pozadini).)
  • -p 5000:5000: 将宿主机的 5000 端口映射到容器的 5000 端口。(Mapira port 5000 hosta na port 5000 spremnika.)
  • my-python-app: 指定要使用的镜像名称。(Određuje naziv slike koju želite koristiti.)

6. 验证应用程序

在浏览器中访问 http://localhost:5000,你应该能看到 "Hello, Docker!"。(Posjetite http://localhost:5000 u pregledniku, trebali biste vidjeti "Hello, Docker!")

7. 停止和删除容器

使用以下命令停止容器:(Koristite sljedeću naredbu za zaustavljanje spremnika:)

docker stop 

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

使用以下命令删除容器:(Koristite sljedeću naredbu za brisanje spremnika:)

docker rm 

Docker Compose 入门

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

1. 创建 docker-compose.yml 文件

创建一个名为 docker-compose.yml 的文件,并添加以下内容:(Stvorite datoteku pod nazivom docker-compose.yml i dodajte sljedeć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: Definira servise aplikacije.
  • web: Definira servis pod nazivom "web".
  • image: my-python-app: Određuje sliku koju servis koristi.
  • ports: Definira mapiranje portova.

2. Pokretanje aplikacije

U direktoriju koji sadrži docker-compose.yml datoteku, pokrenite sljedeću naredbu za pokretanje aplikacije:

docker-compose up -d
  • docker-compose up: Naredba za pokretanje aplikacije.
  • -d: Pokreće spremnik u odvojenom načinu rada.

3. Zaustavljanje aplikacije

Koristite sljedeću naredbu za zaustavljanje aplikacije:

docker-compose down

Docker sigurnosne najbolje prakse

Kao što se može vidjeti iz rasprave, sigurnost Docker slika je važno pitanje. Slijede neke Docker sigurnosne najbolje prakse:

  • Koristite službene slike: Koristite službeno dostupne slike kad god je to moguće, jer su te slike obično skenirane i održavane radi sigurnosti.
  • Skenirajte slike za ranjivosti: Koristite alate kao što je Trivy za skeniranje poznatih ranjivosti u slikama i pravovremeno ažurirajte slike.
  • Koristite načelo najmanjih privilegija: Izbjegavajte pokretanje spremnika kao root korisnik.
  • Ograničite resurse spremnika: Koristite cgroups za ograničavanje upotrebe CPU-a i memorije spremnika.
  • Redovito ažurirajte slike: Održavajte slike ažurnima kako biste popravili sigurnosne ranjivosti.
  • Koristite alate za sigurnosno skeniranje: Alati poput Snyk, Clair itd. mogu se integrirati u vaš CI/CD proces za automatsko skeniranje ranjivosti slika.

ZaključakOvaj članak pruža brzi vodič za Docker, pokrivajući temeljne koncepte, korake instalacije i jednostavan primjer kontejnerizacije Python aplikacije. Učenjem ovih osnova, možete početi koristiti Docker za izgradnju, testiranje i implementaciju vaših aplikacija. Zapamtite, sigurnost je ključna, uvijek obratite pozornost na sigurnost Docker slika i poduzmite odgovarajuće mjere za zaštitu vaše aplikacije. Iako je Kubernetes moćan u orkestraciji kontejnera velikih razmjera, Docker je i dalje jednostavno i učinkovito rješenje u mnogim scenarijima. Ovladavanjem Dockerom, bit ćete bolje opremljeni za suočavanje s izazovima modernog razvoja i implementacije softvera.

Published in Technology

You Might Also Like