Lewati ke konten utama

Docker untuk Data Science: Pengantar

Dalam tutorial Docker ini, pelajari cara menyiapkan, perintah Docker umum, mendockerisasi aplikasi machine learning, serta praktik terbaik yang digunakan di industri.
Diperbarui 28 Sep 2026  · 15 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Docker bot

Bayangkan Anda telah mengerjakan sebuah masalah machine learning end-to-end dan mendapatkan solusi optimal dengan model terbaik. Namun, saat Anda mengirimkan kode ke tim engineering, kode yang berjalan di mesin Anda tidak berfungsi di server mereka, yang mungkin memiliki sistem operasi berbeda dengan versi pustaka yang bervariasi.

Meski sudah teliti dan bekerja keras, kejadian yang menjengkelkan ini kadang tetap terjadi. Sebagian besar developer mengalaminya setidaknya sekali. Lalu apa solusinya? Di sinilah Docker berperan. Dengan Docker, Anda dapat mendefinisikan lingkungan yang presisi dan konsisten untuk proyek Anda, memastikan kode Anda berjalan mulus terlepas dari lingkungan atau pengaturan dasarnya.

Tutorial ini akan memperkenalkan Docker beserta konsep terkait dan menjelaskan pentingnya bagi data scientist. Selanjutnya, artikel ini akan membantu Anda memasang alat tersebut dan menggunakannya untuk proyek berikutnya dengan contoh. Terakhir, Anda akan mempelajari praktik terbaik yang digunakan di industri saat memakai Docker dan mendapatkan jawaban atas semua pertanyaan terkait Docker.

Apa itu Docker, Container, dan Image?

Docker adalah platform untuk membangun, menjalankan, dan mengirimkan aplikasi. 

Container adalah paket yang ringan, berdiri sendiri, dan dapat dieksekusi yang berisi semua yang dibutuhkan untuk menjalankan aplikasi, termasuk kode, runtime, pustaka, variabel lingkungan, dan file konfigurasi.

Docker Image adalah berkas read-only yang berisi semua instruksi yang diperlukan untuk membuat sebuah container. Image digunakan untuk membuat dan memulai container baru saat runtime.

Docker membantu developer memaketkan aplikasi beserta dependensinya ke dalam sebuah container, yang kemudian dapat dijalankan di mesin mana pun yang memiliki Docker terpasang. 

Dalam arti tertentu, ini seperti Anda diberi mesin baru untuk proyek baru. Anda akan memasang paket yang diperlukan, menyalin file yang dibutuhkan ke mesin tersebut, dan menjalankan skrip. Anda juga bisa mengirimkan mesin baru ini ke tempat lain. Contohnya memang disederhanakan, tetapi intinya seperti itu. 

Bagaimana perbedaan container Docker dengan Virtual Machine?

Begitu kita mendefinisikan container, Anda mungkin bertanya-tanya apa bedanya dengan virtual machine, karena keduanya memungkinkan beberapa lingkungan terisolasi berjalan pada mesin fisik yang sama. 

Lihat perbedaan arsitektur pada gambar di bawah dan coba perhatikan perbedaannya.

Virtual Machine vs Container

Gambar oleh penulis

Setiap virtual machine adalah lingkungan terisolasi yang dapat menjalankan sistem operasi dan konfigurasi berbeda. Ini juga berarti setiap VM memerlukan salinan penuh sistem operasi, yang dapat menghabiskan banyak sumber daya. Aplikasi yang dikontainerkan, di sisi lain, berjalan di lingkungan terisolasi tanpa memerlukan salinan penuh sistem operasi, sehingga lebih ringan dan efisien.

Walau virtual machine berguna, container umumnya sudah memadai dan ideal untuk mengirimkan aplikasi.

Mengapa Docker untuk Data Scientist?

Anda mungkin bertanya-tanya mengapa sebagai data scientist perlu belajar Docker. Bukankah ada tim DevOps yang mengurusi sisi infrastruktur?

Pertanyaan yang wajar — tetapi Docker sangat penting bagi data scientist, bahkan jika ada tim DevOps. Mari pahami mengapa Docker begitu bermanfaat.

Integrasi dengan tim DevOps 

