Docker-aloitusopas: Aloita sovelluksesi kontittaminen nopeasti
markdown\n# Docker-aloitusopas: Aloita sovelluksesi kontittaminen nopeasti\n\nDockerista on tullut olennainen osa modernia ohjelmistokehitystä ja -käyttöönottoa. Vaikka Kubernetesin ympärillä käydään paljon keskustelua, Docker on edelleen monien yritysten ensisijainen työkalu sovellusten rakentamiseen, testaamiseen ja käyttöönottoon. Tämä artikkeli opastaa sinut nopeasti Dockerin perusteisiin, ymmärtämään sen ydinkäsitteitä ja tarjoaa käytännön esimerkin, joka auttaa sinua aloittamaan sovelluksesi kontittamisen.\n\n## Dockerin ydinkäsitteet\n\nEnnen kuin aloitat harjoittelun, on tärkeää ymmärtää joitain Dockerin ydinkäsitteitä:\n\n* **Kuva (Image):** Kuva on vain luku -pohjainen malli, joka sisältää kaiken sovelluksen suorittamiseen tarvittavan: koodin, suoritusympäristön, järjestelmätyökalut, kirjastot ja riippuvuudet. Samanlainen kuin virtuaalikoneen kuva, mutta kevyempi.\n\n* **Kontti (Container):** Kontti on kuvan perusteella luotu suoritusesimerkki. Se on kuvan suoritusaikainen ilmentymä, joka sisältää sovelluksen ja kaikki sen riippuvuudet. Kontit on eristetty toisistaan, ja niillä on omat tiedostojärjestelmät, prosessit ja verkkotilat.\n\n* **Docker Hub:** Docker Hub on julkinen kuvavarasto, josta voit ladata valmiita kuvia ja ladata omia kuviasi. Samanlainen kuin GitHub, mutta tarkoitettu Docker-kuville.\n\n* **Dockerfile:** Dockerfile on tekstitiedosto, joka sisältää kaikki Docker-kuvan rakentamiseen tarvittavat ohjeet. Kirjoittamalla Dockerfile-tiedoston voit automatisoida kuvan luontiprosessin.\n\n* **Docker Compose:** Docker Compose on työkalu monikonttisten Docker-sovellusten määrittämiseen ja suorittamiseen. Sen avulla voit määrittää sovelluksen palvelut YAML-tiedostolla ja käynnistää tai pysäyttää kaikki palvelut yhdellä komennolla.\n\n## Dockerin asennus\n\nEnsin sinun on asennettava Docker. Docker tarjoaa asennuspaketteja eri käyttöjärjestelmille. Käy [Dockerin virallisella verkkosivustolla](https://www.docker.com/get-started/) ja noudata vastaavia ohjeita asennusta varten.\n\nAsennuksen jälkeen voit tarkistaa, onko Docker asennettu oikein, suorittamalla komennon `docker --version`.\n\n## Yksinkertaisen Python-sovelluksen kontittaminen\n\nLuomme yksinkertaisen Python-sovelluksen ja kontitamme sen Dockerin avulla.\n\n### 1. Python-sovelluksen luominen\n\nLuo tiedosto nimeltä `app.py`, joka sisältää seuraavan koodin:\n\npython\nfrom flask import Flask\napp = Flask(name)\n\n@app.route(# Sovelluskoodin kopioiminen työkansioon
COPY app.py .
Portin 5000 paljastaminen
EXPOSE 5000
Käynnistyskomennon määrittäminen
CMD ["python", "app.py"]
**Dockerfile-selitys:**
* `FROM python:3.9-slim-buster`: Määrittää pohjakuvan Python 3.9:n kevyeksi versioksi.
* `WORKDIR /app`: Asettaa kontissa työkansioksi `/app`.
* `COPY requirements.txt .`: Kopioi nykyisessä hakemistossa olevan `requirements.txt` -tiedoston kontin `/app` -hakemistoon.
* `RUN pip install --no-cache-dir -r requirements.txt`: Suorittaa kontissa `pip`-komennon ja asentaa `requirements.txt` -tiedostossa määritetyt riippuvuudet. `--no-cache-dir` -parametri voi pienentää kuvan kokoa.
* `COPY app.py .`: Kopioi nykyisessä hakemistossa olevan `app.py` -tiedoston kontin `/app` -hakemistoon.
* `EXPOSE 5000`: Ilmoittaa, että kontti kuuntelee porttia 5000.
* `CMD ["python", "app.py"]`: Määrittää komennon, joka suoritetaan kontin käynnistyessä.
### 4. Docker-kuvan rakentaminen
Suorita seuraava komento `Dockerfile`:n sisältävässä hakemistossa Docker-kuvan rakentamiseksi:
```bash
docker build -t my-python-app .
docker build: Komento kuvan rakentamiseksi.-t my-python-app: Määrittää kuvalle nimen (my-python-app)..: MäärittääDockerfile:n sijainnin (nykyinen hakemisto).
Rakennusprosessi voi kestää jonkin aikaa verkon nopeudesta ja riippuvuuksien koosta riippuen.
5. Docker-kontin suorittaminen
Suorita Docker-kontti seuraavalla komennolla:
docker run -d -p 5000:5000 my-python-app
docker run: Komento kontin suorittamiseksi.-d: Suorittaa kontin erillistilassa (taustalla).-p 5000:5000: Kartoittaa isäntäkoneen portin 5000 kontin porttiin 5000.my-python-app: Määrittää käytettävän kuvan nimen.
6. Sovelluksen vahvistaminen
Siirry selaimessa osoitteeseen http://localhost:5000, jolloin pitäisi näkyä "Hello, Docker!".
7. Kontin pysäyttäminen ja poistaminen
Pysäytä kontti seuraavalla komennolla:
docker stop
`` Voidaan tarkastella komennolla docker ps.
Poista kontti seuraavalla komennolla:
docker rm
Docker Compose -aloitus
Jos sovelluksesi koostuu useista palveluista, voit hallita niitä Docker Componella.
1. docker-compose.yml-tiedoston luominen
Luo tiedosto nimeltä docker-compose.yml ja lisää seuraava sisältö:
version: "3.9"
services:
web:
image: my-python-app
ports:
- "5000:5000"
docker-compose.yml-selitys:* version: "3.9": Määrittää Docker Compose -tiedoston version.
services: Määrittelee sovelluksen palvelut.web: Määrittelee palvelun nimeltä "web".image: my-python-app: Määrittää palvelun käyttämän imagon.ports: Määrittelee porttimääritykset.
2. Sovelluksen käynnistäminen
Käynnistä sovellus suorittamalla seuraava komento hakemistossa, joka sisältää docker-compose.yml-tiedoston:
docker-compose up -d
docker-compose up: Komento sovelluksen käynnistämiseen.-d: Suorittaa kontit irrotetussa tilassa (taustalla).
3. Sovelluksen pysäyttäminen
Pysäytä sovellus seuraavalla komennolla:
docker-compose down
Dockerin tietoturvan parhaat käytännöt
Kuten keskustelusta käy ilmi, Docker-imagojen tietoturva on tärkeä kysymys. Seuraavassa on joitain Dockerin tietoturvan parhaita käytäntöjä:
- Käytä virallisia imagoja: Käytä mahdollisuuksien mukaan virallisia imagoja, jotka on yleensä skannattu tietoturvan varalta ja joita ylläpidetään.
- Skannaa imagot haavoittuvuuksien varalta: Käytä työkaluja, kuten Trivy, skannataksesi imagot tunnettujen haavoittuvuuksien varalta ja päivitä imagot ajoissa.
- Käytä pienimmän oikeuden periaatetta: Vältä konttien suorittamista root-käyttäjänä.
- Rajoita konttien resursseja: Rajoita konttien CPU:n ja muistin käyttöä cgroups-ryhmillä.
- Päivitä imagot säännöllisesti: Pidä imagot ajan tasalla tietoturva-aukkojen korjaamiseksi.
- Käytä tietoturvaskannaustyökaluja: Työkalut, kuten Snyk ja Clair, voidaan integroida CI/CD-työnkulkuusi imagojen haavoittuvuuksien automaattiseksi skannaamiseksi.





