Úvodní příručka k Dockeru: Rychlý start s kontejnerizací vaší aplikace
Úvodní příručka k Dockeru: Rychlý start s kontejnerizací vaší aplikace
Docker se stal nepostradatelnou součástí moderního vývoje a nasazování softwaru. Navzdory ohromnému množství diskusí kolem Kubernetes je Docker stále preferovaným nástrojem pro mnoho společností pro vytváření, testování a nasazování aplikací. Tento článek vás provede rychlým úvodem do Dockeru, seznámí vás s jeho klíčovými koncepty a poskytne praktický příklad, který vám pomůže začít s kontejnerizací vaší aplikace.
Klíčové koncepty Dockeru
Před zahájením praktických cvičení je důležité porozumět některým klíčovým konceptům Dockeru:
-
Image (Obraz): Obraz je šablona jen pro čtení, která obsahuje vše, co je potřeba ke spuštění aplikace: kód, běhové prostředí, systémové nástroje, knihovny a závislosti. Podobá se obrazu virtuálního stroje, ale je mnohem lehčí.
-
Container (Kontejner): Kontejner je spuštěná instance vytvořená z obrazu. Je to běhová instance obrazu, která obsahuje aplikaci a všechny její závislosti. Kontejnery jsou navzájem izolované a mají vlastní souborový systém, procesy a síťový prostor.
-
Docker Hub: Docker Hub je veřejné úložiště obrazů, ze kterého si můžete stáhnout předem vytvořené obrazy nebo nahrát své vlastní obrazy. Podobá se GitHubu, ale je specializovaný na obrazy Dockeru.
-
Dockerfile: Dockerfile je textový soubor, který obsahuje všechny instrukce pro sestavení obrazu Dockeru. Napsáním Dockerfile můžete automatizovat proces vytváření obrazu.
-
Docker Compose: Docker Compose je nástroj pro definování a spouštění vícekontejnerových aplikací Dockeru. Umožňuje vám konfigurovat služby aplikace pomocí souboru YAML a poté spouštět nebo zastavovat všechny služby pomocí jediného příkazu.
Instalace Dockeru
Nejprve musíte nainstalovat Docker. Docker nabízí instalační balíčky pro různé operační systémy. Navštivte oficiální web Dockeru a postupujte podle příslušných pokynů k instalaci.
Po dokončení instalace můžete ověřit, zda je Docker správně nainstalován, spuštěním příkazu docker --version.
Kontejnerizace jednoduché Python aplikace
Vytvoříme jednoduchou Python aplikaci a pomocí Dockeru ji kontejnerizujeme.
1. Vytvoření Python aplikace
Vytvořte soubor s názvem app.py s následujícím kódem:
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')
Tato jednoduchá aplikace Flask vrátí "Hello, Docker!" na kořenové cestě /.
2. Vytvoření souboru requirements.txt
Aplikace závisí na knihovně Flask, proto musíme vytvořit soubor requirements.txt pro deklaraci těchto závislostí.
Flask
3. Vytvoření Dockerfile
Vytvořte soubor s názvem Dockerfile a přidejte následující obsah:
# Použijte oficiální obraz Pythonu jako základní obraz
FROM python:3.9-slim-buster
# Nastavte pracovní adresář
WORKDIR /app
# Zkopírujte soubor requirements.txt do pracovního adresáře
COPY requirements.txt .
# Nainstalujte závislosti
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 的精简版。 - Určuje základní image jako odlehčenou verzi Pythonu 3.9.WORKDIR /app: 设置容器内的工作目录为/app。 - Nastavuje pracovní adresář uvnitř kontejneru na/app.COPY requirements.txt .: 将当前目录下的requirements.txt文件复制到容器的/app目录。 - Kopíruje souborrequirements.txtz aktuálního adresáře do adresáře/appv kontejneru.RUN pip install --no-cache-dir -r requirements.txt: 在容器内运行pip命令安装requirements.txt文件中指定的依赖项。--no-cache-dir参数可以减小镜像的大小。 - Spustí příkazpipuvnitř kontejneru pro instalaci závislostí určených v souborurequirements.txt. Parametr--no-cache-dirmůže zmenšit velikost image.COPY app.py .: 将当前目录下的app.py文件复制到容器的/app目录。 - Kopíruje souborapp.pyz aktuálního adresáře do adresáře/appv kontejneru.EXPOSE 5000: 声明容器将监听 5000 端口。 - Deklaruje, že kontejner bude naslouchat na portu 5000.CMD ["python", "app.py"]: 定义容器启动时执行的命令。 - Definuje příkaz, který se má spustit při spuštění kontejneru.
4. 构建 Docker 镜像
在包含 Dockerfile 的目录下,运行以下命令构建 Docker 镜像: - V adresáři obsahujícím Dockerfile spusťte následující příkaz pro sestavení Docker image:
docker build -t my-python-app .
docker build: 构建镜像的命令。 - Příkaz pro sestavení image.-t my-python-app: 为镜像指定一个名称 (my-python-app)。 - Určuje název pro image (my-python-app)..: 指定 Dockerfile 所在的目录 (当前目录)。 - Určuje adresář, ve kterém se nachází Dockerfile (aktuální adresář).
构建过程可能需要一些时间,取决于网络速度和依赖项的大小。 - Proces sestavení může trvat nějakou dobu, v závislosti na rychlosti sítě a velikosti závislostí.
5. 运行 Docker 容器
使用以下命令运行 Docker 容器: - Spusťte Docker kontejner pomocí následujícího příkazu:
docker run -d -p 5000:5000 my-python-app
docker run: 运行容器的命令。 - Příkaz pro spuštění kontejneru.-d: 以分离模式运行容器 (在后台运行)。 - Spustí kontejner v odděleném režimu (běží na pozadí).-p 5000:5000: 将宿主机的 5000 端口映射到容器的 5000 端口。 - Mapuje port 5000 hostitele na port 5000 kontejneru.my-python-app: 指定要使用的镜像名称。 - Určuje název image, která se má použít.
6. 验证应用程序
在浏览器中访问 http://localhost:5000,你应该能看到 "Hello, Docker!"。 - V prohlížeči přejděte na http://localhost:5000 a měli byste vidět "Hello, Docker!".
7. 停止和删除容器
使用以下命令停止容器: - Zastavte kontejner pomocí následujícího příkazu:
docker stop
`` 可以通过 docker ps 命令查看。 - Můžete zobrazit pomocí příkazu docker ps.
使用以下命令删除容器: - Odstraňte kontejner pomocí následujícího příkazu:
docker rm
Docker Compose 入门
如果你的应用程序由多个服务组成,可以使用 Docker Compose 来管理它们。 - Pokud se vaše aplikace skládá z více služeb, můžete je spravovat pomocí Docker Compose.
1. 创建 docker-compose.yml 文件
创建一个名为 docker-compose.yml 的文件,并添加以下内容: - Vytvořte soubor s názvem docker-compose.yml a přidejte následující obsah:
version: "3.9"
services:
web:
image: my-python-app
ports:
- "5000:5000"
docker-compose.yml 说明:
version: "3.9": Určuje verzi souboru Docker Compose.services: Definuje služby aplikace.web: Definuje službu s názvem "web".image: my-python-app: Určuje image, kterou služba používá.ports: Definuje mapování portů.
2. Spuštění aplikace
V adresáři obsahujícím soubor docker-compose.yml spusťte následující příkaz pro spuštění aplikace:
docker-compose up -d
docker-compose up: Příkaz pro spuštění aplikace.-d: Spustí kontejner v odděleném režimu.
3. Zastavení aplikace
Pro zastavení aplikace použijte následující příkaz:
docker-compose down
Docker Bezpečnostní osvědčené postupy
Jak je patrné z diskuse, bezpečnost Docker image je důležitá otázka. Níže jsou uvedeny některé osvědčené postupy pro zabezpečení Dockeru:
- Používejte oficiální image: Pokud je to možné, používejte oficiálně poskytované image, které jsou obvykle skenovány a udržovány z hlediska bezpečnosti.
- Skenujte image na zranitelnosti: Používejte nástroje jako Trivy ke skenování známých zranitelností v image a image včas aktualizujte.
- Používejte princip nejmenších privilegií: Vyhněte se spouštění kontejnerů jako uživatel root.
- Omezte zdroje kontejneru: Používejte cgroups k omezení využití CPU a paměti kontejneru.
- Pravidelně aktualizujte image: Udržujte image aktualizované, abyste opravili bezpečnostní chyby.
- Používejte nástroje pro skenování zabezpečení: Nástroje jako Snyk, Clair atd. lze integrovat do vašeho CI/CD procesu a automaticky skenovat image na zranitelnosti.





