Úvodná príručka pre Docker: Rýchly štart s kontajnerizáciou vašej aplikácie
# Úvodná príručka pre Docker: Rýchly štart s kontajnerizáciou vašej aplikácie
Docker sa stal neoddeliteľnou súčasťou moderného vývoja a nasadzovania softvéru. Napriek rozsiahlym diskusiám okolo Kubernetes je Docker stále preferovaným nástrojom pre mnohé spoločnosti na vytváranie, testovanie a nasadzovanie aplikácií. Tento článok vás rýchlo prevedie Dockerom, zoznámi vás s jeho základnými konceptmi a poskytne praktický príklad, ktorý vám pomôže začať s kontajnerizáciou vašej aplikácie.
## Základné koncepty Dockeru
Predtým, ako začnete prakticky, je dôležité pochopiť niektoré základné koncepty Dockeru:
* **Obraz (Image):** Obraz je šablóna len na čítanie, ktorá obsahuje všetko potrebné na spustenie aplikácie: kód, runtime prostredie, systémové nástroje, knižnice a závislosti. Podobné obrazu virtuálneho stroja, ale oveľa ľahšie.
* **Kontajner (Container):** Kontajner je spustená inštancia vytvorená z obrazu. Je to runtime inštancia obrazu, ktorá obsahuje aplikáciu a všetky jej závislosti. Kontajnery sú navzájom izolované a majú vlastný systém súborov, procesy a sieťový priestor.
* **Docker Hub:** Docker Hub je verejné úložisko obrazov, z ktorého si môžete stiahnuť predpripravené obrazy alebo nahrať svoje vlastné obrazy. Podobné GitHubu, ale špecializované na obrazy Dockeru.
* **Dockerfile:** Dockerfile je textový súbor, ktorý obsahuje všetky inštrukcie na vytvorenie obrazu Dockeru. Napísaním Dockerfile môžete automatizovať proces vytvárania obrazu.
* **Docker Compose:** Docker Compose je nástroj na definovanie a spúšťanie viac-kontajnerových aplikácií Dockeru. Umožňuje vám konfigurovať služby aplikácie pomocou súboru YAML a potom spustiť alebo zastaviť všetky služby pomocou jediného príkazu.
## Inštalácia Dockeru
Najprv musíte nainštalovať Docker. Docker poskytuje inštalačné balíčky pre rôzne operačné systémy. Navštívte [oficiálnu webovú stránku Dockeru](https://www.docker.com/get-started/) a postupujte podľa príslušných pokynov na inštaláciu.
Po dokončení inštalácie môžete overiť, či je Docker správne nainštalovaný spustením príkazu `docker --version`.
## Kontajnerizácia jednoduchej aplikácie v jazyku Python
Vytvoríme jednoduchú aplikáciu v jazyku Python a pomocou Dockeru ju kontajnerizujeme.
### 1. Vytvorenie aplikácie v jazyku Python
Vytvorte súbor s názvom `app.py`, ktorý obsahuje nasledujúci kód:
```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')
Táto jednoduchá aplikácia Flask vráti na koreňovej ceste / reťazec "Hello, Docker!".
2. Vytvorenie súboru requirements.txt
Aplikácia závisí od knižnice Flask, preto musíme vytvoriť súbor requirements.txt na deklarovanie týchto závislostí.
Flask
3. Vytvorenie Dockerfile
Vytvorte súbor s názvom Dockerfile a pridajte nasledujúci obsah:
# Použite oficiálny obraz Pythonu ako základný obraz
FROM python:3.9-slim-buster
# Nastavte pracovný adresár
WORKDIR /app
# Skopírujte súbor requirements.txt do pracovného adresára
COPY requirements.txt .
# Nainštalujte 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`: Špecifikuje základný obraz ako odľahčenú verziu Pythonu 3.9.
* `WORKDIR /app`: Nastaví pracovný adresár v kontajneri na `/app`.
* `COPY requirements.txt .`: Skopíruje súbor `requirements.txt` z aktuálneho adresára do adresára `/app` v kontajneri.
* `RUN pip install --no-cache-dir -r requirements.txt`: Spustí príkaz `pip` v kontajneri na inštaláciu závislostí špecifikovaných v súbore `requirements.txt`. Parameter `--no-cache-dir` môže zmenšiť veľkosť obrazu.
* `COPY app.py .`: Skopíruje súbor `app.py` z aktuálneho adresára do adresára `/app` v kontajneri.
* `EXPOSE 5000`: Deklaruje, že kontajner bude počúvať na porte 5000.
* `CMD ["python", "app.py"]`: Definuje príkaz, ktorý sa má vykonať pri spustení kontajnera.
### 4. Zostavenie Docker obrazu
V adresári obsahujúcom `Dockerfile` spustite nasledujúci príkaz na zostavenie Docker obrazu:
```bash
docker build -t my-python-app .
docker build: Príkaz na zostavenie obrazu.-t my-python-app: Priradí obrazu názov (my-python-app)..: Špecifikuje adresár, v ktorom sa nachádza Dockerfile (aktuálny adresár).
Proces zostavovania môže trvať určitý čas, v závislosti od rýchlosti siete a veľkosti závislostí.
5. Spustenie Docker kontajnera
Na spustenie Docker kontajnera použite nasledujúci príkaz:
docker run -d -p 5000:5000 my-python-app
docker run: Príkaz na spustenie kontajnera.-d: Spustí kontajner v oddelenom režime (beží na pozadí).-p 5000:5000: Zmapuje port 5000 hostiteľského počítača na port 5000 kontajnera.my-python-app: Špecifikuje názov obrazu, ktorý sa má použiť.
6. Overenie aplikácie
V prehliadači prejdite na adresu http://localhost:5000 a mali by ste vidieť "Hello, Docker!".
7. Zastavenie a odstránenie kontajnera
Na zastavenie kontajnera použite nasledujúci príkaz:
docker stop
`` Môžete zobraziť pomocou príkazu docker ps.
Na odstránenie kontajnera použite nasledujúci príkaz:
docker rm
Začíname s Docker Compose
Ak sa vaša aplikácia skladá z viacerých služieb, môžete na ich správu použiť Docker Compose.
1. Vytvorenie súboru docker-compose.yml
Vytvorte súbor s názvom docker-compose.yml a pridajte nasledujúci obsah:
version: "3.9"
services:
web:
image: my-python-app
ports:
- "5000:5000"
docker-compose.yml 说明:
version: "3.9": Určuje verziu súboru Docker Compose.services: Definuje služby aplikácie.web: Definuje službu s názvom "web".image: my-python-app: Určuje obraz, ktorý služba používa.ports: Definuje mapovanie portov.
2. Spustenie aplikácie
V adresári, ktorý obsahuje súbor docker-compose.yml, spustením nasledujúceho príkazu spustíte aplikáciu:
docker-compose up -d
docker-compose up: Príkaz na spustenie aplikácie.-d: Spustí kontajner v oddelenom režime.
3. Zastavenie aplikácie
Na zastavenie aplikácie použite nasledujúci príkaz:
docker-compose down
Osvedčené postupy pre bezpečnosť Docker
Ako je zrejmé z diskusie, bezpečnosť obrazov Docker je dôležitá otázka. Tu je niekoľko osvedčených postupov pre bezpečnosť Docker:
- Používajte oficiálne obrazy: Ak je to možné, používajte oficiálne poskytované obrazy, ktoré sú zvyčajne skenované a udržiavané z hľadiska bezpečnosti.
- Skenujte obrazy na zraniteľnosti: Používajte nástroje ako Trivy na skenovanie známych zraniteľností v obrazoch a obrazy včas aktualizujte.
- Používajte princíp minimálnych privilégií: Vyhnite sa spúšťaniu kontajnerov ako používateľ root.
- Obmedzte zdroje kontajnera: Používajte cgroups na obmedzenie využitia CPU a pamäte kontajnera.
- Pravidelne aktualizujte obrazy: Udržiavajte obrazy aktualizované, aby ste opravili bezpečnostné zraniteľnosti.
- Používajte nástroje na skenovanie bezpečnosti: Nástroje ako Snyk, Clair atď. sa dajú integrovať do vášho CI/CD procesu a automaticky skenovať zraniteľnosti obrazov.