Keberadaan tim DevOps tidak meniadakan manfaat penggunaan Docker; justru dapat menjembatani kesenjangan antara tim pengembangan dan operasi. Data scientist dapat menggunakan Docker untuk memaketkan kode dan menyerahkannya ke tim DevOps untuk deployment dan scaling. Anda kemungkinan akan mengalami ini di tim data science yang lebih terstruktur.

Lingkungan konsisten & reprodusibilitas

Data scientist sering bekerja dengan dependensi dan konfigurasi kompleks yang harus disiapkan dan dipelihara. Lingkungan harus tetap sama untuk memperoleh hasil serupa. Docker memungkinkan data scientist membuat dan berbagi lingkungan konsisten dengan semua dependensi dan konfigurasi yang sudah terpasang, sehingga mudah direplikasi oleh orang lain.

Portabilitas

Container Docker dapat berjalan di lingkungan mana pun yang terpasang Docker, termasuk laptop, server, dan platform cloud. Ini memudahkan data scientist memindahkan pekerjaan di antara berbagai lingkungan. 

Isolasi sumber daya

Docker memungkinkan beberapa container berjalan pada mesin yang sama, masing-masing dengan sumber daya terisolasi. Ini dapat membantu data scientist mengelola sumber daya lebih efisien dan menghindari konflik dengan aplikasi lain. Saat Anda memiliki banyak proyek ML, fitur ini bisa sangat menyelamatkan.

Memungkinkan kolaborasi

Docker memungkinkan data scientist berbagi pekerjaan mereka kepada siapa saja, termasuk tim jarak jauh, dalam bentuk container. Kolaborasi adalah bagian penting dalam kerja tim bagi data scientist, dan Docker mengurangi friksi dalam melakukannya.

Kebanyakan data scientist berpengalaman akan sepakat bahwa dengan bantuan Docker, data scientist bisa fokus pada pekerjaan tanpa khawatir tentang infrastruktur dasar. 

Tutorial Docker: Menggunakan Docker untuk Proyek Berikutnya

Karena kita sudah menetapkan kebutuhan Docker bagi data scientist, mari langsung mempercepat pemahaman tentang Docker. Pertama, kita harus memasang Docker di mesin kita dan membiasakan diri dengan perintah umum.

Memasang Docker di mesin atau server lokal Anda

Docker tersedia untuk semua sistem operasi utama, seperti Linux, Windows, dan Mac. Pemasangannya mudah dan paling baik diikuti dari dokumentasi resmi.

  • Instruksi memasang Docker untuk Linux.
  • Instruksi memasang Docker untuk Windows.
  • Instruksi memasang Docker untuk Mac.

Jika Anda ingin membuat image sendiri dan mendorongnya ke Docker Hub (seperti ditunjukkan pada beberapa perintah di bawah), Anda harus membuat akun di Docker Hub. Anggap Docker Hub sebagai tempat pusat di mana para developer dapat menyimpan dan berbagi Docker image mereka.

Membiasakan diri dengan perintah Docker umum

Setelah Anda menyiapkan Docker di mesin (atau server), langkah berikutnya adalah membiasakan diri dengan beberapa perintah Docker. Berikut daftar perintah yang sebaiknya Anda rujuk dari dokumentasi resmi Docker. 

Untuk membantu Anda memulai, kami merangkum sepuluh perintah Docker yang paling sering digunakan dan pasti akan Anda temui.

  1. docker run: Perintah ini digunakan untuk menjalankan container dari sebuah image. Flag -p memetakan port pada mesin host ke port pada container. Misalnya, perintah berikut akan menjalankan container dari image "nginx" dan memetakan port 80 pada mesin host ke port 80 pada container.
    • docker run -p 80:80 nginx
  2. docker ps: Perintah ini digunakan untuk menampilkan semua container yang berjalan. Perintah ini berguna saat kita memiliki beberapa container terisolasi yang berjalan pada mesin yang sama.
    • docker ps
  3. docker stop: Perintah ini digunakan untuk menghentikan container yang sedang berjalan.
    • docker stop <container_id>
  4. docker rmPerintah ini digunakan untuk menghapus container yang sudah dihentikan. 
    • docker rm <container_id>
  5. docker images: Perintah ini digunakan untuk menampilkan semua image di mesin host. Perintah ini berguna untuk melihat image lokal yang tersedia sebelum kita menjalankannya untuk membuat container.
    • docker images
  6. docker rmi: Perintah ini digunakan untuk menghapus sebuah image.
    • docker rmi <image_id>
  7. docker build: Perintah ini digunakan untuk membangun image dari sebuah Dockerfile. Flag -t menentukan nama image dan tanda . di akhir menentukan konteks build, yaitu direktori saat ini.
    • docker build -t my_image .
  8. docker exec: Perintah ini digunakan untuk menjalankan sebuah perintah di dalam container yang sedang berjalan.
    • docker exec -it <container_id> /bin/bash
  9. docker pull: Perintah ini digunakan untuk menarik image dari registry, seperti Docker Hub. 
    • docker pull <image_name>
  10. docker push: Perintah ini digunakan untuk mendorong image ke registry.
    • docker push <image_name>

