GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Panduan Pemula untuk LXD:Menyiapkan Server Web Apache

Apa itu LXD?

LXD (diucapkan "Lex-Dee") adalah manajer kontainer sistem yang dibangun di atas LXC (Linux Containers) yang saat ini didukung oleh Canonical. Tujuan LXD adalah untuk memberikan pengalaman yang mirip dengan mesin virtual tetapi melalui containerisasi daripada virtualisasi perangkat keras. Dibandingkan dengan Docker untuk memberikan aplikasi, LXD menawarkan fungsionalitas sistem operasi yang hampir lengkap dengan fitur tambahan seperti snapshot, migrasi langsung, dan manajemen penyimpanan.

Manfaat utama LXD adalah dukungan wadah kepadatan tinggi dan kinerja yang diberikannya dibandingkan dengan mesin virtual. Komputer dengan RAM 2GB cukup dapat mendukung setengah lusin wadah. Selain itu, LXD secara resmi mendukung gambar kontainer dari distribusi Linux utama. Kita dapat memilih distribusi dan versi Linux untuk dijalankan dalam container.

Panduan ini mencakup cara menginstal dan menyiapkan LXD 3 pada Linode dan cara menyiapkan server Web Apache dalam sebuah wadah.

Catatan Untuk mempermudah, istilah wadah digunakan di seluruh panduan ini untuk menjelaskan wadah sistem LXD.

Sebelum Anda Mulai

  1. Selesaikan panduan Membuat Instans Komputasi. Pilih Linode dengan memori RAM minimal 2GB, seperti Linode 2GB. Tentukan distribusi Ubuntu 19.04. Anda dapat menentukan distribusi Linux yang berbeda, selama ada dukungan untuk paket snap (snapd); lihat Informasi Lebih Lanjut untuk detail selengkapnya.

  2. Ikuti panduan Menyiapkan dan Mengamankan Instans Komputasi untuk memperbarui sistem Anda. Anda mungkin juga ingin mengatur zona waktu, mengkonfigurasi nama host Anda, membuat akun pengguna terbatas, dan memperkuat akses SSH.

Konfigurasi Dukungan Paket Snap

