Cara Menggunakan Podman, Dockerfile, dan Ubuntu: Pengurusan Kontena yang Selamat dan Moden di Linux

目次

1. Pengenalan

Evolusi dan Kepentingan yang Meningkat dalam Teknologi Kontena

Dalam beberapa tahun kebelakangan ini, teknologi kontena telah berkembang dengan pantas dalam bidang pembangunan aplikasi dan operasi. Terutamanya, keupayaan untuk menyamakan persekitaran pembangunan dan produksi memastikan kebolehulangan operasi, satu manfaat utama yang telah mendapat sokongan kuat di kalangan jurutera.

Walaupun Docker masih menjadi platform kontena yang paling dikenali, Podman semakin menarik perhatian sebagai alternatif moden. Podman menawarkan antara muka baris perintah (CLI) yang hampir serupa dengan Docker tetapi menonjol dengan senibina tanpa daemon dan ringan serta sokongan untuk operasi tanpa root (non-root).

Mengapa “Podman + Dockerfile + Ubuntu”?

Dalam artikel ini, kami akan menjelaskan cara menggabungkan Podman, Dockerfile, dan Ubuntu untuk aliran kerja kontena moden di Linux.

  • Ubuntu ialah distribusi Linux yang popular digunakan oleh semua orang, dari pemula hingga pengguna lanjutan,
  • Dockerfile berfungsi sebagai pelan biru untuk membina imej kontena,
  • dan Podman ialah alat generasi seterusnya yang direka untuk mengurus imej-imej ini dengan fleksibel dan selamat.

Dengan kesedaran keselamatan yang semakin meningkat, pendekatan menggunakan Podman dengan Dockerfile di Ubuntu semakin diterima oleh pemaju individu dan pasukan perusahaan.

Tujuan dan Sasaran Pembaca

Matlamat artikel ini ialah menyediakan panduan langkah demi langkah yang jelas untuk membina kontena praktikal dengan Podman dan Dockerfile di Ubuntu.

Artikel ini ditujukan kepada pembaca seperti:

  • Pemaju yang berpengalaman dengan Docker dan ingin mengetahui tentang Podman
  • Pengguna Ubuntu yang mencari pengurusan kontena yang selamat
  • Jurutera yang ingin mengintegrasikan teknologi kontena ke dalam aliran kerja mereka
  • Pemula yang berminat menulis Dockerfile dan membina dengan Podman

Kami akan membincangkan segala-galanya dari asas hingga tip penyelesaian masalah, perbezaan utama dengan Docker, dan cara memigrasi.

2. Apa itu Podman?

Gambaran Keseluruhan Podman

Podman (Pod Manager) ialah alat pengurusan kontena generasi seterusnya yang dibangunkan oleh komuniti yang dipimpin oleh Red Hat. Seperti Docker, ia boleh membina menjalankan, dan mengurus kontena yang mematuhi OCI, tetapi reka bentuk dan senibinanya berbeza dalam pelbagai cara yang signifikan.

Ciri utama Podman ialah ia tidak memerlukan daemon latar belakang. Ini membolehkan operasi yang ringan dan selamat. Podman juga menyokong mod tanpa root, membolehkan pengguna biasa mengurus kontena tanpa keistimewaan pentadbir. CLI-nya sangat serasi dengan Docker, jadi kebanyakan arahan hampir serupa.

Ciri-ciri Utama Podman

Berikut adalah beberapa ciri penting Podman:

Senibina Tanpa Daemon

Podman beroperasi tanpa daemon latar belakang (proses yang tinggal) untuk pengurusan kontena. Ini menghasilkan penggunaan sumber yang cekap, tanpa proses latar yang tidak diperlukan.

Sokongan Tanpa Root (Pengguna Biasa)

Podman membenarkan pengguna biasa menjalankan dan mengurus kontena tanpa keistimewaan pentadbir. Ini menjadikannya selamat untuk dijalankan dalam persekitaran berbilang atau pelayan, mengurangkan risiko kesel dengan ketara.

CLI Serasi Docker

Podman menggunakan struktur arahan yang hampir sama dengan Docker. Sebagai contoh, arahan Docker berikut berfungsi hampir identik dalam Podman:

podman build -t myimage .
podman run -it myimage bash

Ini membolehkan pengguna yang biasa dengan Docker beralih dengan lancar ke Podman.

Ciri Pod

Podman mengadopsi konsep “Pod” daripada Kubernetes, membolehkan anda mengurus pelbagai kontena sebagai satu unit logik. Ini meningkatkan keserasian dengan Kubernetes dan memudahkan migrasi dari persekitaran tempatan ke awan.

Keserasian dengan Ubuntu

Walaupun Podman banyak digunakan pada Fedora dan distribusi berasaskan RHEL, ia juga berjalan dengan stabil di Ubuntu. Anda boleh memasangnya dari repositori rasmi, dan penyediaannya mudah. Terutama sejak Ubuntu 20.04 LTS, penyelenggaraan pakej telah dipertingkatkan, mengurangkan halangan untuk mengadopsi.

3. Memasang Podman pada Ubuntu

Sebelum Anda Mula: Senarai Semak Pra-Pemasangan

Sebelum memasang Podman pada Ubuntu, pertama periksa versi Ubuntu anda. Podman disarankan untuk Ubuntu 20.04 LTS atau lebih baru. Versi lama mungkin tidak mempunyai pakej yang diperlukan dalam repositori rasmi.

Periksa versi Ubuntu anda dengan perintah berikut:

lsb_release -a

Pemasangan Podman memerlukan keistimewaan sudo. Walaupun anda merancang untuk menggunakan mod rootless, keistimewaan pentadbir diperlukan untuk pemasangan awal, jadi pastikan anda memilikinya.

Memasang Podman (Repositori Rasmi Ubuntu)

Pada Ubuntu 20.04, 22.04, atau versi lebih baru, anda boleh memasang Podman dengan mudah menggunakan APT:

sudo apt update
sudo apt install -y podman

Selepas pemasangan, periksa versi untuk mengesahkan pemasangan berjaya:

podman --version

Cara Mendapatkan Versi Terbaru (PPA Rasmi)

Pakej Podman dalam repositori standard Ubuntu mungkin bukan yang paling baru. Jika anda mahu ciri‑ciri terkini, gunakan Personal Package Archive (PPA) rasmi:

. /etc/os-release
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add -
sudo apt update
sudo apt install -y podman

Ini memberi anda akses kepada keluaran Podman terbaru, setara dengan ekosistem Red Hat dan Fedora.

Ujian Fungsi Asas Podman

Selepas pemasangan, jalankan pemeriksaan ringkas:

podman info

Perintah ini memaparkan versi Podman, konfigurasi, dan ciri‑ciri yang disokong seperti mod rootless.

Uji penarikan dan menjalankan kontena Alpine Linux rasmi:

podman run --rm -it alpine sh

Jika shell dilancarkan dengan berjaya, persediaan Podman anda berfungsi dengan betul.

4. Menggunakan Dockerfile dengan Podman

Apa itu Dockerfile?

Dockerfile ialah pelan biru untuk membina imej kontena. Ia merupakan fail teks yang menyenaraikan imej asas, pakej yang hendak dipasang, fail yang hendak disalin, dan arahan lain secara berurutan.

Alat kontena seperti Podman dan Docker boleh mencipta persekitaran yang konsisten secara automatik berdasarkan fail ini.

Contoh arahan:

FROM ubuntu:22.04
RUN apt update && apt install -y curl
COPY ./app.sh /usr/local/bin/app.sh
CMD ["bash", "/usr/local/bin/app.sh"]

