Docker
ENGLISH VERSION
Tietoa Dockerista

Docker on joukko PaaS (Platform as a Service) -tuotteita, jotka käyttävät käyttöjärjestelmätason virtualisointia toimittaakseen ohjelmistoja paketeissa, joita kutsutaan konteiksi. Palvelulla on sekä ilmainen että maksullinen taso. Ohjelmistoa, joka isännöi kontteja, kutsutaan Docker Engineksi. Se julkaistiin ensimmäisen kerran vuonna 2013, ja sen on kehittänyt Docker, Inc. (Wikipedia)

Dockerfile on skripti, joka sisältää ohjeet Docker-imagen rakentamiseen. Kun Dockerfile käsitellään, se luo Docker-imagen, joka on kevyt, itsenäinen paketti, joka sisältää sovelluksen koodin, kirjastot ja riippuvuudet. Tästä imagesta voidaan käynnistää Docker-kontti. Kontti on imagen käynnissä oleva instanssi, joka tarjoaa eristetyn ympäristön, jossa sovellus suoritetaan johdonmukaisesti eri järjestelmissä.

Dockerfile  --->  Docker Image  --->  Docker Container
   (resepti)        (paketti)          (käynnissä oleva instanssi)

Tässä on muutamia syitä Dockerin käyttöön:

  • Johdonmukaisuus: Docker varmistaa, että sovellukset toimivat samalla tavalla eri ympäristöissä kehityksestä tuotantoon.
  • Siirrettävyys: Kontit voivat toimia missä tahansa järjestelmässä, joka tukee Dockeria, riippumatta taustalla olevasta käyttöjärjestelmästä.
  • Eristys: Jokainen kontti toimii itsenäisesti, välttäen konfliktit sovellusten ja riippuvuuksien välillä.
  • Skaalautuvuus: Kontteja voidaan helposti skaalata ylös tai alas muuttuvien työkuormien käsittelemiseksi.
  • Tehokkuus: Docker käyttää vähemmän resursseja verrattuna perinteisiin virtuaalikoneisiin, mahdollistaen nopeammat käynnistysajat ja paremman suorituskyvyn.

Voit lukea lisää Dockerista ja miksi sitä kannattaa käyttää osoitteesta https://www.knowledgehut.com/blog/devops/why-use-docker.

Dockerfile

Docker voi rakentaa imageja automaattisesti lukemalla ohjeet Dockerfilesta. Dockerfile on tekstidokumentti, joka sisältää kaikki komennot, joita käyttäjä voisi kutsua komentorivillä imagen kokoamiseksi. Voit lukea lisää Dockerfilesta osoitteesta https://docs.docker.com/engine/reference/builder/

Docker-imaget ja -kontit

Docker-image on kevyt, itsenäinen, suoritettava ohjelmistopaketti, joka sisältää kaiken tarvittavan sovelluksen suorittamiseen: koodin, ajonaikaisen ympäristön, järjestelmätyökalut, järjestelmäkirjastot ja asetukset.

Docker-kontti on ohjelmiston standardiyksikkö, joka pakkaa koodin ja kaikki sen riippuvuudet, jotta sovellus toimii nopeasti ja luotettavasti yhdestä laskentaympäristöstä toiseen.

Docker Desktop

Jotta voit käyttää Dockeria, tarvitset Docker Enginen tai Docker Desktopin. Docker Desktop on graafinen työkalu, joka helpottaa konttien käynnistämistä ja pysäyttämistä.

Voit ladata Docker Desktopin asennustiedostot osoitteesta https://docs.docker.com/engine/install/.

Windowsissa sinun täytyy asentaa myös WSL, jotta voit käyttää Docker Desktopia. Löydät ohjeet WSL:n (wsl2) asentamiseen osoitteesta https://learn.microsoft.com/en-us/windows/wsl/install.

.dockerignore

.dockerignore-tiedoston tarkoitus on määrittää, mitkä tiedostot ja hakemistot tulee jättää pois Dockerin rakennuskontekstista — Docker-daemonille lähetettävistä tiedostoista imagea rakennettaessa. Tämä auttaa kontrolloimaan, mitä voidaan käyttää COPY- ja ADD-komennoissa. Se toimii samankaltaisesti kuin versionhallintajärjestelmä Gitissä käytettävä .gitignore-tiedosto.

Tärkeimmät syyt .dockerignore-tiedoston käyttöön:

  1. Tehokkuus: Pienempi rakennuskonteksti nopeuttaa imagen rakennusprosessia vähentämällä Docker-daemonille lähetettävän datan määrää.
  2. Turvallisuus: Se auttaa estämään arkaluonteisten tiedostojen, kuten salasanojen, avainten tai tunnistetietojen, vahingossa sisällyttämisen.
  3. Pienemmät imaget: Jättämällä tarpeettomat tiedostot pois kontekstista vältytään niiden kopioimiselta imageen, mikä pitää lopullisen imagen koon pienempänä.
  4. Selkeys: Hyvin ylläpidetty .dockerignore tekee selväksi, mitkä tiedostot ovat (ja eivät ole) osa rakennusprosessia, parantaen ylläpidettävyyttä.

Docker-komennot

Voit tehdä lähes kaiken tarvittavan Docker Desktopilla, mutta voit myös käyttää komentoriviä. Tässä on joitakin komentoja, joista voi olla hyötyä:

  • docker ps : lista käynnissä olevista konteista
  • docker ps -a : lista kaikista konteista (myös pysäytetyistä)
  • docker images : lista ladatuista imageista
  • docker run -d -p 8080:80 imagename : käynnistä uusi kontti imagesta
  • docker stop container_name : pysäytä käynnissä oleva kontti
  • docker start container_name : käynnistä pysäytetty kontti
  • docker rm container_name : poista kontti
  • docker rmi image_name : poista image
  • docker inspect container_name : yksityiskohtaiset tiedot kontista
  • docker exec -it container_name bash : avaa pääte käynnissä olevan kontin sisällä
Löydät lisää komentoja osoitteesta https://docs.docker.com/engine/reference/commandline/docker/

Docker Compose

Compose on työkalu usean kontin Docker-sovellusten määrittämiseen ja suorittamiseen. Composen avulla käytät docker-compose.yml-tiedostoa sovelluksesi palveluiden konfiguroimiseen. Sitten yhdellä komennolla voit rakentaa ja käynnistää koko sovelluspinon.


Dockerfile  --->  Docker Image
                     |
docker-compose.yml --+
                     |
                     v
              Docker Containers (yksi tai useampi)
  • Dockerfile määrittää, miten yksittäinen image rakennetaan.
  • Docker Image on pakattu sovellus, valmis ajettavaksi kontissa.
  • docker-compose.yml määrittää, miten useat imaget ja kontit toimivat yhdessä, mukaan lukien palvelut, verkot ja volyymit.
  • Docker Containers ovat käynnissä olevia instansseja, usein useita toimii yhdessä osana yhtä sovelluspinoa (esim. sovellus tietokannalla).
Voit lukea lisää siitä osoitteesta https://docs.docker.com/compose/

Tässä ovat komennot, joita tarvitset

  • docker-compose up : Rakenna imaget tarvittaessa ja käynnistä kontit
  • docker-compose up --build : Rakenna imaget uudelleen ja käynnistä kontit
  • docker-compose down : Pysäytä kontit ja poista ne.
  • docker-compose down -v : Pysäytä kontit ja poista ne sekä niihin liittyvät volyymit (esim. tietokantadatat poistetaan).
  • docker-compose down --rmi all : Pysäytä kontit ja poista ne sekä kaikki imaget.
  • docker-compose build : Rakenna imaget käynnistämättä kontteja.
  • docker-compose restart : Käynnistä kontit uudelleen.
  • docker-compose stop : Pysäytä kontit poistamatta niitä.
  • docker-compose rm : Poista pysäytetyt kontit käyttämättä 'down'-komentoa.
  • docker-compose logs -f : Seuraa konttien reaaliaikaisia lokeja.
  • docker-compose ps : Listaa käynnissä olevat kontit.

