Како да се кандидира Nginx во контејнер Docker на Ubuntu 22.04


Вовед

Nginx е веб-сервер со отворен код што се користи за опслужување на статични или динамични веб-локации, обратно прокси, балансирање на оптоварување и други можности за HTTP и прокси-сервер. Изграден е да управува со големи количини на истовремени врски и е популарен веб-сервер кој се користи за хостирање на некои од најголемите и најпрометните страници на интернет.

контејнери, изолирани околини на кориснички простор кои работат на ниво на оперативен систем и споделуваат системски ресурси како што се кернелот и датотечен систем.

Со контејнеризирање на Nginx, можно е да се намалат некои трошоци за администрација на системот. На пример, нема да мора да управувате со Nginx преку менаџер на пакети или да го градите од изворот. Контејнерот Docker ви овозможува да го замените целиот контејнер кога ќе биде објавена нова верзија на Nginx. На овој начин, треба само да ја одржувате конфигурациската датотека Nginx и вашата содржина.

Во ова упатство, ќе научите како да служите мала веб-страница со конфигурирање на Nginx со контејнер Docker.

Предуслови

За да го следите ова упатство, ќе ви треба следново:

  • Поставен еден Ubuntu 22.04 сервер со следење на упатството за почетно поставување на серверот Ubuntu 22.04, вклучувајќи sudo не-root корисник и заштитен ѕид.
  • Докер е инсталиран на вашиот сервер. Завршете ги Чекорите 1 и 2 од нашето упатство како да го инсталирате и користите Docker на Ubuntu 22.04.

Со инсталиран Docker на вашиот сервер, можете да продолжите со првиот чекор.

Чекор 1 - Преземање Nginx од Docker Hub

Докер одржува локација наречена Dockerhub, јавно складиште на датотеки на Docker кои вклучуваат и официјални и доставени слики од корисниците. Официјалните слики на Docker може да се користат за брзо развивање апликација со тоа што ќе ве спаси од потребата да изградите своја сопствена слика. Овие слики се одржуваат од заедницата Docker и често се дизајнирани за најчестите случаи на употреба.

Можете да го преземете Nginx од претходно изградена слика на Docker, со стандардна конфигурација на Nginx, со извршување на следнава команда:

  1. docker pull nginx

Ова ги презема сите потребни компоненти за контејнерот. Docker ќе ги кешира, така што кога ќе го стартувате контејнерот, не треба да ја преземате сликата на контејнерот секој пат.

Сега кога имате инсталирано Nginx, можете да го конфигурирате контејнерот така што ќе биде јавно достапен како веб-сервер. За да го стартувате вашиот Nginx Docker контејнер, извршете ја оваа команда:

  1. docker run --name docker-nginx -p 80:80 nginx

Еве брз преглед на она што се случува со оваа команда:

  • run е команда за создавање нов контејнер
  • Знамето --name е начинот на кој го одредувате името на контејнерот. Ако се остави празно, ќе се додели генерирано име како nostalgic_hopper.
  • -p ја одредува портата што ја изложувате во формат -p local-machine-port:internal-container-port. Во овој случај, ја мапирате портата :80 во контејнерот до портата :80 на серверот.
  • nginx е името на сликата на Docker Hub.

Во веб-прелистувач, внесете ја IP адресата на вашиот сервер за да ја откриете стандардната целна страница на Nginx:

Забележете исто така дека во вашиот терминал, дневникот за Nginx се ажурира кога поднесувате барања до вашиот сервер. Ова е затоа што го користите вашиот контејнер интерактивно.

Во вашиот терминал, внесете CTRL+C за да спречите работа на контејнерот.

Бидејќи го исклучивте контејнерот, повеќе не можете да ја гледате целната страница. Можете да го потврдите статусот на контејнерот со оваа команда:

  1. docker ps -a
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 05012ab02ca1 nginx "nginx -g 'daemon off" 57 seconds ago Exited (0) 47 seconds ago docker-nginx

Излезот открива дека контејнерот Docker излегол.

Отстранете го постоечкиот контејнер docker-nginx со оваа команда:

  1. docker rm docker-nginx

Во следниот чекор, ќе го откачите контејнерот за да му дозволите да работи самостојно.

Чекор 2 - Работење во одвоен режим

Создадете нов, одвоен Nginx контејнер со оваа команда:

  1. docker run --name docker-nginx -p 80:80 -d nginx

Со прикачување на знамето -d, го извршувате овој контејнер во заднина.

Излезот е ID на контејнерот:

Output
b91f3ce26553f3ffc8115d2a8a3ad2706142e73d56dc279095f673580986257

Со извршување на командата docker ps, ќе наидете на некои нови информации за вашиот контејнер:

  1. docker ps
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b91f3ce26553 nginx "/docker-entrypoint.…" 56 seconds ago Up 54 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp docker-nginx

Наместо Излезено (0) пред X минути, сега имате Нагоре Околу една минута во колоната STATUS. Забележете, исто така, дека мапирањето на пристаништето е исто така дел од излезот.

Внесете ја IP адресата на вашиот сервер во прелистувачот за повторно да стигнете до стандардната целна страница Nginx. Овој пат работи во заднина бидејќи го наведовте знамето -d, кое му кажува на Docker да го стартува овој контејнер во одвоен режим.

Сега имате активен примерок на Nginx во одвоен контејнер. Во моментов, контејнерот нема пристап до ниедна од датотеките на вашата веб-локација.

Запрете го контејнерот со извршување на следнава команда:

  1. docker stop docker-nginx

Сега кога контејнерот е запрен, можете да го отстраните со извршување на следнава команда:

  1. docker rm docker-nginx

Сега кога разбирате како да го стартувате Nginx независно од вашиот контејнер, во следниот чекор, ќе креирате и конфигурирате Nginx за да изградите целна страница.

Чекор 3 - Изградба на веб-страница за да служи на Nginx

Во овој чекор, ќе креирате сопствена страница за вашата веб-страница. Ова поставување ви овозможува да имате постојана содржина на веб-локација што е хостирана надвор од контејнерот.

Создадете нов директориум за содржината на вашата веб-локација во домашниот директориум:

  1. mkdir -p ~/docker-nginx/html

Одете до него со извршување на оваа команда:

  1. cd ~/docker-nginx/html

Направете HTML-датотека за да служите на вашиот сервер. Следниот пример користи nano, но можете да го користите претпочитаниот уредувач на текст:

  1. nano index.html

Вметнете ја следната HTML содржина:

<html>
  <head>
    <title>Docker nginx Tutorial</title>
  </head>

  <body>
    <div class="container">
      <h1>Hello DigitalOcean</h1>
      <p>This Nginx page is brought to you by Docker and DigitalOcean</p>
    </div>
  </body>
</html>

Ако користите уредувач на текст nano, излезете и зачувајте ја оваа датотека со притискање CTRL+X, потоа Y, потоа ENTER .

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

Чекор 4 - Поврзување на контејнерот со локалниот датотечен систем

Во овој чекор, ќе го поврзете Nginx со вашиот контејнер за да биде јавно достапен преку портата:80 и ќе го поврзете со содржината на вашата веб-локација на серверот.

Docker ви овозможува да поврзете директориуми од локалниот датотечен систем на вашата виртуелна машина со вашиот контејнер. Бидејќи сакате да ја сервирате новата веб-страница, ќе треба да му ги дадете на вашиот контејнер датотеките за прикажување.

Можете да ги копирате датотеките во контејнерот како дел од Dockerfile, или да ги копирате во контејнерот после фактот, но и двата од овие методи ја оставаат вашата веб-страница во статична состојба во контејнерот. Со користење на функцијата за волумен на податоци на Docker, можете да создадете симболична врска помеѓу датотечен систем на вашиот сервер и датотечен систем на контејнерот. Ова ви овозможува да ги уредувате вашите постоечки датотеки на веб-страници и да додавате нови во директориумот. Со симболична врска, вашиот контејнер ќе има пристап до овие датотеки. Ако сакате да прочитате повеќе за Docker и волумените, проверете ја документацијата за волумени на податоци.

Контејнерот Nginx е стандардно поставен да бара страница со индекс на /usr/share/nginx/html. Во вашиот нов Docker контејнер, ќе треба да му дадете пристап до вашите датотеки на таа локација.

За да го направите ова, користете го знамето -v за да ја мапирате папката ~/docker-nginx/html од вашиот сервер до релативна патека во контејнерот/usr/ share/nginx/html со оваа команда:

  1. docker run --name docker-nginx -p 80:80 -d -v ~/docker-nginx/html:/usr/share/nginx/html nginx

Еве кратко објаснување за командата:

    Знамето
  • -v одредува дека поврзувате том.
  • Лево од : е локацијата на вашиот директориум на вашиот сервер, ~/docker-nginx/html.
  • Десно од : е локацијата што симболично ја поврзувате со вашиот контејнер /usr/share/nginx/html.

Откако ќе ја извршите таа команда, внесете ја IP адресата на вашиот сервер во вашиот прелистувач за да ја видите вашата нова целна страница:

Ако сте задоволни со стандардните поставки за Nginx, нема што друго да конфигурирате.

Можете да испратите повеќе содржини во директориумот ~/docker-nginx/html/ и таа ќе биде додадена на вашата веб-страница во живо.

На пример, ако ја измените вашата HTML-датотека и го освежите прелистувачот, тој ќе биде соодветно ажуриран. Можете исто така да изградите цел сајт од HTML-датотеки на овој начин. На пример, ако додадовте страница about.html, можете да пристапите до неа на http://your_server_ip/about.html без потреба да интеракција со контејнерот.

Чекор 5 - Користење на вашата сопствена конфигурациска датотека Nginx (опционално)

Ако сакате да имате поголема контрола врз тоа како функционира Nginx, можете да користите приспособена конфигурациска датотека Nginx со контејнерот Docker.

Прво, проверете дали сте повторно во директориумот на проекти од највисоко ниво:

  1. cd ~/docker-nginx

Копирајте го директориумот за конфигурација Nginx во вашата проектна папка користејќи ја командата Docker copy:

  1. docker cp docker-nginx:/etc/nginx/conf.d/default.conf default.conf

Бидејќи ќе користите приспособена датотека .conf за Nginx, ќе треба повторно да го изградите контејнерот.

Прво запрете го садот:

  1. docker stop docker-nginx

Потоа отстранете го:

  1. docker rm docker-nginx

Сега можете да ја уредувате стандардната конфигурациска датотека Nginx локално за да опслужувате нов директориум или да користите proxy_pass за да го пренасочите сообраќајот до друга апликација или контејнер како што би правеле со обична инсталација на Nginx. Можете да прочитате за конфигурациската датотека на Nginx во нашиот водич за конфигурациска датотека Nginx.

Откако ќе ја зачувате вашата конфигурациска датотека, време е да го креирате контејнерот Nginx. Додајте знаменце -v со соодветните патеки за да му дадете на свежиот контејнер на Nginx соодветните врски за извршување од вашата сопствена конфигурациска датотека. На пример:

  1. docker run --name docker-nginx -p 80:80 -v ~/docker-nginx/html:/usr/share/nginx/html -v ~/docker-nginx/default.conf:/etc/nginx/conf.d/default.conf -d nginx

Оваа команда ги поврзува сопствените веб-страници со контејнерот.

Имајте предвид дека ќе треба да го рестартирате контејнерот користејќи ја командата docker рестарт кога ќе направите какви било промени во вашата конфигурациска датотека по стартувањето на контејнерот. Ова е затоа што Nginx не се вчитува повторно ако неговата конфигурациска датотека се смени:

  1. docker restart docker-nginx

Ова ќе го рестартира вашиот контејнер и вашите промени треба да се одразат на поврзаните страници.

Заклучок

Сега имате вклучен Nginx контејнер што служи прилагодена веб-страница и научивте како да го конфигурирате Nginx од вашиот контејнер.

Ако сакате да дознаете повеќе за тоа како функционираат контејнерите, можете да го прегледате нашето упатство за Вовед во контејнерите.

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