Arahan ini memasang pakej, menyalin skrip, dan menentukan apa yang harus dijalankan secara lalai dalam imej yang terhasil.

Cara Menggunakan Dockerfile dengan Podman

Anda boleh membina imej kontena daripada Dockerfile dengan Podman, hampir sama seperti yang anda lakukan dengan Docker.

1. Sediakan Direktori

Atur fail‑fail anda seperti berikut:

project/
├── Dockerfile
└── app.sh

app.sh boleh menjadi skrip ringkas:

#!/bin/bash
echo "Hello from Podman container!"

Jadikan skrip boleh dijalankan:

chmod +x app.sh

2. Bina dengan Podman

Dengan Dockerfile berada dalam direktori semasa, jalankan:

podman build -t mypodmanapp .

Ini akan menghasilkan imej kontena bernama mypodmanapp.

3. Periksa Hasil Binaan

Lihat imej yang telah dicipta dengan:

podman images

4. Jalankan Kontena

Mulakan kontena daripada imej yang telah dibina:

podman run --rm mypodmanapp

Jika semuanya disetkan dengan betul, anda akan melihat: Hello from Podman container!

Perbezaan dengan Containerfile

Podman menyokong fail yang dinamakan Containerfile, yang menggunakan sintaks yang sama seperti Dockerfile. Ini hanyalah nama neutral, tidak terikat kepada jenama Docker.

Fungsinya adalah serupa. Sama ada anda menamakan fail anda Dockerfile atau Containerfile, Podman akan menggunakannya:

podman build -f Containerfile -t myimage .

Hanya nyatakan nama fail dengan pilihan -f jika diperlukan.

5. Contoh Praktikal: Membina Kontena Beras Ubuntu

Membuat Dockerfile Berasaskan Ubuntu

Mari kita lalui langkah demi langkah membina Dockerfile berasaskan Ubuntu dan membina serta menjalankan imej kontena dengan Podman.

Ini adalah contoh Dockerfile yang ringkas:

FROM ubuntu:22.04

RUN apt update && 
    apt install -y curl && 
    apt clean

COPY hello.sh /usr/local/bin/hello.sh
RUN chmod +x /usr/local/bin/hello.sh

CMD ["/usr/local/bin/hello.sh"]

Dockerfile ini:

  • Menggunakan imej Ubuntu 22.04 rasmi
  • Memasang pakej curl
  • Menyalin hello.sh dari hos ke dalam kontena
  • Menetapkan hello.sh sebagai skrip lalai

Sekarang, cipta skrip hello.sh yang ringkas:

#!/bin/bash
echo "Hello from a Podman container!"

Berikan kebenaran pelaksanaan kepadanya:

chmod +x hello.sh

Membina Imej dengan Podman

Setelah fail anda sedia, bina imej dengan:

podman build -t ubuntu-hello .

Bendera -t ubuntu-hello melabel imej anda; titik . menentukan direktori bina.

Jika berjaya, anda akan melihat imej baru anda disenaraikan dengan:

podman images

Menjalankan dan Menguji Imej

Jalankan kontena dari imej baru anda:

podman run --rm ubuntu-hello

Output sampel:

Hello from a Podman container!

Pilihan --rm secara automatik menghapuskan kontena selepas ia keluar, sempurna untuk pengujian.

Petua: Akses Kontena Interaktif

Jika anda ingin bekerja secara interaktif di dalam kontena, gunakan pilihan -it untuk memulakan Bash:

podman run -it ubuntu-hello bash

Ini memberi anda persekitaran pembangunan Ubuntu yang ringan di dalam kontena anda.

6. Ciri-ciri dan Petua Podman

Kekuatan Podman: Fleksibiliti & Keselamatan

Podman menyediakan fleksibiliti yang lebih besar dan keselamatan yang dipertingkatkan sambil kekal serasi dengan Docker. Berikut adalah beberapa ciri berguna dan petua operasi harian.

Operasi Selamat dengan Mod Rootless

Satu daripada kekuatan utama Podman ialah mod rootless, yang membolehkan pengguna bukan root untuk menjalankan, menghentikan, dan mengurus kontena.

Sebagai contoh, anda boleh menggunakan Podman tanpa sudo:

podman run -it ubuntu bash

Operasi terhad kepada direktori rumah pengguna, meminimumkan risiko kepada sistem. Ini amat berharga pada pelayan dikongsi atau dalam persekitaran pembangunan.

Integrasi dengan systemd untuk Auto-Mula

Podman boleh integrasi secara asli dengan systemd, membolehkan kontena bermula secara automatik sebagai perkhidmatan Linux.

Jana fail unit systemd dengan:

podman generate systemd --name mycontainer --files --restart-policy=always

Ini mencipta fail unit di ~/.config/systemd/user/. Dayakan dan mulakan dengan:

systemctl --user daemon-reexec
systemctl --user enable --now container-mycontainer.service

Kontena kini akan mulakan semula secara automatik walaupun selepas pelayan dimulakan semula.

Mengurus Pelbagai Kontena dengan podman-compose

Di samping operasi kontena tunggal, Podman menyokong pengurusan pelbagai kontena. Menggunakan podman-compose, anda boleh mengurus projek kompleks serupa dengan Docker Compose.

Pasang dengan pip:

pip install podman-compose

Kerana ia serasi dengan fail docker-compose.yml, migrasi projek adalah mudah.

Untuk memulakan perkhidmatan, hanya jalankan:

podman-compose up -d

Podman membolehkan anda mencipta semula persekitaran pembangunan secara segera.

Perintah dan Petua Berguna Lain

Pembersihan Imej & Kontena Tidak Digunakan

podman system prune -a

Hapuskan fail dan imej tidak digunakan untuk membebaskan storan.

Penyelesaian Shell (bash/zsh)

Pasang skrip penyelesaian Podman untuk penggunaan CLI yang lebih mudah:

sudo apt install podman-docker

Ini membolehkan penyelesaian arahan, serupa dengan Docker, untuk arahan podman.

7. Migrasi dari Docker ke Podman

Mengapa Migrasi ke Podman Sedang Tren

Walaupun Docker lama menjadi standard de facto untuk kontena, Podman semakin popular kerana beratnya yang lebih ringan dan keselamatan yang lebih kuat. Red Hat Enterprise Linux (RHEL) dan Fedora telah beralih dari Docker ke Podman secara lalai, menyebabkan ramai pasukan mempertimbangkan migrasi.

Bahagian ini meliputi langkah-langkah praktikal dan perkara yang perlu dipertimbangkan untuk migrasi dari Docker ke Podman.

Keserasian Arahan: Docker vs. Podman

Podman sangat serasi dengan arahan Docker, jadi anda boleh secara amnya menggantikannya secara langsung:

DockerPodman
docker build -t myapp .podman build -t myapp .
docker run -it myapppodman run -it myapp
docker imagespodman images
docker pspodman ps

Keserasian CLI yang lancar ini adalah kelebihan utama Podman.

Mencapai Keserasian Penuh dengan podman-docker

Jika skrip atau saluran CI/CD anda menggunakan arahan docker, memasang pakej podman-docker membolehkan Podman bertindak sebagai pengganti langsung:

sudo apt install podman-docker

Ini menyediakan arahan docker sebagai pautan simbolik kepada Podman:

which docker
# → /usr/bin/docker → podman symlink

Anda kemudian boleh menjalankan skrip Docker tanpa pengubahsuaian.

Alternatif kepada Docker Compose: podman-compose

Jika anda menggunakan Docker Compose untuk projek pelbagai bekas, podman-compose menyediakan fungsi yang serupa.

Ia sangat serasi tetapi beberapa pilihan Compose mungkin berbeza (contohnya depends_on), dan log acara atau pemeriksaan kesihatan mungkin bertindak berbeza. Untuk tumpukan web + DB asas, migrasi secara amnya lancar.

