GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara SSH ke Wadah Docker [Langkah-demi-Langkah]

Saat Anda perlu memecahkan masalah atau mengintip sebentar ke dalam wadah Docker, SSH adalah pilihan yang bagus. SSH memungkinkan Anda terhubung dengan cepat ke container yang sedang berjalan dan melihat apa yang terjadi. Tetapi menghubungkan ke wadah Docker terlebih dahulu melibatkan beberapa penyiapan, dan Anda memiliki beberapa opsi berbeda.

Dalam tutorial ini, Anda akan mempelajari cara SSH ke dalam container Docker menggunakan docker run perintah dan Dockerfile.

Mari kita mulai!

Prasyarat

Jika Anda ingin mengikuti langkah demi langkah, pastikan Anda memiliki hal berikut:

  • Sebuah host Linux. Tutorial ini menggunakan Ubuntu 18.04.5 LTS.
  • Docker diinstal pada host Linux. Tutorial ini menggunakan Docker v19.03.8.

Memulai Container dan SSH ke dalam Container Docker dengan docker run

docker run command adalah perintah Docker yang menjalankan perintah ketika wadah baru pertama kali muncul. Menggunakan docker run , Anda dapat meluncurkan sesi SSH interaktif ke penampung menggunakan langkah-langkah di bawah ini.

Sebelum Anda memulai bagian ini, pastikan Anda memiliki gambar Docker yang diunduh dan tersedia. Tutorial ini menggunakan image Docker Ubuntu terbaru yang tersedia di Docker Hub.

Untuk SSH ke dalam wadah Docker dengan docker run :

1. Buka terminal di komputer lokal Anda.

2. Jalankan docker run menyediakan perintah:

  • name wadah yang akan dijalankan (ubuntu_container_ssh )
  • i tanda yang menunjukkan Anda ingin membuka sesi SSH interaktif ke penampung. i flag tidak menutup sesi SSH meskipun container tidak dilampirkan.
  • t flag mengalokasikan pseudo-TTY yang banyak digunakan untuk menjalankan perintah secara interaktif.
  • Gambar dasar untuk membuat wadah dari (ubuntu ).
# Creating the container named ubuntu_container_ssh and start a Bash session.
sudo docker run --name ubuntu_container_ssh -i -t ubuntu

Pada titik ini, Anda telah SSH ke container dan dapat menjalankan perintah apa pun yang Anda inginkan.

3. Selanjutnya, jalankan perintah apa pun, seperti touch memerintah. Perintah sentuh akan membuat folder baru bernama myfolder di tmp direktori, seperti yang ditunjukkan di bawah ini.

touch /tmp/myfolder

Sekarang Anda dapat menjalankan perintah apa pun yang Anda inginkan!

Terakhir, setelah Anda selesai menjalankan perintah, ketik exit untuk menutup sesi.

SSH ke Menjalankan Wadah Docker dengan docker exec

Di bagian sebelumnya, Anda telah mempelajari cara menjalankan perintah SSH saat memulai container Docker baru. Tetapi bagaimana jika Anda perlu SSH ke dalam wadah Docker yang sudah berjalan? Anda menjalankan docker exec perintah.

docker exec command membuat shell Bash di dalam container yang sedang berjalan dan merupakan cara yang bagus untuk mengirim perintah SSH ke dalam container.

Sebelum Anda memulai bagian ini, pastikan Anda memiliki gambar Docker yang diunduh dan tersedia. Tutorial ini menggunakan image NGINX Docker terbaru yang tersedia di Docker Hub.

Untuk SSH ke dalam wadah Docker yang sedang berjalan dengan docker exec :

1. Buka terminal di komputer lokal Anda.

2. Selanjutnya, jalankan docker run perintah untuk memulai wadah. Pastikan untuk menentukan -d flag untuk menjalankan wadah di latar belakang agar tetap hidup sampai Anda menghapusnya. Perintah di bawah ini memulai sebuah wadah bernama nginx-testing .

sudo docker run --name nginx-testing -d nginx

3. Sekarang, jalankan perintah docker ps untuk memverifikasi container sedang berjalan. docker ps perintah akan mencantumkan semua wadah yang berjalan yang berjalan di Host Docker.

4. Terakhir, jalankan docker exec , seperti yang ditunjukkan di bawah ini, ke SSH ke dalam wadah berjalan yang disebut nginx-testing . Dalam cuplikan kode di bawah ini:

  • docker exec perintah berjalan (/bin/bash ) untuk mendapatkan shell Bash di dalam wadah.
  • -it flag memungkinkan Anda menjalankan wadah dalam mode interaktif, yaitu, Anda dapat menjalankan perintah di dalam wadah saat masih berjalan.
  • nginx-testing adalah nama wadahnya.
sudo docker exec -it nginx-testing /bin/bash

Menyiapkan Server OpenSSH dan Menghubungkan dengan Dockerfile

Sampai sekarang, tutorial mengasumsikan Anda terhubung ke wadah yang sudah menginstal beberapa server SSH. Tapi bagaimana jika tidak? Mungkin gambar yang Anda gunakan belum menginstal OpenSSH, dan Anda perlu mengonfigurasinya terlebih dahulu?

Dengan menggunakan Dockerfile, Anda dapat mengonfigurasi semua tugas yang diperlukan untuk tidak hanya SSH ke dalam wadah Docker tetapi juga menyiapkan server OpenSSH dari awal.

Dengan asumsi Anda masih membuka terminal lokal Anda:

1. Secara opsional, buat direktori untuk menyimpan Dockerfile. Tutorial ini akan menggunakan ~/DockerFileContainerTest direktori.

2. Buka editor teks favorit Anda, salin/tempelkan Dockerfile di bawah ini ke dalam dan simpan file sebagai Dockerfile di dalam ~/DockerFileContainerTest direktori. Dockerfile ini berisi semua perintah dan konfigurasi untuk membangun image Docker baru di atas image dasar apa pun dan mengatur OpenSSH.

DockerFile di bawah ini berisi berbagai langkah/petunjuk yang akan membuat container:

  • FROM Mendefinisikan ubuntu:16.04 gambar dasar yang akan digunakan.
  • RUN – Menjalankan perintah di layer baru di atas gambar dasar.
  • CMD – CMD memungkinkan Anda untuk menjalankan perintah. Ada dua cara di mana perintah dijalankan baik melalui exec atau menggunakan format shell.
  • EXPOSE – Memberi tahu Docker bahwa container mendengarkan port jaringan yang ditentukan saat runtime. Wadah akan terbuka di pot 22 .
# Instruction for Dockerfile to create a new image on top of the base image (ubuntu)

FROM ubuntu:16.04

RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:mypassword' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed '[email protected]\s*required\s*[email protected] optional [email protected]' -i /etc/pam.d/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

3. Selanjutnya, jalankan docker build perintah untuk membuat gambar Docker. t tandai tag gambar sshd_container dan. memungkinkan Docker untuk memilih semua file yang diperlukan dari direktori kerja saat ini.

# Building the docker Image
sudo docker build -t sshd_tagged_image .

4. Sekarang, jalankan docker images perintah untuk memeriksa gambar yang dibuat. Perhatikan REPOSITORY atribut. Atribut ini adalah tag yang dibuat dengan -t bendera pada langkah sebelumnya.

5. Jalankan docker run untuk membuat dan menjalankan container dari image yang menyuruh Docker menjalankan image di latar belakang (-d ),

Perintah di bawah ini menginstruksikan Docker untuk membuat dan menjalankan container bernama test_sshd_container di latar belakang (-d ), menggunakan sshd_tagged_image gambar baru yang Anda buat di langkah 3 dan untuk memublikasikan semua port yang ditentukan di Dockerfile sebagai port acak.

# Running the container using the newly built image
docker run -d -P --name test_sshd_container sshd_tagged_image

Setelah eksekusi perintah Docker run yang berhasil, Anda akan melihat bahwa ID penampung dibuat di bawah ini.

6. Jalankan docker port untuk memverifikasi konektivitas SSH antara host Docker dan container. docker port daftar perintah adalah pemetaan port atau pemetaan khusus untuk container.

sudo docker port test_sshd_container

Anda akan melihat output dari 22/TCP → 0.0.0.0:32769 , yang menunjukkan port kontainer 22 dipetakan ke port eksternal 32769 .

7. Selanjutnya, cari alamat IP container. Untuk melakukannya, jalankan docker inspect memerintah. docker inspect perintah menanyakan informasi Docker dan merender hasilnya dalam larik JSON menggunakan format parameter.

Anda akan melihat format argumen parameter di bawah ini menggunakan range untuk menemukan alamat IP penampung dengan memeriksa NetworkSettingsNetworksIPAddress .

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' test_sshd_container

8. Akhirnya, sekarang Anda memiliki alamat IP untuk SSH, coba SSH ke wadah, dan itu akan berhasil!

ssh [email protected] 

Kesimpulan

Sekarang Anda menunjukkan beberapa cara untuk SSH ke wadah Docker menggunakan beberapa pendekatan berbeda. Dengan menggunakan salah satu pendekatan ini, Anda akan dapat memecahkan masalah dan mengelola penampung Anda.

Dengan pengetahuan baru ini, bagaimana Anda berencana untuk SSH ke wadah Anda sekarang?


Docker
  1. Cara SSH Ke Wadah Docker

  2. Cara mencadangkan dan memulihkan wadah Docker

  3. Cara Menjeda dan Melanjutkan Wadah Docker

  1. Cara Membuat, Mendaftar &Menghapus Wadah Docker di Linux

  2. Cara Memasang Direktori Host Ke Wadah Docker

  3. Cara Berbagi Data Antar Wadah Docker

  1. Cara Mendaftar / Memulai / Menghentikan Kontainer Docker

  2. Cara SSH ke dalam Running Docker Container dan Jalankan Perintah

  3. Cara Mendaftar Kontainer Docker