GNU/Linux >> Belajar Linux >  >> Linux

Cara Memperbarui Kontainer Docker dengan Zero Downtime

Di lingkungan Dockerized, Anda menggunakan banyak gambar dan bekerja dengan banyak wadah. Saat Anda menjalankan penampung dari gambar, itu terus menjalankan versi itu karena gambar Docker tidak diperbarui secara otomatis. Anda mungkin perlu memperbaruinya secara manual. Selalu disarankan untuk menjalankan container dari image Docker terbaru.

Dalam panduan ini, kami akan menunjukkan kepada Anda contoh langsung tentang cara memperbarui container yang sedang berjalan tanpa downtime.

Prasyarat

  • Server Ubuntu 20.04 baru di Atlantic.Net Cloud Platform
  • Kata sandi root yang dikonfigurasi di server Anda

Langkah 1 – Buat Server Cloud Atlantic.Net

Pertama, masuk ke Server Cloud Atlantic.Net Anda. Buat server baru, pilih Ubuntu 20.04 sebagai sistem operasi dengan setidaknya 2GB RAM. Hubungkan ke Server Cloud Anda melalui SSH dan masuk menggunakan kredensial yang disorot di bagian atas halaman.

Setelah Anda masuk ke server Ubuntu 20.04 Anda, jalankan perintah berikut untuk memperbarui sistem dasar Anda dengan paket terbaru yang tersedia.

apt-get update -y

Langkah 2 – Instal Docker CE dan Docker Compose

Pertama, instal semua dependensi yang diperlukan dengan perintah berikut:

apt-get install git apt-transport-https ca-certificates curl software-properties-common -y

Selanjutnya, tambahkan kunci dan repositori Docker GPG dengan perintah berikut:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

Setelah repositori ditambahkan, instal komposisi Docker dan Docker dengan perintah berikut:

apt-get install docker-ce docker-compose -y

Setelah kedua paket diinstal, Anda dapat melanjutkan ke langkah berikutnya.

Langkah 3 – Buat File Penulisan Docker

Untuk tujuan tutorial ini, kita akan membuat jaringan buruh pelabuhan, volume, dan file docker-compose.yml untuk menyebarkan wadah Ghost.

Pertama, buat jaringan bernama net dan volume bernama ghost menggunakan perintah berikut:

docker network create net
docker volume create ghost

Selanjutnya, buat direktori untuk proyek Ghost dengan perintah berikut:

mkdir Ghost

Selanjutnya, ubah direktori menjadi Ghost dan buat file docker-compose.yml:

cd Ghost
nano docker-compose.yml

Tambahkan baris berikut:

version: '3.5'
services:
  ghost:
    image: ghost:3.36
    volumes:
      - ghost:/var/lib/ghost/content
    environment:
      - VIRTUAL_HOST=ghost.example.com
      - url=http://ghost.example.com
      - NODE_ENV=production
    restart: always
    networks:
      - net

volumes:
  ghost:
    external: true

networks:
  net:
    external: true

Simpan dan tutup file setelah Anda selesai.

File di atas akan mengunduh gambar Ghost versi 3.36 dan membuat wadah Ghost untuk domain ghost.example.com.

Langkah 4 – Buat Wadah Hantu

Sekarang, ubah direktori ke Ghost dan luncurkan wadah Ghost menggunakan perintah berikut:

docker-compose up -d

Anda akan mendapatkan output berikut:

Pulling ghost (ghost:3.36)...
3.36: Pulling from library/ghost
bb79b6b2107f: Pull complete
99ce436c3449: Pull complete
f7bdc31da5f5: Pull complete
7a1300b9ff59: Pull complete
a495c68fa838: Pull complete
6e362a39ec35: Pull complete
b68b4f3c36f7: Pull complete
41f8b02d4a71: Pull complete
3ecc736ea4e5: Pull complete
Digest: sha256:595c759980cd22e99037811397012908d89efb799776db222a4be6d4d892917c
Status: Downloaded newer image for ghost:3.36
Creating ghost_ghost_1 ... done

Anda dapat memeriksa gambar Ghost dengan perintah berikut:

docker images

Keluaran:

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ghost        3.36      455ce1645479   4 months ago   440MB

Anda juga dapat memeriksa wadah Ghost dengan perintah berikut:

docker ps

Keluaran:

CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS          PORTS      NAMES
d4b51b1aafc8   ghost:3.36   "docker-entrypoint.s…"   23 seconds ago   Up 20 seconds   2368/tcp   ghost_ghost_1

Langkah 5 – Perbarui File Penulisan Docker

Di bagian ini, kami akan memperbarui file penulisan Docker dan mengubah versi Ghost dari 3.36 menjadi 3.37.1:

