Доцкер 101 - како доћи од стварања до примене

Доцкер је играч који мења игре и веома је променио свет развоја апликација. Научите виталне вештине потребне за рад са овом технологијом контејнера данас.

Шта је Доцкер?

Једноставно речено, Доцкер је алат који омогућава програмерима да креирају, примењују и покрећу апликације у контејнерима. Контејнеризација је употреба Линук контејнера за примену апликација.

Па зашто је Доцкер тако сјајан и зашто бисмо се ми као програмери уопште трудили да га учимо?

Разлог Објашњење
Флексибилно Чак се и најсложеније апликације могу контејнерирати.
Лагана Контејнери користе и деле језгро домаћина.
Заменљиви Ажурирања и надоградње можете да примените у лету.
Преносив Можете да градите локално, примените се у облак и покрећете било где.
Скалабилно Можете повећати и аутоматски дистрибуирати реплике контејнера.
Стацкабле Услуге можете слагати вертикално и у ходу.

Сад кад знамо зашто је Доцкер тако велика ствар, хајде да га инсталирамо на нашој локалној машини.

Региструјте се за налог на Доцкер Хуб-у и преузмите бесплатну апликацију Доцкер Десктоп.

По чему се Доцкер разликује од традиционалних виртуелних машина?

Контејнер се изворно изводи на Линуку и дели језгро рачунара домаћина са осталим контејнерима. Покреће се као дискретни процес, не узимајући више меморије од било ког другог извршног програма, што значи да је врло лаган.

Насупрот томе, виртуелна машина (ВМ) покреће потпуно развијени „гост“ оперативни систем са виртуелним приступом ресурсима хоста преко хипервизора. Генерално, ВМ-ови пружају окружење са више ресурса него што је потребно већини апликација.

Када радите са Доцкером, `Доцкерфиле` дефинише шта се дешава у окружењу унутар вашег контејнера. Приступ ресурсима попут мрежног интерфејса и дисковних погона виртуелизован је у овом окружењу, изолованом од остатка вашег система. То значи да морате мапирати луке са спољним светом и прецизно одредити које датотеке желите „копирати“ у то окружење. Међутим, након што то учините, можете очекивати да се верзија ваше апликације дефинисане у овом `Доцкерфиле` понаша потпуно исто где год се покреће.

Доцкер команде

Да бисте тестирали да ли имате покренуту верзију Доцкера, покрените следећу команду:

docker --version

Да бисте тестирали да ваша инсталација савршено функционише, покушајте да покренете једноставну Доцкер -ову слику здравог света :

docker run hello-world

Ако је све правилно постављено, требали бисте видети излаз сличан следећем:

Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world ca4f61b1923c: Pull complete Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ... 

Да бисте видели поздравну Доцкер-ову слику која је преузета на рачунар, користите наредбу Доцкер-овог пописа слика:

docker image ls

Авесоме! Већ сте започели развој контејнерских апликација са Доцкером. Ево неколико корисних основних Доцкер наредби:

## List Docker CLI commands docker docker container --help ## Display Docker version and info docker --version docker version docker info ## Execute Docker image docker run hello-world ## List Docker images docker image ls ## List Docker containers (running, all, all in quiet mode) docker container ls docker container ls --all docker container ls -aq 
Контејнеризација чини ЦИ / ЦД беспрекорним. На пример:
  • апликације немају системске зависности
  • исправке се могу пребацити на било који део дистрибуиране апликације
  • густина ресурса се може оптимизовати.
  • Уз Доцкер, скалирање ваше апликације је ствар окретања нових извршних датотека, а не покретања тешких ВМ хостова.

Изградимо Ноде.јс веб апликацију помоћу Доцкера

Прво што радимо је стварање package.jsonдатотеке. То можемо брзо учинити једноставним покретањем следеће команде:

npm init -y 

Ово ствара горњу датотеку са одређеним основним пољима која су већ попуњена или остављена празна.

Ваша датотека би требала изгледати отприлике овако:

{ "name": "app-name", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" } 

Следеће инсталирамо express.js, што је према службеној веб локацији „ Брзи, непинионирани, минималистички веб оквир за Ноде.јс “.

То радимо извођењем следеће наредбе у терминалу:

npm install express --save 

Горња команда додаје express.jsоквир нашој апликацији, са --саве заставицом која делује као упутство апликацији да се користи express.jsкао зависност.

Сада уђите у свој package.jsonи промените "main": "index.js"пар кључ / вредност на следећи:

"main": "app.js" 

Даље, креирајте .gitignoreдатотеку помоћу следеће команде:

touch .gitignore 

Затим додајте следећи ред:

node_modules/ 

Ово спречава праћење директоријума ноде_модулес који је од суштинског значаја за node.jsразвој git.

Сада додајте следећи код у app.jsдатотеку:

const express = require('express'); const app = express(); const PORT = 8080; const HOST = '0.0.0.0'; app.get('/', (req, res) => { res.send( ` 

Home

Docker is awesome!

Next Page ` ) }); app.get('/more', (req, res) => { res.send( `

Page Two

Node.js is pretty great too!!

Back Home ` ) }); app.listen(PORT, HOST); console.log(`Running on //${HOST}:${PORT}`);

Да би се ово покренуло на вашем локалном рачунару, покрените следећу команду у фасцикли апликације:

npm start 

Апликацију ћете пронаћи на //0.0.0.0:8080/

Авесоме!

Честитам

Честитам што сте стигли тако далеко

У Доцкерверсе

Сада креирајте Dockerfileследећу наредбу:

touch Dockerfile 

Затим додајте следећи код:

# An official Docker image for Node.js FROM node:10-alpine # Working directory for the containerised application WORKDIR /src/app # This copies significant package.json files to the current directory COPY package*.json ./ # Install essential Node.js dependencies RUN npm install COPY . . # Opens up this port on the Docker container EXPOSE 8080 # This starts the Docker application CMD [ "npm", "start" ] 

Горњи коментари покушавају да објасне шта свака Dockerfileнаредба ради.

Такође додајте dockerignoreдатотеку да бисте спречили контејнеризацију одређених компоненти апликације.

Ставите ово у dockerignoreдатотеку:

node_modules npm-debug.log Dockerfile* docker-compose* .dockerignore .git .gitignore README.md LICENSE 

Како се распоређује

То је име које доделите својој апликацији Доцкер и у основи је само показатељ верзије ваше слике Доцкер.

  • docker build -t image-name:tag .

Покрените ово да бисте приступили свом Доцкер налогу са свог терминала.

  • docker login

Направите спремиште на Доцкер Хуб-у.

Ознака за отпремање у регистар.

  • docker tag username/repository:tag

Отпремите означену слику у регистар.

  • docker push username/repository:tag

Покрените постављени Доцкер контејнер на локалној машини повезивањем његових ЛУКА. Циљајте изложени порт 8080 и доделите га порту 10203 на вашој машини.

  • docker run -p 10203:8080 username/repository:tag

То је то! Изградили сте и применили веб-апликацију у контејнеру Ноде.јс.

Сав горе наведени код се може наћи у овом Гитхуб спремишту.

Првобитно објављено овде на блог.нинте.дев