Panduan Memulakan Docker: Mulakan dengan Pantas Mengkontainerkan Aplikasi Anda
Panduan Memulakan Docker: Mulakan dengan Pantas Mengkontainerkan Aplikasi Anda
Docker telah menjadi bahagian penting dalam pembangunan dan penggunaan perisian moden. Walaupun perbincangan mengenai Kubernetes meluas, Docker masih merupakan alat pilihan bagi banyak syarikat untuk membina, menguji dan menggunakan aplikasi. Artikel ini akan membawa anda untuk memulakan Docker dengan pantas, memahami konsep terasnya, dan menyediakan contoh praktikal untuk membantu anda memulakan pengkontaineran aplikasi anda.
Konsep Teras Docker
Sebelum memulakan latihan, adalah penting untuk memahami beberapa konsep teras Docker:
-
Imej (Image): Imej ialah templat baca sahaja yang mengandungi semua yang diperlukan untuk menjalankan aplikasi: kod, persekitaran masa jalan, alat sistem, pustaka dan kebergantungan. Ia serupa dengan imej mesin maya, tetapi lebih ringan.
-
Kontena (Container): Kontena ialah contoh yang berjalan yang dicipta daripada imej. Ia adalah contoh masa jalan imej, yang mengandungi aplikasi dan semua kebergantungannya. Kontena diasingkan antara satu sama lain dan mempunyai sistem fail, proses dan ruang rangkaian mereka sendiri.
-
Docker Hub: Docker Hub ialah repositori imej awam tempat anda boleh memuat turun imej yang telah dibina atau memuat naik imej anda sendiri. Ia serupa dengan GitHub, tetapi khusus untuk imej Docker.
-
Dockerfile: Dockerfile ialah fail teks yang mengandungi semua arahan untuk membina imej Docker. Dengan menulis Dockerfile, anda boleh mengautomasikan proses penciptaan imej.
-
Docker Compose: Docker Compose ialah alat untuk mentakrifkan dan menjalankan aplikasi Docker berbilang kontena. Ia membolehkan anda menggunakan fail YAML untuk mengkonfigurasi perkhidmatan aplikasi, dan kemudian menggunakan satu arahan untuk memulakan atau menghentikan semua perkhidmatan.
Pemasangan Docker
Pertama, anda perlu memasang Docker. Docker menyediakan pakej pemasangan untuk pelbagai sistem pengendalian. Lawati Laman Web Rasmi Docker dan ikut arahan yang sesuai untuk memasang.
Selepas pemasangan selesai, anda boleh menjalankan arahan docker --version untuk mengesahkan sama ada Docker dipasang dengan betul.
Mengkontainerkan Aplikasi Python Mudah
Kami akan mencipta aplikasi Python mudah dan mengkontainerkannya menggunakan Docker.
1. Cipta Aplikasi Python
Cipta fail bernama app.py, yang mengandungi kod berikut:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, Docker!"
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0')
Aplikasi Flask mudah ini akan mengembalikan "Hello, Docker!" pada laluan akar /.
2. Cipta Fail requirements.txt
Aplikasi ini bergantung pada pustaka Flask, dan kita perlu mencipta fail requirements.txt untuk mengisytiharkan kebergantungan ini.
Flask
3. Cipta Dockerfile
Cipta fail bernama Dockerfile, dan tambahkan kandungan berikut:
# Gunakan imej Python rasmi sebagai imej asas
FROM python:3.9-slim-buster
# Tetapkan direktori kerja
WORKDIR /app
# Salin fail requirements.txt ke direktori kerja
COPY requirements.txt .
# Pasang kebergantungan
RUN pip install --no-cache-dir -r requirements.txt
Menggunakan imej Python rasmi sebagai imej asas - Menggunakan imej Python rasmi sebagai imej asas
Tetapkan direktori kerja - Menetapkan direktori kerja
Salin fail requirements.txt ke direktori kerja - Menyalin fail requirements.txt ke direktori kerja
Pasang kebergantungan - Memasang kebergantungan# Salin kod aplikasi ke direktori kerja
COPY app.py .
Dedahkan port 5000
EXPOSE 5000
Takrifkan arahan permulaan
CMD ["python", "app.py"]
**Penerangan Dockerfile:**
* `FROM python:3.9-slim-buster`: Menentukan imej asas sebagai versi ringkas Python 3.9.
* `WORKDIR /app`: Menetapkan direktori kerja dalam kontena kepada `/app`.
* `COPY requirements.txt .`: Menyalin fail `requirements.txt` dari direktori semasa ke direktori `/app` dalam kontena.
* `RUN pip install --no-cache-dir -r requirements.txt`: Menjalankan arahan `pip` dalam kontena untuk memasang kebergantungan yang ditentukan dalam fail `requirements.txt`. Parameter `--no-cache-dir` boleh mengurangkan saiz imej.
* `COPY app.py .`: Menyalin fail `app.py` dari direktori semasa ke direktori `/app` dalam kontena.
* `EXPOSE 5000`: Mengisytiharkan bahawa kontena akan mendengar pada port 5000.
* `CMD ["python", "app.py"]`: Mentakrifkan arahan yang akan dilaksanakan apabila kontena dimulakan.
### 4. Bina Imej Docker
Dalam direktori yang mengandungi `Dockerfile`, jalankan arahan berikut untuk membina imej Docker:
```bash
docker build -t my-python-app .
docker build: Arahan untuk membina imej.-t my-python-app: Menentukan nama untuk imej (my-python-app)..: Menentukan direktori tempat Dockerfile berada (direktori semasa).
Proses pembinaan mungkin mengambil sedikit masa, bergantung pada kelajuan rangkaian dan saiz kebergantungan.
5. Jalankan Kontena Docker
Gunakan arahan berikut untuk menjalankan kontena Docker:
docker run -d -p 5000:5000 my-python-app
docker run: Arahan untuk menjalankan kontena.-d: Menjalankan kontena dalam mod terpisah (berjalan di latar belakang).-p 5000:5000: Memetakan port 5000 hos kepada port 5000 kontena.my-python-app: Menentukan nama imej yang akan digunakan.
6. Sahkan Aplikasi
Dalam pelayar web, lawati http://localhost:5000, anda sepatutnya dapat melihat "Hello, Docker!".
7. Hentikan dan Padam Kontena
Gunakan arahan berikut untuk menghentikan kontena:
docker stop
`` boleh didapati melalui arahan docker ps.
Gunakan arahan berikut untuk memadam kontena:
docker rm
Pengenalan kepada Docker Compose
Jika aplikasi anda terdiri daripada berbilang perkhidmatan, anda boleh menggunakan Docker Compose untuk mengurusnya.
1. Cipta Fail docker-compose.yml
Cipta fail bernama docker-compose.yml, dan tambahkan kandungan berikut:
version: "3.9"
services:
web:
image: my-python-app
ports:
- "5000:5000"
Penerangan docker-compose.yml:* version: "3.9": Menentukan versi fail Docker Compose.
services: Mendefinisikan perkhidmatan aplikasi.web: Mendefinisikan perkhidmatan bernama "web".image: my-python-app: Menentukan imej yang digunakan oleh perkhidmatan.ports: Mendefinisikan pemetaan port.
2. Memulakan Aplikasi
Dalam direktori yang mengandungi fail docker-compose.yml, jalankan perintah berikut untuk memulakan aplikasi:
docker-compose up -d
docker-compose up: Perintah untuk memulakan aplikasi.-d: Menjalankan kontena dalam mod terpisah (detached).
3. Menghentikan Aplikasi
Gunakan perintah berikut untuk menghentikan aplikasi:
docker-compose down
Amalan Terbaik Keselamatan Docker
Seperti yang dapat dilihat daripada perbincangan, keselamatan imej Docker adalah isu penting. Berikut adalah beberapa amalan terbaik keselamatan Docker:
- Gunakan Imej Rasmi: Gunakan imej yang disediakan secara rasmi sebanyak mungkin, kerana imej ini biasanya telah melalui imbasan dan penyelenggaraan keselamatan.
- Imbas Kerentanan Imej: Gunakan alat seperti Trivy untuk mengimbas kerentanan yang diketahui dalam imej dan kemas kini imej dengan segera.
- Gunakan Prinsip Keistimewaan Minimum: Elakkan menjalankan kontena sebagai pengguna root.
- Hadkan Sumber Kontena: Gunakan cgroups untuk mengehadkan penggunaan CPU dan memori kontena.
- Kemas Kini Imej Secara Berkala: Pastikan imej dikemas kini untuk membaiki kerentanan keselamatan.
- Gunakan Alat Imbasan Keselamatan: Alat seperti Snyk, Clair, dan lain-lain boleh disepadukan ke dalam proses CI/CD anda untuk mengimbas kerentanan imej secara automatik.
KesimpulanArtikel ini menyediakan panduan permulaan pantas Docker, merangkumi konsep teras, langkah pemasangan, dan contoh pengkontenaan aplikasi Python yang mudah. Dengan mempelajari asas-asas ini, anda boleh mula menggunakan Docker untuk membina, menguji dan menggunakan aplikasi anda. Ingat, keselamatan adalah penting, sentiasa perhatikan keselamatan imej Docker, dan ambil langkah yang sesuai untuk melindungi aplikasi anda. Walaupun Kubernetes sangat berkuasa dalam orkestrasi kontena berskala besar, Docker masih merupakan penyelesaian yang mudah dan berkesan dalam banyak senario. Dengan menguasai Docker, anda akan lebih bersedia untuk menghadapi cabaran pembangunan dan penggunaan perisian moden.