Sekarang kita telah mempelajari cara menyiapkan Docker dan perintah umum, tujuan berikutnya adalah mendockerisasi sebuah aplikasi machine learning.

Ingin mendapatkan sertifikasi Docker? Lihat panduan kami untuk mendapatkan sertifikasi Docker!

Mendockerisasi Aplikasi Machine Learning Sederhana

Mendockerisasi aplikasi machine learning apa pun lebih mudah daripada yang Anda kira jika mengikuti pendekatan tiga langkah sederhana.

Dockerizing a machine learning application

Gambar oleh penulis.

Mari ambil skrip machine learning tingkat pemula agar tetap sederhana, karena tujuan kita adalah menunjukkan bagaimana Anda dapat mendockerisasi sebuah skrip. Contoh yang akan kita lihat membangun model logistic regression sederhana pada dataset iris.

# Load the libraries

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split

from sklearn.linear_model import LogisticRegression

from sklearn.metrics import accuracy_score


# Load the iris dataset

iris = load_iris()

X = iris.data

y = iris.target


# Split the data

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)


# Train a logistic regression model

clf = LogisticRegression()

clf.fit(X_train, y_train)


# Make predictions

y_pred = clf.predict(X_test)


# Print the accuracy of the model

accuracy_score = accuracy_score(y_test, y_pred)

print(f'Accuracy: {accuracy_score}')

1. Mendefinisikan lingkungan

Anda perlu mengetahui secara tepat lingkungan saat ini agar dapat mereplikasinya di lokasi lain. Cara termudah (dan paling umum) adalah membuat file requirements.txt yang merinci semua pustaka yang digunakan proyek Anda, termasuk versinya.

Berikut tampilan isi file tersebut:

scikit-learn==1.2.0

Catatan: Aplikasi machine learning yang lebih kompleks akan menggunakan lebih banyak pustaka seperti NumPy, pandas, matplotlib, dan lainnya. Karena itu, membuat file requirements.txt akan lebih masuk akal alih-alih sekadar memasang pustaka (lebih lanjut tentang ini pada bagian praktik terbaik industri nanti.)

2. Menulis Dockerfile

Langkah berikutnya adalah membuat file bernama Dockerfile yang dapat membuat lingkungan dan mengeksekusi aplikasi kita di dalamnya. Sederhananya, ini adalah buku petunjuk kita untuk Docker, yang menyebutkan seperti apa lingkungan yang diinginkan, isinya, dan langkah eksekusi lainnya.

FROM python:3.9

WORKDIR /src

COPY requirements.txt .

RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["python","iris_classification.py"]

Dockerfile ini menggunakan image Python resmi sebagai base image, menetapkan working directory, menyalin file requirements.txt, memasang dependensi, menyalin kode aplikasi, dan menjalankan perintah python iris_classification.py untuk memulai aplikasi.

3. Membangun Image

Langkah terakhir untuk membuat lingkungan yang dapat direproduksi adalah membuat image (juga dikenal sebagai template) yang dapat dijalankan untuk membuat sejumlah container dengan konfigurasi yang sama.

Anda dapat membangun image dengan menjalankan perintah docker build -t <image-name> . di direktori yang sama dengan lokasi Dockerfile.

Sekarang Anda telah mendockerisasi aplikasi machine learning sederhana yang kita lihat, Anda dapat menggunakan perintah docker run, membuat container, lalu menghentikannya sesuai kebutuhan. Kita sudah membahas beberapa perintah umum sebelumnya.

Sekarang mari ubah pengetahuan kita dari dasar ke ekspektasi industri.

Praktik Terbaik di Industri Saat Menggunakan Docker

Memahami dasar sudah cukup untuk memulai, tetapi saat Anda bekerja di industri, penting untuk mengikuti praktik terbaik. 

