আমি নিম্নলিখিত পরিকাঠামো প্রবাহ তৈরি করতে চাই:
কীভাবে ডকার ব্যবহার করে এটি অর্জন করা যায়?
আমি নিম্নলিখিত পরিকাঠামো প্রবাহ তৈরি করতে চাই:
কীভাবে ডকার ব্যবহার করে এটি অর্জন করা যায়?
উত্তর:
প্রথমে আপনাকে যে ছবিগুলি এসএস-ইন করতে ইচ্ছুক রয়েছে সেগুলিতে আপনাকে একটি এসএসএইচ সার্ভার ইনস্টল করতে হবে। আপনি এসএসএস সার্ভার ইনস্টল করে আপনার সমস্ত ধারকের জন্য একটি বেস চিত্র ব্যবহার করতে পারেন। তারপরে আপনাকে কেবল হোস্টের পোর্টগুলিতে (আপনার চিত্রের রিমোট সার্ভার) এসএস পোর্ট (ডিফল্ট 22) ম্যাপিং করে প্রতিটি কন্টেইনার চালাতে হবে -p <hostPort>:<containerPort>
। অর্থাত:
docker run -p 52022:22 container1
docker run -p 53022:22 container2
তারপরে, 52022 এবং 53022 হোস্টের পোর্টগুলি যদি বাইরে থেকে অ্যাক্সেসযোগ্য হয় তবে আপনি হোস্টের আইপি (রিমোট সার্ভার) এর সাহায্যে পোর্টগুলি ssh এ নির্দিষ্ট করে সরাসরি পাত্রে স্যাশ করতে পারেন -p <port>
। অর্থাৎ:
ssh -p 52022 myuser@RemoteServer
-> এসএসএইচ থেকে ধারক 1
ssh -p 53022 myuser@RemoteServer
-> এসএসএইচ থেকে ধারক 2
বিজ্ঞপ্তি : এই উত্তরটি আমার লেখা একটি সরঞ্জামের প্রচার করে।
এখানে নির্বাচিত উত্তরটি প্রতিটি ছবিতে একটি এসএসএইচ সার্ভার ইনস্টল করার পরামর্শ দেয়। ধারণামূলকভাবে এটি সঠিক পদ্ধতির নয় ( https://docs.docker.com/articles/dockerfile_best-practices/ )।
আমি একটি ধারকযুক্ত এসএসএইচ সার্ভার তৈরি করেছি যা আপনি যে কোনও চলমান ধারককে আটকে রাখতে পারেন। এইভাবে আপনি প্রতিটি ধারক দিয়ে রচনাগুলি তৈরি করতে পারেন। একমাত্র প্রয়োজন হ'ল ধারকটিতে ব্যাশ রয়েছে।
নিম্নলিখিত উদাহরণটি স্থানীয় মেশিনের 2222 পোর্টে উন্মুক্ত একটি এসএসএইচ সার্ভার শুরু করবে।
$ docker run -d -p 2222:22 \
-v /var/run/docker.sock:/var/run/docker.sock \
-e CONTAINER=my-container -e AUTH_MECHANISM=noAuth \
jeroenpeeters/docker-ssh
$ ssh -p 2222 localhost
আরও পয়েন্টার এবং ডকুমেন্টেশনের জন্য দেখুন: https://github.com/jeroenpeeters/docker-ssh
এটি কেবল কন্টেইনারগুলির জন্য একটি প্রক্রিয়ার ধারণাকেই পরাভূত করে না, ডকার হাবের চিত্রগুলি ব্যবহার করার সময় এটি একটি জটিল বিষয়ও কারণ তারা প্রায়শই এসএসএইচ সার্ভার ধারণ করে না (এবং হওয়া উচিত নয়)।
এই ফাইলগুলি সফলভাবে sshd খুলবে এবং পরিষেবা চালাবে যাতে আপনি স্থানীয়ভাবে এসএসএস করতে পারেন। (আপনি সাইবারডুক ব্যবহার করছেন আপনি না?)
ডকফেরফাইল
FROM swiftdocker/swift
MAINTAINER Nobody
RUN apt-get update && apt-get -y install openssh-server supervisor
RUN mkdir /var/run/sshd
RUN echo 'root:password' | chpasswd
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
EXPOSE 22
CMD ["/usr/bin/supervisord"]
তদারকি
[supervisord]
nodaemon=true
[program:sshd]
command=/usr/sbin/sshd -D
শেমের মধ্যে লাফিয়ে লাফিয়ে / লাফিয়ে স্টার্ট ডেমন / চালাতে।
docker build -t swift3-ssh .
docker run -p 2222:22 -i -t swift3-ssh
docker ps # find container id
docker exec -i -t <containerid> /bin/bash
আমার ধারণা এটি সম্ভব। আপনাকে কেবল প্রতিটি পাত্রে একটি এসএসএইচ সার্ভার ইনস্টল করতে হবে এবং হোস্টের একটি পোর্ট প্রকাশ করতে হবে। মূল বিরক্তি হ'ল পোর্টটি ধারক করে ম্যাপিং রক্ষণ / স্মরণ করা হবে।
তবে আমাকে প্রশ্ন করতে হবে আপনি কেন এটি করতে চান। কনটেইনারগুলিতে থাকা এসএসএইচ যথেষ্ট বিরল হওয়া উচিত যা হোস্টের কাছে ছিটকে পড়ার ঝামেলা নয় তখন কনটেইনারটিতে প্রবেশের জন্য ডকার এক্সিকিউট ব্যবহার করুন।
প্রাক-ইনস্টলযুক্ত ডকার চিত্রটি তৈরি করুন openssh-server
:
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:screencast' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
ব্যবহার করে চিত্রটি তৈরি করুন:
$ docker build -t eg_sshd .
একটি test_sshd
ধারক চালান :
$ docker run -d -P --name test_sshd eg_sshd
$ docker port test_sshd 22
0.0.0.0:49154
আপনার ধারকটিতে এসএসএস করুন:
$ ssh root@192.168.1.2 -p 49154
# The password is ``screencast``.
root@f38c87f2a42d:/#
সূত্র: https://docs.docker.com/engine/example/running_ssh_service/#build-an-eg_sshd-image
ssh root@localhost -p <ssh_host_port>
নির্দেশাবলী অনুসরণ করুন এখানে