Migrasi Imej & Volum

Imej Docker tempatan tidak kelihatan kepada Podman secara lalai. Anda boleh:

Pilihan 1: Tarik semula dengan Podman

podman pull ubuntu:22.04

Pilihan 2: Eksport dari Docker → Import ke Podman

# Export with Docker
docker save myimage > myimage.tar

# Import with Podman
podman load < myimage.tar

Ini menjadikan imej yang dibina Docker boleh digunakan dalam Podman.

Pertimbangan Lain

  • Operasi tanpa root: Docker biasanya berjalan sebagai root, manakala Podman direka untuk operasi tanpa root secara lalai
  • Struktur daemon: Podman tidak memerlukan daemon, jadi pengurusan proses berbeza
  • Lokasi penyimpanan log dan data mungkin berbeza—periksa konfigurasi semasa migrasi

8. Soalan Lazim (FAQ)

Q1. Apakah perbezaan utama antara Podman dan Docker?

A1. Perbezaan terbesar ialah Podman “tanpa daemon” (tidak memerlukan proses latar belakang), menjadikannya lebih ringan dan lebih selamat. Podman juga menyokong mod tanpa root, membolehkan pengguna mengurus bekas tanpa keistimewaan yang ditinggikan. Keserasian CLI adalah tinggi, jadi kebanyakan arahan adalah sama.

Q2. Adakah perbezaan antara Dockerfile dan Containerfile?

A2. Tiada perbezaan fungsional. Kedua-duanya adalah fail yang menerangkan cara membina bekas, dengan sintaks yang sama. Beberapa projek lebih suka “Containerfile” sebagai nama neutral, tetapi anda boleh menggunakan mana-mana nama dengan Podman.

Q3. Bolehkah saya menggunakan fail Docker Compose dengan Podman?

A3. Podman tidak menyokong Docker Compose secara asli, tetapi anda boleh menggunakan podman-compose (alat Python) untuk mentafsir dan menjalankan fail docker-compose.yml dalam persekitaran Podman.

Beberapa pilihan Compose (depends_on, dsb.) mungkin mempunyai had, jadi uji persediaan kompleks terlebih dahulu.

Q4. Adakah Podman stabil pada Ubuntu?

A4. Ya, Podman berjalan dengan boleh dipercayai pada Ubuntu 20.04 LTS dan yang lebih baru. Ia tersedia dalam repositori Ubuntu rasmi dan boleh dipasang dengan apt. Untuk versi terkini, anda boleh menggunakan PPA rasmi.

Q5. Adakah terdapat sekatan akses dalam mod tanpa root?

A5. Dalam mod tanpa root, operasi istimewa tertentu dan pengikatan kepada port di bawah 1024 adalah terhad. Penyambungan semula port boleh mengatasi ini. Untuk kebanyakan kes penggunaan, mod tanpa root adalah praktikal dan disyorkan.

Q6. Bolehkah Podman menarik imej dari Docker Hub?

A6. Ya, Podman boleh menarik imej dari Docker Hub secara lalai. Kadang-kadang anda mungkin perlu menyatakan laluan pendaftaran penuh, contohnya docker.io/library/ubuntu:

podman pull docker.io/library/ubuntu

Podman juga menyokong pendaftaran seperti Quay.io dan GitHub Container Registry.

Q7. Adakah Podman sesuai untuk penggunaan pengeluaran?

A7. Ya, Podman termasuk konsep pod yang serasi dengan Kubernetes dan integrasi systemd untuk auto‑start, menjadikannya sesuai untuk persekitaran produksi—terutama di mana keselamatan yang kuat diperlukan. Podman kini menjadi lalai pada Red Hat Enterprise Linux dan Fedora, dengan penerimaan yang meluas.

侍エンジニア塾