LXD tersedia sebagai paket Debian dalam versi dukungan jangka panjang (LTS) Ubuntu, seperti Ubuntu 18.04 LTS. Untuk versi Ubuntu dan distribusi lainnya, LXD tersedia sebagai paket snap. Paket Snap adalah paket universal karena ada satu file paket yang berfungsi pada semua distribusi Linux yang didukung. Lihat bagian Informasi Lebih Lanjut untuk detail selengkapnya tentang apa itu paket snap, distribusi Linux apa yang didukung, dan cara menyiapkannya.

  1. Verifikasi bahwa dukungan snap diinstal dengan benar. Perintah berikut menunjukkan bahwa tidak ada paket snap yang diinstal, atau ada beberapa yang diinstal.

    snap list
    
    No snaps are installed yet. Try 'snap install hello-world'.
  2. Lihat detail paket snap LXD lxd . Output di bawah ini menunjukkan bahwa, saat ini, versi terbaru dari LXD adalah 3.12 di default stable saluran. Saluran ini sering diperbarui dengan fitur-fitur baru. Ada juga saluran lain seperti 3.0/stable saluran yang memiliki versi LTS LXD (didukung bersama dengan Ubuntu 18.04, hingga 2023) dan 2.0/stable saluran (didukung bersama dengan Ubuntu 16.04, hingga 2021). Kami akan menggunakan LXD versi terbaru dari stable default saluran.

    snap info lxd
    
    name:      lxd
    summary:   System container manager and API
    publisher: Canonical✓
    contact:   https://github.com/lxc/lxd/issues
    license:   Apache-2.0
    description: |
      **LXD is a system container manager**
    
      With LXD you can run hundreds of containers of a variety of Linux
      distributions, apply resource limits, pass in directories, USB devices
      or GPUs and setup any network and storage you want.
    
      LXD containers are lightweight, secure by default and a great
      alternative to running Linux virtual machines.
    
    
      **Run any Linux distribution you want**
    
      Pre-made images are available for Ubuntu, Alpine Linux, ArchLinux,
      CentOS, Debian, Fedora, Gentoo, OpenSUSE and more.
    
      A full list of available images can be [found
      here](https://images.linuxcontainers.org)
    
      Can't find the distribution you want? It's easy to make your own images
      too, either using our `distrobuilder` tool or by assembling your own image
      tarball by hand.
    
    
      **Containers at scale**
    
      LXD is network aware and all interactions go through a simple REST API,
      making it possible to remotely interact with containers on remote
      systems, copying and moving them as you wish.
    
      Want to go big? LXD also has built-in clustering support,
      letting you turn dozens of servers into one big LXD server.
    
    
      **Configuration options**
    
      Supported options for the LXD snap (`snap set lxd KEY=VALUE`):
       - criu.enable: Enable experimental live-migration support [default=false]
       - daemon.debug: Increases logging to debug level [default=false]
       - daemon.group: Group of users that can interact with LXD [default=lxd]
       - ceph.builtin: Use snap-specific ceph configuration [default=false]
       - openvswitch.builtin: Run a snap-specific OVS daemon [default=false]
    
      [Documentation](https://lxd.readthedocs.io)
    snap-id: J60k4JY0HppjwOjW8dZdYc8obXKxujRu
    channels:
      stable:        3.12        2019-04-16 (10601) 56MB -
      candidate:     3.12        2019-04-26 (10655) 56MB -
      beta:          ↑
      edge:          git-570aaa1 2019-04-27 (10674) 56MB -
      3.0/stable:    3.0.3       2018-11-26  (9663) 53MB -
      3.0/candidate: 3.0.3       2019-01-19  (9942) 53MB -
      3.0/beta:      ↑
      3.0/edge:      git-eaa62ce 2019-02-19 (10212) 53MB -
      2.0/stable:    2.0.11      2018-07-30  (8023) 28MB -
      2.0/candidate: 2.0.11      2018-07-27  (8023) 28MB -
      2.0/beta:      ↑
      2.0/edge:      git-c7c4cc8 2018-10-19  (9257) 26MB -
  3. Instal lxd paket jepret. Jalankan perintah berikut untuk menginstal paket snap untuk LXD.

    sudo snap install lxd
    
    lxd 3.12 from Canonical✓ installed

Anda dapat memverifikasi bahwa paket snap telah diinstal dengan menjalankan snap list lagi. core paket snap adalah prasyarat untuk sistem apa pun dengan dukungan paket snap. Saat Anda menginstal paket snap pertama Anda, core diinstal dan dibagikan di antara semua paket snap lainnya yang akan diinstal di masa mendatang.

    snap list



Name  Version  Rev    Tracking  Publisher   Notes
core  16-2.38  6673   stable    canonical✓  core
lxd   3.12     10601  stable    canonical✓  -

Inisialisasi LXD

  1. Tambahkan pengguna Unix non-root Anda ke lxd grup:

    sudo usermod -a -G lxd username
    
    Catatan Dengan menambahkan akun pengguna Unix non-root ke lxd grup, Anda dapat menjalankan lxc perintah tanpa menambahkan sudo . Tanpa tambahan ini, Anda harus menambahkan sudo untuk setiap lxc perintah.
  2. Mulai sesi SSH baru agar perubahan sebelumnya diterapkan. Misalnya, logout dan login lagi.

  3. Verifikasi ruang disk kosong yang tersedia:

    df -h /
    

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda         49G  2.0G   45G   5% /
    Dalam hal ini ada 45GB ruang disk kosong. LXD membutuhkan ruang minimal 15GB untuk kebutuhan penyimpanan container. Kami akan mengalokasikan 15GB ruang untuk LXD, menyisakan 30GB ruang kosong untuk kebutuhan server.

  4. Jalankan lxd init untuk menginisialisasi LXD:

    sudo lxd init
    

    Anda akan diminta beberapa kali selama proses inisialisasi. Pilih default untuk semua opsi.

    Would you like to use LXD clustering? (yes/no) [default=no]:
    Do you want to configure a new storage pool? (yes/no) [default=yes]:
    Name of the new storage pool [default=default]:
    Name of the storage backend to use (btrfs, ceph, dir, lvm, zfs) [default=zfs]:
    Create a new ZFS pool? (yes/no) [default=yes]:
    Would you like to use an existing block device? (yes/no) [default=no]:
    Size in GB of the new loop device (1GB minimum) [default=15GB]:
    Would you like to connect to a MAAS server? (yes/no) [default=no]:
    Would you like to create a new local network bridge? (yes/no) [default=yes]:
    What should the new bridge be called? [default=lxdbr0]:
    What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
    What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
    Would you like LXD to be available over the network? (yes/no) [default=no]:
    Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
    Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:

Server Web Apache dengan LXD

Bagian ini akan membuat wadah, menginstal server web Apache, dan menambahkan iptables yang sesuai aturan untuk mengekspos pos 80.

  1. Luncurkan wadah baru:

    lxc launch ubuntu:18.04 web
    
  2. Perbarui daftar paket dalam wadah.

    lxc exec web -- apt update
    
  3. Instal Apache di wadah LXD.

    lxc exec web -- apt install apache2
    
  4. Dapatkan cangkang di wadah LXD.

    lxc exec web -- sudo --user ubuntu --login
    
  5. Edit halaman web default Apache untuk membuat referensi yang dijalankan di dalam wadah LXD.

    sudo nano /var/www/html/index.html
    

    Ubah baris It works! (nomor baris 224) ke It works inside a LXD container! . Kemudian, simpan dan keluar.

  6. Keluar kembali ke host. Kami telah membuat semua perubahan yang diperlukan pada penampung.

    exit
    
  7. Tambahkan perangkat proxy LXD untuk mengalihkan koneksi dari internet ke port 80 (HTTP) di server ke port 80 di container ini.

    sudo lxc config device add web myport80 proxy listen=tcp:0.0.0.0:80 connect=tcp:127.0.0.1:80
    
Catatan Dalam versi LXD terbaru, Anda perlu menentukan alamat IP (seperti 127.0.0.1 ) sebagai ganti nama host (seperti localhost ). Jika container Anda sudah memiliki perangkat proxy yang menggunakan nama host, Anda dapat mengedit konfigurasi container untuk mengganti dengan alamat IP dengan menjalankan lxc config edit web .
  1. Dari komputer lokal Anda, navigasikan ke alamat IP publik Linode Anda di browser web. Anda akan melihat halaman Apache default:

Perintah LXD Umum

  • Daftar semua penampung:

     lxc list
    
    To start your first container, try: lxc launch ubuntu:18.04
    
    +------+-------+------+------+------+-----------+
    | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
    +------+-------+------+------+------+-----------+
  • Buat daftar semua repositori gambar kontainer yang tersedia:

      lxc remote list
    

    +-----------------+------------------------------------------+---------------+-------------+--------+--------+
    |      NAME       |                   URL                    |   PROTOCOL    |  AUTH TYPE  | PUBLIC | STATIC |
    +-----------------+------------------------------------------+---------------+-------------+--------+--------+
    | images          | https://images.linuxcontainers.org       | simplestreams | none        | YES    | NO     |
    +-----------------+------------------------------------------+---------------+-------------+--------+--------+
    | local (default) | unix://                                  | lxd           | file access | NO     | YES    |
    +-----------------+------------------------------------------+---------------+-------------+--------+--------+
    | ubuntu          | https://cloud-images.ubuntu.com/releases | simplestreams | none        | YES    | YES    |
    +-----------------+------------------------------------------+---------------+-------------+--------+--------+
    | ubuntu-daily    | https://cloud-images.ubuntu.com/daily    | simplestreams | none        | YES    | YES    |
    +-----------------+------------------------------------------+---------------+-------------+--------+--------+
    Repositori ubuntu memiliki gambar wadah versi Ubuntu. images repositori memiliki gambar kontainer dari sejumlah besar distribusi Linux yang berbeda. ubuntu-daily memiliki gambar kontainer harian yang akan digunakan untuk tujuan pengujian. local repositori adalah server LXD yang baru saja kita instal. Ini tidak bersifat publik dan dapat digunakan untuk menyimpan gambar kontainer Anda sendiri.

  • Daftar semua gambar kontainer yang tersedia dari repositori:

     lxc image list ubuntu:
    
    +------------------+--------------+--------+-----------------------------------------------+---------+----------+-------------------------------+
    |      ALIAS       | FINGERPRINT  | PUBLIC |                  DESCRIPTION                  |  ARCH   |   SIZE   |          UPLOAD DATE          |
    +------------------+--------------+--------+-----------------------------------------------+---------+----------+-------------------------------+
    | b (11 more)      | 5b72cf46f628 | yes    | ubuntu 18.04 LTS amd64 (release) (20190424)   | x86_64  | 180.37MB | Apr 24, 2019 at 12:00am (UTC) |
    +------------------+--------------+--------+-----------------------------------------------+---------+----------+-------------------------------+
    | c (5 more)       | 4716703f04fc | yes    | ubuntu 18.10 amd64 (release) (20190402)       | x86_64  | 313.29MB | Apr 2, 2019 at 12:00am (UTC)  |
    +------------------+--------------+--------+-----------------------------------------------+---------+----------+-------------------------------+
    | d (5 more)       | faef94acf5f9 | yes    | ubuntu 19.04 amd64 (release) (20190417)       | x86_64  | 322.56MB | Apr 17, 2019 at 12:00am (UTC) |
    +------------------+--------------+--------+-----------------------------------------------+---------+----------+-------------------------------+
    .....................................................................

    Catatan Dua kolom pertama untuk alias dan sidik jari memberikan pengenal yang dapat digunakan untuk menentukan gambar wadah saat meluncurkannya.
    Cuplikan keluaran menunjukkan gambar penampung versi Ubuntu 18.04 LTS, 18.10, dan 19.04. Saat membuat wadah, kita bisa menentukan alias pendek. Misalnya, ubuntu:b berarti repositorinya adalah ubuntu dan gambar kontainer memiliki alias pendek b (untuk bionik , nama kode Ubuntu 18.04 LTS).

  • Dapatkan informasi lebih lanjut tentang gambar kontainer:

     lxc image info ubuntu:b
    

    Fingerprint: 5b72cf46f628b3d60f5d99af48633539b2916993c80fc5a2323d7d841f66afbe
    Size: 180.37MB
    Architecture: x86_64
    Public: yes
    Timestamps:
        Created: 2019/04/24 00:00 UTC
        Uploaded: 2019/04/24 00:00 UTC
        Expires: 2023/04/26 00:00 UTC
        Last used: never
    Properties:
        release: bionic
        version: 18.04
        architecture: amd64
        label: release
        serial: 20190424
        description: ubuntu 18.04 LTS amd64 (release) (20190424)
        os: ubuntu
    Aliases:
        - 18.04
        - 18.04/amd64
        - b
        - b/amd64
        - bionic
        - bionic/amd64
        - default
        - default/amd64
        - lts
        - lts/amd64
        - ubuntu
        - amd64
    Cached: no
    Auto update: disabled
    Outputnya menunjukkan detail gambar container termasuk semua alias yang tersedia. Untuk Ubuntu 18.04 LTS, kita dapat menentukan b (untuk bionic , nama kode Ubuntu 18.04 LTS) atau alias lainnya.

  • Luncurkan wadah baru dengan nama mycontainer :

     lxc launch ubuntu:18.04 mycontainer
    
    Creating mycontainer
    Starting mycontainer
  • Periksa daftar penampung untuk memastikan penampung baru berjalan:

     lxc list
    
    +-------------+---------+-----------------------+---------------------------+------------+-----------+
    |    NAME     |  STATE  |         IPV4          |          IPV6             |    TYPE    | SNAPSHOTS |
    +-------------+---------+-----------------------+---------------------------+------------+-----------+
    | mycontainer | RUNNING | 10.142.148.244 (eth0) | fde5:5d27:...:1371 (eth0) | PERSISTENT | 0         |
    +-------------+---------+-----------------------+---------------------------+------------+-----------+
  • Jalankan perintah dasar di mycontainer :

     lxc exec mycontainer -- apt update
     lxc exec mycontainer -- apt upgrade
    
    Catatan Karakter -- instruksikan lxc perintah untuk tidak mengurai parameter baris perintah lagi.
  • Buka sesi shell di dalam mycontainer :

     lxc exec mycontainer -- sudo --login --user ubuntu
    
    To run a command as administrator (user "root"), use "sudo <command>".
    See "man sudo_root" for details.
    
    [email protected]:~$
    Catatan

    Gambar wadah Ubuntu secara default memiliki akun non-root dengan nama pengguna ubuntu . Akun ini dapat menggunakan sudo dan tidak memerlukan kata sandi untuk melakukan tugas administratif.

    sudo perintah menyediakan login ke akun yang ada ubuntu .

  • Lihat log kontainer:

     lxc info mycontainer --show-log
    
  • Hentikan wadah:

     lxc stop mycontainer
    
  • Keluarkan wadah:

     lxc delete mycontainer
    
    Catatan Sebuah container harus dihentikan sebelum dapat dihapus.

Pemecahan masalah

Kesalahan “unix.socket:connect:koneksi ditolak”

Saat Anda menjalankan lxc perintah, Anda mendapatkan kesalahan berikut:

    lxc list



Error: Get http://unix.socket/1.0: dial unix /var/snap/lxd/common/lxd/unix.socket: connect: connection refused

Ini terjadi ketika layanan LXD sedang tidak berjalan. Secara default, layanan LXD berjalan segera setelah berhasil dikonfigurasi. LihatMenginisialisasi LXD untuk mengonfigurasi LXD.

Kesalahan “unix.socket:connect:izin ditolak”

Saat Anda menjalankan lxc perintah, Anda mendapatkan kesalahan berikut:

    lxc list



Error: Get http://unix.socket/1.0: dial unix /var/snap/lxd/common/lxd/unix.socket: connect: permission denied

Ini terjadi ketika akun pengguna terbatas Anda bukan anggota lxd grup, atau Anda tidak logout dan login kembali sehingga keanggotaan grup baru menjadi lxd grup diperbarui.

Jika akun pengguna Anda adalah ubuntu , perintah berikut menunjukkan apakah Anda adalah anggota lxd grup:

    groups ubuntu



ubuntu : ubuntu sudo lxd

Dalam contoh ini, kami adalah anggota lxd grup dan kita hanya perlu logout dan login lagi. Jika Anda bukan anggota lxd grup, lihat Inisialisasi LXD tentang cara membuat akun terbatas Anda menjadi anggota lxd grup.

Langkah Selanjutnya

Jika Anda berencana untuk menggunakan satu situs web, maka satu perangkat proxy ke wadah situs web sudah cukup. Jika Anda berencana untuk menggunakan beberapa situs web, Anda dapat menginstal host virtual di dalam wadah situs web. Jika sebaliknya Anda ingin menyiapkan beberapa situs web di wadahnya sendiri, maka Anda perlu menyiapkan proxy terbalik di wadah. Dalam hal ini, perangkat proxy akan mengarahkan ke wadah proxy terbalik untuk mengarahkan koneksi ke wadah situs web individu.

Informasi Lebih Lanjut

Anda mungkin ingin berkonsultasi dengan sumber daya berikut untuk informasi tambahan tentang topik ini. Meskipun ini disediakan dengan harapan dapat bermanfaat, harap perhatikan bahwa kami tidak dapat menjamin keakuratan atau ketepatan waktu materi yang dihosting secara eksternal.

  • Apa itu paket snap
  • Menginstal snapd
  • Pengantar LXD
  • Seri entri blog di LXD 2.0
  • Komunitas dukungan LXD
  • Cobalah LXD Daring
  • Setelan Proksi Terbalik NGINX

Docker
  1. Instal server web Apache CentOS 6 / RHEL 6

  2. Instal server web Apache HTTPD di Fedora 18

  3. Instal server web Apache di openSUSE 12

  1. Instal server web Apache di Ubuntu 12.10

  2. Panduan Pemula untuk LXD:Menyiapkan Proksi Terbalik untuk Meng-host Situs Web Mulitple

  3. Akses Server Web Apache Di Dalam Wadah LXD

  1. Cara mengkonfigurasi server web Apache

  2. Menyetel Apache Web Server Keepalive

  3. Cara Mengatur Server Web Apache Sederhana di Wadah Docker