Pendahuluan
Titik masuk dan CMD adalah instruksi dalam Dockerfile yang mendefinisikan proses dalam gambar Docker. Anda dapat menggunakan salah satu atau menggabungkan keduanya tergantung pada bagaimana Anda ingin menjalankan container Anda.
Satu perbedaannya adalah tidak seperti CMD
, Anda tidak dapat mengganti ENTRYPOINT
perintah hanya dengan menambahkan parameter baris perintah baru. Untuk mengganti ENTRYPOINT Anda perlu memodifikasi docker run
perintah mengikuti sintaks tertentu.
Dalam tutorial ini, Anda akan mempelajari cara mengganti ENTRYPOINT menggunakan perintah docker run.
Prasyarat
- Akses ke baris perintah
- Pengguna dengan sudo hak istimewa
- Instance Docker yang sedang berjalan
- Gambar Docker yang sudah ada
Ganti ENTRYPOINT dengan docker run
Untuk mengilustrasikan cara mengganti perintah ini, kita akan menjalankan wadah yang menggemakan pesan Hello World
dengan menggabungkan ENTRYPOINT dan CMD di Dockerfile.
Di Dockerfile, ENTRYPOINT
perintah mendefinisikan executable, sedangkan CMD
menyetel parameter default.
FROM ubuntu
MAINTAINER sofija
RUN apt-get update
ENTRYPOINT [“echo”, “Hello”]
CMD [“World”]
Jika Anda membuat image dari file ini dan menggunakannya untuk menjalankan container Docker, output akan ditampilkan:
Anda dapat dengan mudah mengganti CMD default dengan menambahkan parameter yang diinginkan ke docker run
perintah:
sudo docker run [container_name] [new_parameter]
Pada contoh di bawah, kami mengubah parameter CMD World
, dengan menambahkan Sofija
ke perintah. Hasilnya, output menampilkan Hello Sofija
.
Namun, Anda mungkin ingin mengganti executable default dan, misalnya, menjalankan shell di dalam container. Dalam hal ini, Anda perlu menggunakan --entrypoint
tandai dan jalankan wadah menggunakan sintaks berikut:
sudo docker run --entrypoint [new_command] [docker_image] [optional:value]
Untuk mengganti pesan gema default dalam contoh kami dan menjalankan wadah secara interaktif, kami menggunakan perintah:
sudo docker run -it --entrypoint /bin/bash [docker_image]
Outputnya menunjukkan bahwa kita sekarang berada di dalam container.