Rumah >Operasi dan penyelenggaraan >Docker >buruh pelabuhan tidak pernah keluar dari bekas

buruh pelabuhan tidak pernah keluar dari bekas

王林
王林asal
2023-05-16 20:35:362444semak imbas

Untuk memastikan bekas Docker berjalan dan tidak keluar, terdapat banyak cara untuk melakukannya. Dalam artikel ini, kami akan membincangkan beberapa kaedah yang biasa digunakan serta kebaikan dan keburukannya.

Kaedah 1: Gunakan pilihan --restart

Docker menyediakan pilihan --restart untuk memulakan semula bekas secara automatik apabila bekas keluar secara tidak normal. Terdapat tiga nilai pilihan, iaitu no, on-failure dan always, yang masing-masing sepadan dengan tiada restart, restart pada exit abnormal dan selalu restart. Contoh khusus:

docker run --restart=always IMAGE_NAME

Kelebihan menggunakan pilihan --restart ialah ia mudah dan mudah digunakan Anda hanya perlu menambah pilihan pada baris arahan. Tetapi jika ralat berlaku dalam bekas, ia akan terus dimulakan semula sehingga bekas itu dihentikan secara manual. Ini boleh menyebabkan ketidakstabilan kod dan kehilangan data.

Kaedah 2: Gunakan Docker Compose

Docker Compose ialah alat yang boleh mentakrif dan menjalankan berbilang bekas Docker. Ia boleh menerangkan hubungan antara bekas dan parameter permulaan melalui fail yml. Tambahkan konfigurasi berikut dalam fail docker-compose.yml:

version: '3'

services:
  app:
    build: .
    restart: always

Kemudian anda boleh menggunakan perintah docker-compose untuk memulakan bekas: Pilihan

docker-compose up -d

restart: always memberitahu Docker untuk memulakan semula secara automatik bekas apabila bekas keluar secara tidak normal. Kelebihan kaedah ini ialah ia boleh menguruskan berbilang bekas, yang mudah dan pantas, tetapi masih terdapat masalah kontena dimulakan semula sepanjang masa.

Kaedah 3: Gunakan proses daemon

Menggunakan proses daemon ialah cara yang boleh dipercayai untuk memastikan bekas Docker daripada keluar. Mulakan proses daemon dalam bekas, dan kemudian biarkan bekas Docker berjalan di bawah pengawasan proses daemon. Jika terdapat masalah dengan bekas, daemon akan memulakan semula bekas.

Berikut ialah contoh menggunakan supervisor daemon untuk memulakan perkhidmatan Node.js:

  1. Pasang penyelia:
rreee
  1. Buat fail supervisord.conf, tambah kandungan berikut:
npm install -g supervisor
  1. Tambah konfigurasi berikut dalam Dockerfile:
[supervisord]
nodaemon=true

[program:app]
command=supervisor app.js
directory=/app
autostart=true
autorestart=true
user=root

Jana imej dan mulakan bekas :

RUN apt-get update && apt-get install -y supervisor

COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

Kelebihan menggunakan daemon ialah anda boleh mengawal kelakuan bekas secara fleksibel, tetapi ia memerlukan beberapa kerja konfigurasi tambahan dan anda perlu memulakan daemon, yang mengambil beberapa sumber sistem.

Kaedah 4: Gunakan pemantauan luaran

Gunakan sistem pemantauan luaran untuk memantau bekas Docker dan mulakan semula bekas apabila pengecualian berlaku, membolehkan anda mengawal kelakuan bekas dengan lebih fleksibel. Apabila bekas tidak normal, sistem pemantauan boleh mengambil beberapa tindakan, seperti mengeluarkan penggera, merakam log, memulakan semula bekas, dsb.

Sebagai contoh, anda boleh menggunakan systemd untuk memantau bekas Docker:

  1. Buat fail unit sistem, seperti mydocker.service, dengan kandungan berikut:
docker build -t IMAGE_NAME .
docker run -d IMAGE_NAME

Fail ini mentakrifkan bekas bernama myapp. Apabila masalah berlaku dengan bekas, systemd akan memulakan semula bekas secara automatik. Gunakan arahan systemctl untuk mendayakan perkhidmatan ini:

[Unit]
Description=My Docker Container

[Service]
ExecStart=/usr/bin/docker start -a myapp
Restart=always
RestartSec=10s
ExecStop=/usr/bin/docker stop -t 2 myapp

[Install]
WantedBy=default.target

Kelebihan menggunakan pemantauan luaran ialah ia lebih fleksibel dan boleh menggunakan pelbagai sistem pemantauan pihak ketiga, tetapi ia memerlukan konfigurasi dan kerja penyelenggaraan tambahan.

Secara amnya, terdapat banyak cara untuk memastikan bekas Docker berjalan untuk masa yang lama, masing-masing mempunyai kebaikan dan keburukan tersendiri. Pilihan khusus harus berdasarkan keperluan sebenar. Apabila memulakan bekas, anda juga harus mempertimbangkan kestabilan dan keselamatan operasi kontena, dan menggunakan alat automasi yang sesuai untuk mengurangkan operasi manual.

Atas ialah kandungan terperinci buruh pelabuhan tidak pernah keluar dari bekas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn