Skip to main content

Command Palette

Search for a command to run...

Konfigurasi Docker Untuk Otomasi 20 Container

Updated
3 min read
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!

More from this blog

M

My Blog

22 posts