Dockerissa (ja Docker Composessa) -d-lipun lisääminen komentoon suorittaa sen irrotettussa tilassa, eli se suoritetaan taustalla.

Löydät lisää komentoja osoitteesta https://docs.docker.com/engine/reference/commandline/compose_up/

Docker Hub

Docker Hub (https://hub.docker.com/) on Dockerin tarjoama palvelu kontti-imagien etsimiseen ja jakamiseen.

Se on maailman suurin kontti-imageiden varasto, jossa on sisältöä useista lähteistä, mukaan lukien konttikehittäjäyhteisö, avoimen lähdekoodin projektit ja riippumattomat ohjelmistotoimittajat (ISV), jotka rakentavat ja jakavat koodiaan konteissa.
https://docs.docker.com/docker-hub/

MySQL-esimerkki

Voit ladata MySQL-imagen Docker Hubista ja käynnistää kontin alla olevilla komennoilla

docker pull mysql:8.1
docker run --name docker_mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:8.1
Sitten voit yhdistää MySQL:ään alla olevalla komennolla
docker exec -it docker_mysql mysql -u root -p

Voit myös ladata omia kontti-imageitasi Docker Hubiin, ja sitten voit ottaa ne käyttöön joihinkin pilvipalveluihin. Alla ovat ohjeet, kuinka otetaan käyttöön Docker Hubista Renderiin.

Ota käyttöön Renderissä

Render ( https://render.com/ ) on yhtenäinen pilvi kaikkien sovellustesi ja verkkosivustojesi rakentamiseen ja ajamiseen.

Voit ottaa sovelluksesi käyttöön Renderissä näin:

  1. Luo tili Docker Hubiin
  2. Luo tili Renderiin
  3. Kirjaudu Docker Desktopissa Docker Hubiisi
  4. Luo kontti-image
  5. Lähetä image Docker Hubiin
  6. Luo Renderissä Webservice ja yhdistä se Docker Hub -repositoriosi

Esimerkki

Tässä esimerkissä Docker Hub -tili on dh_user. Käyttäjä on tehnyt sovelluksen kuten esimerkissä Node.js-esimerkki. Joten tässä ovat vaiheet sen käyttöönottamiseksi Renderissä.

  1. Luo image komennolla
    docker build -t dh_user/imagename:latest polku_dockerfileen/
    
  2. Lähetä image Docker Hubiin komennolla
    docker push dh_user/imagename:latest
    
  3. Seuraa ohjeita osoitteesta https://render.com/docs/deploy-an-image
HUOM:
  • dh_user on käyttäjätunnuksesi Docker Hubissa
  • latest on tagin nimi (*)

(*) Docker-imageilla voi olla tageja eri versioiden tunnistamiseen. Jos tagia ei ole määritetty, käytetään oletustagi latest. Esimerkiksi sekä docker run dh_user/imagename että docker run dh_user/imagename:latest ajavat saman imagen. Jos haluat määrittää tietyn versiotunnisteen, kuten 1.0, voit rakentaa ja lähettää imagen näin:

docker build -t dh_user/imagename:1.0 polku_dockerfileen/
docker push dh_user/imagename:1.0
Laukaise käyttöönotto

Voit konfiguroida Renderin ottamaan imagen automaattisesti käyttöön aina kun lähetät uuden version Docker Hubiin. Voit tehdä sen näin

  1. Avaa Renderissä palvelusi asetukset (esim. docker_express)
  2. Kopioi Deploy Hook URL
  3. Avaa Docker Hubissa Repository ja klikkaa Webhooks valikosta
  4. Anna jokin nimi uudelle Webhookille ja liitä WebHook URL



Toggle Menu