Docker، ابزاری است که به شما امکان میدهد، یک container برای اجرای برنامهها ایجاد کنید. یک Docker container، یک ماشین مجازی کاملاً مجزا است.
در این راهنما، سه روش برای برقراری اتصال SSH با یک Docker container و اجرای دستورات در آن آموزش داده شده است.
به منظور دنبال کردن این آموزش، به موارد زیر نیاز خواهید داشت:
- سیستم لینوکسی که Docker برروی آن اجرا است.
- container از پیش تنظیم شدهای که در حال اجرا است.
- دسترسی به پنجره ترمینال یا خط فرمان (با فشردن Ctrl+Alt+T یا Ctrl+Alt+F2).
- یک حساب کاربری با امتیازات sudo
این مطلب نیز ممکن است برای شما مفید باشد: نصب Docker در CentOS 8
روش 1: استفاده از docker exec برای اجرای دستورات در Docker Container
دستور docker exec، یک دستور مشخص را درون یک container فعال اجرا میکند. شما میتوانید با ایجاد یک bash shell (پوستهای که در آن میتوانید دستورات را تایپ کنید) از آن برای SSH زدن به یک Docker container استفاده نمایید.
ساختار اصلی دستور docker exec برای اجرای فرمان در containerها به شرح زیر است:
docker exec [options] [container] [command]
اگر قبلاً این کار را نکردهاید، با دریافت یک Docker image شروع کنید. به عنوان مثال، شما میتوانید Nginx را به صورت زیر بارگیری نمایید:
sudo docker pull nginx
سپس image را اجرا کنید:
sudo docker run ––name nginx–test –d nginx
به منظور تأیید، دستور زیر همه containerهای در حال اجرا را لیست میکند:
sudo docker ps
در خروجی باید image مربوط به nginx-test خود را مشاهده نمایید.
برای دسترسی و اجرای دستورات در آن Docker container، موارد زیر را تایپ کنید:
sudo docker exec –it nginx-test /bin/bash
اکنون، شما به container مربوط به nginx-test وارد شدهاید. بنابراین، هر دستوری که وارد مینمایید، در آن container انجام میشود. گزینه i- تعاملی بودن را مشخص میکند و t- رابط تایپ ترمینال را فعال مینماید.
روش 2: استفاده از دستور docker attach برای اتصال به یک container در حال اجرا
دستور docker attach، ورودی، خروجی و جریان خطای محلی را به یک container پیوند میدهد و به طور پیش فرض، در یک پوسته bash راهاندازی میشود. برای اتصال به یک container در حال اجرا، دستور زیر را وارد کنید:
sudo docker attach container_Name
در مثال زیر، سیستم به container مربوط به nginx-test متصل میشود:
sudo docker attach nginx-test
پس از اجرای دستور، شما در container کار خواهید کرد. بدین معنی که هر دستوری که اجرا مینمایید، بر محیط Docker مجازی تأثیر میگذارد.
این مطلب نیز ممکن است برای شما مفید باشد: اجرای Docker Container در پس زمینه (حالت Detached)
روش 3: استفاده از SSH برای اتصال به Docker Container
شما میتوانید با استفاده از SSH (Secure Shell) به یک Docker container متصل شوید. به طور معمول، SSH به منظور برقراری اتصال از راه دور از طریق شبکه به سرور استفاده میشود. این فناوری هنگام اتصال به یک Docker container مجازی در سیستم شما بطور یکسان عمل میکند.
نکته: ما این روش را توصیه نمیکنیم؛ زیرا image را بیش از محدوده معمولی حجیم میکند. به همین دلیل برای این کار، شما باید یک image با SSH قبلاً پیکربندی شده داشته باشید؛ در واقع کانتینر شما می باید دارای سرور SSH (به عنوان مثال OpenSSH) باشد.
مرحله 1: فعالسازی SSH برروی سیستم
با نصب و فعال کردن سرویس SSH شروع نمایید:
فعال سازی SSH در اوبونتو 18.04:
sudo apt-get install ssh
sudo systemctl ssh start
sudo systemctl ssh enable
service ssh status
فعال سازی SSH در CentOS 7:
yum –y install openssh-server openssh-clients
service sshd start
service sshd enable
service sshd status
مرحله 2: بدست آوردن آدرس IP مربوط به container
با استفاده از دستور docker inspect و فیلتر کردن نتایج، آدرس IP مربوط به container را دریافت کنید.
برای موتورهای Docker مدرن، از دستور زیر استفاده نمایید:
sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" container_name
برای موتورهای Docker قدیمی، دستور زیر را اجرا کنید:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
سیستم، آدرس IP را همانطور که در تصویر بالا مشاهده میشود، نشان میدهد.
توجه: Docker container موردنظر باید در حال اجرا باشد، تا بتوان آدرس IP آن را دریافت کرد. اگر نیاز به راه اندازی یک docker container موجود دارید، از دستور زیر استفاده نمایید.
sudo docker start container_name
مرحله 3: اتصال SSH به Docker container
با دستور زیر، آدرس IP بدست آمده را ping کنید تا مطمئن شوید در دسترس است:
ping –c 3 172.17.0.2
از ابزار SSH به صورت زیر برای اتصال به image استفاده نمایید:
ssh root@172.17.0.2
سیستم باید رمز عبور کاربر root را برای آن container درخواست کند. اگر در خروجی بگوید که اتصال رد شد، احتمالاً container برای SSH تهیه نشده است. اما، چنانچه ترمینال تغییر نماید، اکنون از طریق SSH متصل شدهاید و میتوانید دستورات را در container اجرا کنید.
منبع:
phoenixnap
0 دیدگاه
نوشتن دیدگاه