nano docker-compose.yml

Lakukan perubahan berikut:

version: '3.5'
services:
  ghost:
    image: ghost:3.37.1
    volumes:
      - ghost:/var/lib/ghost/content
    environment:
      - VIRTUAL_HOST=ghost.example.com
      - url=http://ghost.example.com
      - NODE_ENV=production
    restart: always
    networks:
      - net

volumes:
  ghost:
    external: true

networks:
  net:
    external: true

Simpan dan tutup file setelah Anda selesai.

Langkah 6 – Luncurkan Wadah Hantu Baru

Sekarang, kita akan menggunakan metode penskalaan untuk membuat wadah Ghost baru tanpa memengaruhi wadah Ghost yang lebih lama. Anda dapat melakukannya dengan perintah berikut:

cd Ghost
docker-compose up -d --scale ghost=2 --no-recreate

Anda akan mendapatkan output berikut:

Pulling ghost (ghost:3.37.1)...
3.37.1: Pulling from library/ghost
bb79b6b2107f: Already exists
99ce436c3449: Already exists
7f4b5e228565: Pull complete
de71eab7febf: Pull complete
29961d2eb573: Pull complete
923f84e249ab: Pull complete
dfad6f73fc3d: Pull complete
b16cf83b3022: Pull complete
387b2254843c: Pull complete
Digest: sha256:fad0c2631cbba3d6c61da6fa5ef39da201780f2ae64ce51f3d5ebb412ca2564b
Status: Downloaded newer image for ghost:3.37.1
Starting ghost_ghost_1 ... done
Creating ghost_ghost_2 ... done

Anda dapat memeriksa gambar Ghost baru dengan perintah berikut:

docker images

Keluaran:

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ghost        3.37.1    c64d108acdfe   3 months ago   439MB
ghost        3.36      455ce1645479   4 months ago   440MB

Anda juga dapat memeriksa wadah Ghost baru dengan perintah berikut:

docker ps

Keluaran:

CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS      NAMES
c21550f39440   ghost:3.37.1   "docker-entrypoint.s…"   33 seconds ago   Up 31 seconds   2368/tcp   ghost_ghost_2
d4b51b1aafc8   ghost:3.36     "docker-entrypoint.s…"   4 minutes ago    Up 4 minutes    2368/tcp   ghost_ghost_1

Langkah 7 – Menskalakan Wadah Hantu Baru

Pada titik ini, kedua wadah Ghost berjalan menggunakan konfigurasi yang sama. Sekarang, kita akan menghentikan dan menghapus wadah Ghost yang lama.

docker container stop ghost_ghost_1
docker container rm ghost_ghost_1

Sekarang, jalankan perintah berikut untuk memperkecil konfigurasi ke pengaturan aslinya:

cd Ghost
docker-compose up -d --scale ghost=1 --no-recreate

Anda juga dapat memeriksa log penampung Ghost yang baru untuk informasi lebih lanjut.

docker logs ghost_ghost_2

Keluaran:

[2021-03-05 04:50:13] INFO Blog is in maintenance mode.
[2021-03-05 04:50:13] INFO Ghost is running in production...
[2021-03-05 04:50:13] INFO Your site is now available on http://ghost.example.com/
[2021-03-05 04:50:13] INFO Ctrl+C to shut down
[2021-03-05 04:50:13] INFO Ghost boot 3.581s
[2021-03-05 04:50:13] INFO Creating database backup
[2021-03-05 04:50:13] INFO Database backup written to: /var/lib/ghost/content/data/ghost.ghost.2021-03-05-04-50-13.json
[2021-03-05 04:50:13] INFO Updating portal button setting to false
[2021-03-05 04:50:13] INFO Blog is out of maintenance mode.

Wadah Hantu Anda sekarang diperbarui dengan gambar Hantu baru.

Kesimpulan

Dalam panduan di atas, Anda mempelajari cara memperbarui wadah Docker tanpa waktu henti. Mulailah dengan memperbarui wadah Docker Anda di hosting VPS dari Atlantic.Net!


Linux
  1. Cara Menginstal WordPress dengan Docker di Ubuntu

  2. Cara Menginstal Jenkins dengan Docker

  3. Bagaimana Cara Memperbarui Iso Dengan Zsync?

  1. Cara Menyebarkan Wadah nginx dengan Docker di Linode

  2. Cara Menjalankan MySQL Dalam Wadah Docker

  3. Cara Keluar dari Kontainer Docker

  1. Cara Menggunakan Perintah Docker Run dengan Contoh

  2. Cara Update Image dan Container Docker ke Versi Terbaru

  3. Cara Menjalankan Jenkins Container sebagai Layanan Systemd dengan Docker