docker attachআপনাকে আপনার ডকারের ধারকটির সাথে সংযোগ করতে দেবে, তবে এটি আসলে একই জিনিস নয় ssh। উদাহরণস্বরূপ, যদি আপনার ধারক কোনও ওয়েব সার্ভার চালাচ্ছেন docker attachতবে সম্ভবত আপনাকে ওয়েব সার্ভার প্রক্রিয়াটির স্টাডআউটের সাথে সংযুক্ত করবেন । এটি অগত্যা আপনাকে শেল দেবে না।
docker execকমান্ড সম্ভবত আপনি যা খুঁজছিলেন তা নয়; এটি আপনাকে কোনও বিদ্যমান পাত্রে অভ্যন্তরীণ কমান্ড চালাতে দেবে। উদাহরণ স্বরূপ:
docker exec -it <mycontainer> bash
অবশ্যই, আপনি যে কমান্ডটি চালাচ্ছেন তা অবশ্যই কনটেইনার ফাইল সিস্টেমে থাকতে হবে।
উপরের কমান্ডটিতে <mycontainer>লক্ষ্য ধারকটির নাম বা আইডি রয়েছে। আপনি ব্যবহার করছেন কিনা তা বিবেচ্য নয় docker compose; কেবল docker psআইডি (প্রথম কলামে প্রদর্শিত হেক্সাডেসিমাল স্ট্রিং) বা নাম (চূড়ান্ত কলামে প্রদর্শিত) ব্যবহার করুন। যেমন, দেওয়া:
$ docker ps
d2d4a89aaee9 larsks/mini-httpd "mini_httpd -d /cont 7 days ago Up 7 days web
আমি রান করতে পারি:
$ docker exec -it web ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
18: eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.3/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe11:3/64 scope link
valid_lft forever preferred_lft forever
আমি দৌড়ে একই কাজটি করতে পেরেছিলাম:
$ docker exec -it d2d4a89aaee9 ip addr
একইভাবে, আমি পাত্রে একটি শেল শুরু করতে পারে;
$ docker exec -it web sh
/ # echo This is inside the container.
This is inside the container.
/ # exit
$