Menjaga jumlah layer tetap rendah

Setiap instruksi dalam Dockerfile menghasilkan layer baru. Terlalu banyak layer dapat membuat image menjadi besar dan lambat ditransfer. 

Perhatikan contoh kode di bawah ini:

# Use the official Python image as the build image

FROM python:3.9


# Install the dependencies

RUN pip install pandas

RUN pip install matplotlib

RUN pip install seaborn


# Copy neccesary files

COPY my_script.py .

COPY data/ .


# Run the script

CMD ["python","my_script.py"]

Apa masalah yang Anda lihat di sini? Penggunaan beberapa perintah run dan copy tidak perlu. Berikut cara kita memperbaikinya:

# Use the official Python image as the build image

FROM python:3.9


# Install the dependencies using requirements.txt

COPY my_script.py requirements.txt data/ .

RUN pip install --no-cache-dir -r requirements.txt


# Run the script

CMD ["python","my_script.py"]

Meskipun terlihat jelas pada file kecil seperti ini, Anda akan terkejut betapa seringnya kita menulis Dockerfile yang lebih besar dari yang diperlukan. Mengelompokkan perintah yang melakukan fungsi serupa atau mengubah file yang sama adalah cara mudah untuk mengurangi layer dalam Dockerfile.

Menggunakan image resmi

Image resmi adalah image yang dikelola dan didukung oleh penerbit image. Image ini umumnya dianggap lebih stabil dan aman dibanding image lain. 

Terkadang karena terburu-buru menyelesaikan pekerjaan lebih cepat, kita ceroboh menggunakan image tidak resmi. Jika memungkinkan, gunakan image resmi sebagai basis untuk image Anda sendiri.

Multi-stage build untuk mengoptimalkan performa

Multi-stage build di Docker memungkinkan Anda menggunakan beberapa instruksi FROM dalam satu Dockerfile. 

Kita dapat menggunakan image yang lebih besar sebagai build image untuk membangun aplikasi dan kemudian menyalin file yang diperlukan ke image runtime yang lebih kecil. Dengan tidak menyertakan file yang tidak perlu, kita mengurangi ukuran image final, tidak hanya mengoptimalkan performa tetapi juga membuat aplikasi lebih aman. 

Mari lihat contoh untuk memahaminya lebih baik, karena ini sering digunakan di industri:

# Use the official Python image as the build image

FROM python:3.9 AS build

# Set the working directory

WORKDIR /app

# Copy the requirements.txt file

COPY requirements.txt ./

# Install the dependencies

RUN pip install --no-cache-dir -r requirements.txt

# Copy the application files

COPY . .

# Train the model

RUN python train.py

# Use the official Alpine Linux image as the runtime image

FROM alpine:3

# Set the working directory

WORKDIR /app

# Copy the model files from the build image

COPY --from=build /app/models /app/models

# Copy the requirements.txt file

COPY --from=build /app/requirements.txt /app

# Install the dependencies

RUN pip install --no-cache-dir -r requirements.txt

# Run the application

CMD ["python","predict.py"]

Membedah contoh ini, image Python resmi digunakan terlebih dahulu sebagai build image dan memasang semua dependensi pada tahap itu. 

Setelah menjalankan file train.py, kita menyalin file model yang dihasilkan dan file requirements.txt ke image Alpine Linux yang lebih kecil untuk runtime, yang akan kita gunakan untuk menjalankan aplikasi. Dengan memanfaatkan multi-stage build dan tidak menyertakan dependensi build serta interpreter Python di image final, kita secara efektif memperkecil ukuran image final.

Menggunakan volume untuk mempertahankan data

Data di dalam container tidak tersedia setelah container dihentikan dan dihapus, tetapi terkadang Anda memerlukan hasil eksperimen untuk rujukan nanti. Bisa juga karena Anda ingin berbagi data di antara beberapa container.

Dengan menggunakan perintah volume, Anda memastikan data dipertahankan di luar container. Berikut contoh cara melakukannya:

# Use the official Python image as the base image

FROM python:3.9

# Set the working directory

WORKDIR /app

# Copy the requirements.txt file

COPY requirements.txt ./

# Install the dependencies

RUN pip install --no-cache-dir -r requirements.txt

# Copy the rest of the application files

COPY . .

# Create a directory for storing data

