- Dockerin natiivien uudelleenkäynnistyskäytäntöjen käyttäminen järjestelmävirheiden käsittelyyn.
- Mukautettujen komentosarjojen ja cronin toteutus epäterveellisissä tiloissa oleville säilöille.
- Edistynyt integrointi systemd:n kanssa käynnistys- ja sammutusjärjestyksen hallintaan.
- Ulkoiset valvontavaihtoehdot ja -työkalut, kuten Podman Quadlet.
Olen varma, että näin on käynyt sinulle: sinulla on käynnissä oleva palvelu Satamatyöläinen joka jostain mystisestä syystä jää jumiin muutaman päivän välein. Kuinka Docker-säilön voi käynnistää automaattisesti uudelleen, kun se lakkaa vastaamasta? On turhauttavaa yrittää optimoida koodia tai konfiguraatioita ilman, että mikään toimii, ja sitten huomata, että yksinkertainen manuaalinen uudelleenkäynnistys ratkaisee ongelman ja pitää kaiken käynnissä vielä viikon. Sen sijaan, että jatkuvasti tarkistaisit aikaa, ihanteellinen ratkaisu on perustaa järjestelmä, joka tekee tämän likaisen työn puolestasi.
Konttien saatavuuden hallintaan kuuluu enemmän kuin vain sen varmistaminen, että ne käynnistyvät automaattisesti palvelimen käynnistyksen yhteydessä. varmista, että ne vastaavat oikein pyyntöihin. Joskus säilö näyttää olevan "elossa" Dockerille, mutta sen sisällä oleva sovellus ei vastaa, mikä pakottaa meidät etsimään ratkaisuja aina perusdaemon-parametreista monimutkaisten palveluiden luomiseen käyttöjärjestelmässä.
Dockerin natiivit uudelleenkäynnistyskäytännöt
Helpoin tapa käynnistää Docker-kontti automaattisesti uudelleen on käyttää lippua --restart kun käynnistät säilön tai käytät komentoa docker update Jos säilö on jo luotu, Docker tarjoaa useita vaihtoehtoja tarpeidesi mukaan. Esimerkiksi käytäntö aina Tämä aiheuttaa säilön uudelleenkäynnistyksen aina riippumatta siitä, päättyikö prosessi virheeseen vai käynnistyikö uudelleen itse Docker-daemon.
Jos haluat jotain kirurgisempaa, ellei pysäytetty Tämä on monien ensisijainen valinta. Tämä kokoonpano on identtinen edellisen kanssa, paitsi että jos pysäytät kontin manuaalisesti huoltoa varten, Docker ei yritä kytkeä sitä päälle. automaattisesti palvelimen uudelleenkäynnistyksen jälkeen manuaalista päätöstäsi kunnioittaen.
Niille, jotka haluavat toimia vain kriittisten epäonnistumisten johdosta, on olemassa vikaantuessaTämä käytäntö käynnistää uudelleenkäynnistyksen vain, jos säilö päättyy nollasta poikkeavaan lopetuskoodiin. Voit jopa rajoittaa tätä lisäämällä uudelleenyritysten enimmäismäärän, mikä estää järjestelmää joutumasta loputtomaan uudelleenkäynnistyssilmukkaan, jos virhe on pysyvä ja kriittinen.

Automaatio "epäterveille" säilöille
Tässä kohtaa asiat muuttuvat mielenkiintoisiksi. Joskus säilö näkyy edelleen "Käytössä" ("Up"), mutta sen kunto on epäterveellinen koska se ei läpäise sisäisiä tarkastuksia. Aiemmat käytännöt ovat tässä tehottomia, koska prosessi ei ole teknisesti kuollut. Tämän ratkaisemiseksi voimme ottaa käyttöön direktiivin TERVEYSTARKASTUS Dockerfile- tai Docker Compose -tiedostossa määrittämällä komennon (kuten curl tiettyyn porttiin) varmistaaksesi, että sovellus vastaa.
Kun terveystarkastus on valmis, voimme luoda Bash-skripti joka toimii muutaman minuutin välein käyttäen crontab Linuxista. Tämän komentosarjan pitäisi suodattaa pois säilöt, jotka ovat tilassa unhealthy tai ne, jotka ovat poistuneet virhekoodilla 128 ja suorittaneet docker restart heistä.
Jotta tämä toimisi sujuvasti ja Docker-säilön automaattinen uudelleenkäynnistys onnistuisi, on tärkeää, että cron-työtä suorittavalla käyttäjällä on tarvittavat käyttöoikeudet. docker-ryhmässä vaadittavat käyttöoikeudetTällä tavoin järjestelmä valvoo ympäristöä 5 tai 10 minuutin välein ja tuo esiin kaikki "zombeiksi" muuttuneet palvelut, mikä takaa lähes täyden käytettävyyden ilman ihmisen puuttumista asiaan.
Edistynyt integrointi systemd:n kanssa
Ammattimaisemmissa ympäristöissä työskennellessäsi saatat haluta konttiesi toimivan kuten natiivit Linux-palvelutIntegroi Satamatyöläinen Systemd:n avulla voit hallita monimutkaisia riippuvuuksia, kuten varmistaa, että tietokanta käynnistyy ennen verkkosovellusta. Tämä saavutetaan luomalla tiedostoja .service reitillä /etc/systemd/system/.
Voimme suunnitella virrankatkaisu- ja käynnistysjärjestys Hallittu. Käyttämällä systemd:hen linkitettyjä mukautettuja komentosarjoja on mahdollista pysäyttää säilöt riippuvuuksiensa käänteisessä järjestyksessä tietojen vioittumisen estämiseksi. Käyttämällä tyyppiä oneshot ja konfiguroimalla targets sopiva (esim. multi-user.target o shutdown.target), palvelin hoitaa säilön koko elinkaaren.
Toinen tehokas vaihtoehto Docker-säilön automaattiseen uudelleenkäynnistykseen, kun se lakkaa vastaamasta, on käyttää lippua --rm yhdessä systemd:n kanssa. Tämä mahdollistaa säilön poistamisen pysäytyksen yhteydessä ja uuden luomisen peruskuvasta käynnistyksen yhteydessä, mikä varmistaa, että Säiliön kunnon on oltava aina puhdas ja muuttumaton.tietojen säilyvyyden delegointi yksinomaan ulkoisille levyille.

Ulkoiset työkalut ja modernit vaihtoehdot
Jos et halua vaivautua kirjoittamaan Bash-skriptejä, saatavilla on kolmannen osapuolen työkaluja. On olemassa avoimen lähdekoodin sovelluksia, jotka on erityisesti suunniteltu käynnistämään säilöt uudelleen perustuen vakiintunut aikatauluTämä on erittäin hyödyllistä toistuvissa tehtävissä, kuten SSL-varmenteiden uusimisessa. Samoin työkalut, kuten Käyttöaika Kuma Niiden avulla voit seurata palveluiden kuntoa visuaalisesta kojelaudasta ja lähettää ilmoituksia Telegramiin tai Gotifyyn, jos jokin menee pieleen. Ne ovat kaikki erittäin hyödyllisiä Docker-kontin automaattiseen uudelleenkäynnistykseen, kun se lakkaa vastaamasta.
Niille, jotka etsivät kevyempää tai alkuperäistä vaihtoehtoa, Podman Se on erinomainen vaihtoehto. Kiitos sen daemonttoman arkkitehtuurin ja toiminnallisuuden NelikkoSen avulla voit luoda yksinkertaisia deklaratiivisia tiedostoja, jotka systemd muuntaa automaattisesti optimoiduiksi palveluiksi, mikä tarjoaa paljon orgaanisemman integraation kuin perinteinen Docker.
Palvelujesi elinkaaren täydellinen hallinta edellyttää seuraavien ominaisuuksien yhdistämistä: uudelleenkäynnistyskäytännötjatkuvaa valvontaa terveystarkastukset ja monimutkaisemmissa tapauksissa tukea systemd tai valvontatyökalut jotta infrastruktuurisi on vankka eikä ole riippuvainen siitä, että joku muistaa käynnistää palvelimen manuaalisesti uudelleen joka viikko.
Teknologiaan ja internet-asioihin erikoistunut toimittaja, jolla on yli kymmenen vuoden kokemus erilaisista digitaalisista medioista. Olen työskennellyt toimittajana ja sisällöntuottajana verkkokaupan, viestinnän, verkkomarkkinoinnin ja mainonnan yrityksissä. Olen myös kirjoittanut taloustieteen, rahoituksen ja muiden alojen verkkosivuille. Työni on myös intohimoni. Nyt artikkeleideni kautta Tecnobits, Yritän tutkia kaikkia uutisia ja uusia mahdollisuuksia, joita teknologian maailma tarjoaa meille joka päivä parantaaksemme elämäämme.