Docker Uvodni vodič: Brzo pokrenite kontejnerizaciju svoje aplikacije
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 datotekurequirements.txtiz trenutnog direktorija u direktorij/appspremnika.)RUN pip install --no-cache-dir -r requirements.txt: 在容器内运行pip命令安装requirements.txt文件中指定的依赖项。--no-cache-dir参数可以减小镜像的大小。(Pokreće naredbupipunutar spremnika za instalaciju ovisnosti navedenih u datotecirequirements.txt. Parametar--no-cache-dirmože smanjiti veličinu slike.)COPY app.py .: 将当前目录下的app.py文件复制到容器的/app目录。(Kopira datotekuapp.pyiz trenutnog direktorija u direktorij/appspremnika.)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.