RUN mkdir /app/data



# Define a volume for the data directory

VOLUME /app/data

# Run the application

CMD ["python","main.py"]

Mengatur dan melakukan versioning Docker image

Setelah Anda mulai bekerja dengan banyak Docker image, semuanya bisa menjadi berantakan, dan kebutuhan untuk mengaturnya pun muncul. Meskipun praktik ini bervariasi antar organisasi, kita dapat merangkum beberapa praktik umum terkait pengaturan Docker image:

  1. Mengikuti konvensi penamaan yang konsisten untuk setiap image. Misalnya, menggunakan format <registry>/<organization>/<image>:<version>. Ini dapat membantu mengidentifikasi image dan versinya di registry.
  2. Menerapkan praktik versioning image itu penting, jika sewaktu-waktu perlu rollback ke versi sebelumnya. Anda melihat bagaimana versi berperan dalam konvensi penamaan, dan versi dapat diperluas menjadi major version>.<minor version>.<patch version>.
  3. Memberi tag image dengan kata yang bermakna, seperti latest, staging, production, juga membantu mengatur dan mengelola image. Ini memungkinkan Anda dengan cepat mengidentifikasi image untuk lingkungan dan tahap pipeline deployment yang berbeda.

Disarankan untuk selaras dengan organisasi Anda; seluruh tim diharapkan mengikuti konvensi yang sama.

Kesimpulan

Artikel ini membahas pentingnya membuat kode dan aplikasi yang dapat direproduksi menggunakan alat seperti Docker bagi data scientist. Mulai dari menguraikan pentingnya Docker bagi data scientist hingga instruksi pemasangan dan beberapa perintah Docker yang umum digunakan. Selanjutnya artikel membahas bagaimana kita dapat mendockerisasi aplikasi machine learning melalui contoh kode dan praktik terbaik yang digunakan di industri saat menggunakan Docker.

Untuk pembelajaran lebih lanjut, Anda dapat mengikuti kursus Introduction to Docker kami, yang mencakup banyak hal penting. Anda juga dapat mempertimbangkan mengejar sertifikasi Docker jika Anda bekerja di bidang ini. 

Kebanyakan data scientist fokus pada keterampilan inti seperti statistika, matematika, machine learning, deep learning, dan pemrograman tetapi lupa mempelajari praktik terbaik rekayasa perangkat lunak yang diharapkan di industri.

Jika Anda ingin memantapkan pembelajaran pada inti data science, lihat Data Scientist with Python track yang membantu pembelajaran terpandu melalui proyek. Atau, jika Anda perlu menyegarkan kembali keterampilan rekayasa perangkat lunak, lihat kursus software engineering for data scientists with Python, yang mencakup konsep penting seperti modularitas, dokumentasi, dan pengujian otomatis.

Docker untuk Data Scientist: FAQ

Haruskah data scientist mempelajari Docker?

Mempelajari Docker bermanfaat bagi data scientist karena memungkinkan mereka dengan mudah mengelola dependensi dan lingkungan, memastikan kode berjalan konsisten di berbagai sistem. Ini juga berarti mereka tidak harus sepenuhnya bergantung pada tim DevOps.

Bagaimana cara menggunakan Jupyter Notebook dalam container Docker?

Untuk menggunakan Jupyter Notebook dalam container Docker, mirip seperti tutorial di atas, Anda dapat membuat Dockerfile baru lalu menggunakan perintah RUN untuk memasang Jupyter. Kemudian gunakan perintah CMD untuk memulai server Jupyter Notebook. Alternatifnya, Anda dapat menggunakan image siap pakai dari Docker Hub yang sudah berisi Jupyter. Berikut panduan mendetail tentang penggunaan Jupyter Notebook, termasuk melalui Docker.

Bagaimana cara membagikan proyek data science saya menggunakan Docker?

Anda dapat berbagi proyek data science menggunakan Docker dengan mendorong image Anda ke container registry seperti Docker Hub. Setelah itu, orang lain dapat menarik image tersebut dan menjalankan proyek di lingkungan mereka.

Topik
Data Science
Machine Learning

Kursus Teratas

Kursus

Prinsip Rekayasa Perangkat Lunak di Python

4 jam
71K
Pelajari modularitas, dokumentasi, dan pengujian otomatis untuk selesaikan masalah ilmu data dengan lebih cepat dan andal.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya