Konfigurasi Docker Untuk Otomasi 20 Container


Dalam tutorial ini, kita akan membahas langkah-langkah untuk mengkonfigurasi Docker agar dapat menjalankan 20 container yang masing-masing memiliki pengguna SSH terpisah. Kita akan menggunakan Ubuntu 22.04 sebagai base image dan menyiapkan skrip untuk otomatisasi pembuatan pengguna.
1. Membuat Dockerfile
Buat file bernama Dockerfile dan masukkan kode berikut:
disini saya membuat OS dari ubuntu server 22.04 dengans service yang di install antara lain openssh-server, nano, dan sudo agar user bisa melakukan modifikasi terhadap server di kontainer nya masing-masing
# Menggunakan Ubuntu 22.04 sebagai base image
FROM ubuntu:22.04
# Mengatur variabel untuk non-interactive mode
ENV DEBIAN_FRONTEND=noninteractive
# Update package list dan install paket yang dibutuhkan
RUN apt-get update && apt-get install -y \
openssh-server \
nano \
sudo \
&& rm -rf /var/lib/apt/lists/*
# Membuat direktori untuk SSH
RUN mkdir /var/run/sshd
# Salin skrip untuk membuat user
COPY create_users.sh /create_users.sh
RUN chmod +x /create_users.sh
# Menyalakan konfigurasi SSH untuk mengizinkan login dengan password
RUN sed -i 's/^#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config && \
sed -i 's/^PermitRootLogin .*/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config && \
sed -i 's/^#UsePAM yes/UsePAM yes/' /etc/ssh/sshd_config
# Ekspos port SSH
EXPOSE 22
# Jalankan skrip create_users.sh saat container pertama kali berjalan
CMD ["/bin/bash", "-c", "/create_users.sh && /usr/sbin/sshd -D"]
2. Membuat Skrip create_users.sh
Buat file bernama create_users.sh dan masukkan kode berikut:
disini saya membuat otomasi untuk 20 user mahasiswa dengan username mahasiswa1 dan password1 sampai dengan mahasiswa20 dan password20. kemudian user tersebut kita daftarkan sebagai sudo.
#!/bin/bash
# Jumlah mahasiswa yang ingin dibuat
NUM_USERS=20
# Loop untuk membuat user
for i in $(seq 1 $NUM_USERS); do
USERNAME="mahasiswa$i"
PASSWORD="password$i"
# Periksa apakah user sudah ada
if id "$USERNAME" &>/dev/null; then
echo "User $USERNAME already exists, skipping..."
else
# Tambahkan user dengan direktori home dan shell bash
useradd -m -s /bin/bash "$USERNAME"
# Set password untuk user
echo "$USERNAME:$PASSWORD" | chpasswd
# Tambahkan user ke grup sudo
usermod -aG sudo "$USERNAME"
# Pastikan direktori home memiliki izin yang benar
chmod 700 /home/"$USERNAME"
chown "$USERNAME":"$USERNAME" /home/"$USERNAME"
echo "User $USERNAME created successfully!"
fi
done
3. Build Image
Setelah kedua file tersebut dibuat, Anda dapat build image dengan perintah berikut:
docker build -t mahasiswa-ssh:latest .
4. Menghasilkan Container
Untuk menjalankan 20 container, gunakan perintah berikut:
for i in $(seq 1 20); do
docker run -d -p $((2200 + i)):22 -p $((8080 + i)):80 --name mahasiswa-container-$i mahasiswa-ssh
done
Perintah ini akan memetakan port SSH (2201 hingga 2220) dan port HTTP (8081 hingga 8080) untuk masing-masing container.
5. Akses SSH per User Container
Anda dapat mengakses SSH untuk setiap pengguna dengan perintah berikut:
ssh mahasiswa1@<IP-HOST> -p 2201
...
ssh mahasiswa20@<IP-HOST> -p 2220
Ganti <IP> dengan alamat IP dari host Docker Anda.
6. Menghentikan Seluruh Container
Untuk menghentikan semua container yang sedang berjalan, gunakan perintah berikut:
docker ps -q | xargs docker stop
7. Menghapus Seluruh Container
Jika Anda ingin menghapus semua container, gunakan perintah ini:
docker ps -aq | xargs docker rm
Kesimpulan
Dalam tutorial ini, kita telah berhasil mengkonfigurasi Docker untuk menjalankan 20 container dengan pengguna SSH terpisah. Proses ini memanfaatkan Dockerfile dan skrip shell untuk otomatisasi, sehingga memudahkan dalam pengelolaan banyak pengguna. Jika Anda memiliki pertanyaan lebih lanjut atau ingin berbagi pengalaman, jangan ragu untuk comment ya!