কম্পিউটার

ডকার কন্টেইনার নেটওয়ার্কিং - টিউটোরিয়াল

ডকারের আরও কিছু বিস্ময় অন্বেষণ করার সময়। আমরা এখন পর্যন্ত দুটি টিউটোরিয়াল পেয়েছি, একটি খুব পুঙ্খানুপুঙ্খ ভূমিকার উপর দৃষ্টি নিবদ্ধ করে, যেখানে আমরা প্রযুক্তি সম্পর্কে সমস্ত কিছু শিখেছি, কীভাবে পরিষেবাগুলি চালাতে হয় এবং পোর্টগুলিকে প্রকাশ করতে হয়, কীভাবে ডকারফাইলগুলির সাথে প্রতিশ্রুতিবদ্ধ এবং চিত্রগুলি তৈরি করতে হয় এবং আরও কয়েকটি কৌশল। তারপরে আমরা স্ক্রিপ্ট এবং সিস্টেমড শুরু করার বিকল্প হিসাবে সুপারভাইজারড ব্যবহার করেছি।

আজ আমরা নেটওয়ার্কিং সম্পর্কে জানবো। আমরা কীভাবে আমাদের কন্টেইনারগুলির সাথে সংযোগ করতে পারি, কীভাবে আমরা উদ্ভূত উদাহরণগুলির মধ্যে থেকে হোস্টকে অ্যাক্সেস করতে পারি এবং সবচেয়ে গুরুত্বপূর্ণভাবে, টপোলজি সম্পর্কে আগাম কিছু না জেনে কীভাবে এক পাত্র থেকে অন্য কনটেইনারে সংযোগ করতে পারি। এই আকর্ষণীয় হতে হবে. আগের দুটি গাইডের মতো, আমরা ধাপে ধাপে যাব, এবং সবকিছু বিস্তারিতভাবে ব্যাখ্যা করব। আমার পরে.


বিষয়বস্তুর সারণী

  1. সেটআপ
  2. কন্টেইনার নেটওয়ার্কিং হোস্ট করুন
    1. সারসংক্ষেপ
  3. নেটওয়ার্কিং হোস্ট করার ধারক
  4. কনটেইনার থেকে কন্টেইনার নেটওয়ার্কিং
  5. কন্টেইনার লিঙ্ক!
    1. হোস্ট ফাইল
    2. সার্ভারের সাথে সংযোগ করুন, এর নাম ব্যবহার করে
  6. আরো পড়া
  7. উপসংহার

সেটআপ

প্রথমে কয়েকটি পাত্র তৈরি করা যাক। আমাদের কাছে ইতিমধ্যেই শেষ পরীক্ষার ছবি রয়েছে, তাই স্ক্র্যাচ থেকে শুরু করার দরকার নেই। আমরা তিনটি কন্টেইনার চালাব, প্রতিটির নিজস্ব SSH এবং Apache পরিষেবা সহ। এর নিরাপত্তার দিকটি উপেক্ষা করুন, কারণ আমরা নেটওয়ার্কিং অংশে ফোকাস করার চেষ্টা করছি।

আমরা এখানে একটি জিনিস করব যা আমরা শেষবার করিনি তা হল, সহজে সনাক্তকরণের জন্য আমরা আমাদের পাত্রের নাম দেব। এটি --name বিকল্প ব্যবহার করে করা হয়। যেমনঃ

ডকার রান -d -ti -p 22 -p 80 --name net3 image-4:সর্বশেষ 

আমাদের তিনটি দৃষ্টান্তের আইপি ঠিকানাগুলি কী আছে তাও দেখা যাক:

[root@localhost ~]# ডকার নেট 1 পরিদর্শন করে | grep -i ipaddr
"IPAddress":"172.17.0.5",

[root@localhost ~]# ডকার নেট2 পরিদর্শন করে | grep -i ipaddr
"IPAddress":"172.17.0.6",

[root@localhost ~]# ডকার নেট৩ পরিদর্শন করে | grep -i ipaddr
"IPAddress":"172.17.0.7",

এটি পরীক্ষার জন্য আমাদের প্রাথমিক কনফিগারেশন। আমাদের তিনটি কন্টেইনার আছে, সব একই হোস্টে চলছে, তাদের পরিষেবা এবং উন্মুক্ত পরিষেবা পোর্ট সহ। এখন, আমরা কিছু বরং আকর্ষণীয় জিনিস করা শুরু করতে পারেন.

কন্টেইনার নেটওয়ার্কিং

হোস্ট করুন

এটি হল সহজ অংশ, এবং বলা সত্য, আমরা ইতিমধ্যেই পূর্ববর্তী অনুশীলনে এটি করেছি। আমরা SSH ব্যবহার করে আমাদের পাত্রে সংযুক্ত করেছি, এবং আমরা টেলনেট ব্যবহার করে পোর্ট পরীক্ষা করার চেষ্টা করেছি। হ্যাঁ, নেটক্যাট (এনসি)ও ভাল কাজ করে, দয়া করে আপনার সুরক্ষা ক্ল্যাক্সন বন্ধ করুন। সংযোগ করার দুটি উপায় আছে। এক, আপনি কন্টেইনারগুলিকে সরাসরি অ্যাক্সেস করতে পারেন, তাদের আইপি ঠিকানা ব্যবহার করে, যেমন আমরা আগে করেছি।

ssh 172.17.0.5
হোস্ট '172.17.0.5 (172.17.0.5)' এর সত্যতা প্রতিষ্ঠিত করা যাবে না। ECDSA কী ফিঙ্গারপ্রিন্ট হল 00:4b:de:91:60:e5:22:cc:f7:89:01:19:3e:61:cb:ea।
আপনি কি নিশ্চিত আপনি সংযোগ চালিয়ে যেতে চান (হ্যাঁ/না)? হ্যাঁ
সতর্কতা:পরিচিত হোস্টের তালিকায় স্থায়ীভাবে '172.17.0.5' (ECDSA) যোগ করা হয়েছে।
root@172.17.0.5 এর পাসওয়ার্ড:

দুই, আপনি হোস্ট-ম্যাপ করা পোর্টগুলিও অ্যাক্সেস করতে পারেন যা কনটেইনারগুলির ভিতরে পরিষেবা পোর্টগুলির সাথে সম্পর্কিত৷ আমরা যদি শুধু ডকার পিএস আউটপুটে পোর্টস তথ্য দেখি:

0.0.0.0:49162->22/tcp, 0.0.0.0:49161->80/tcp   নেট1
0.0.0.0:49163->22/tcp, 0.0.0.0:49164->80/tcp   নেট2
0.0.0.0:49165->22/tcp, 0.0.0.0:49166->80/tcp   নেট3

উপরের উদাহরণে, net1 নামের কন্টেইনারের জন্য, পোর্ট 22 হোস্টের পোর্ট 49162-এ ম্যাপ করা হয়েছে, যার মানে ডকার0 ইন্টারফেস, যা ডিফল্টরূপে 172.17.42.1/16 নেটওয়ার্ক বরাদ্দ করা হয়। প্রকৃতপক্ষে, আমরা দেখতে পাই:

টেলনেট 172.17.42.1 49163
172.17.42.1 চেষ্টা করা হচ্ছে...
172.17.42.1 এর সাথে সংযুক্ত।
Escape অক্ষর হল '^]'।
SSH-2.0-OpenSSH_6.6.1

এখন, কেন আপনি দ্বিতীয় পদ্ধতিটি ব্যবহার করতে চান, কারণ এটি আরও বিভ্রান্তিকর এবং মনে রাখা কঠিন? উত্তর হল, আপনি যদি ডায়নামিক ম্যাপিং ব্যবহার না করেন, কিন্তু পরিবর্তে আপনি পরিচিত, প্রদত্ত হোস্ট পোর্টগুলি উল্লেখ করেন, তাহলে আপনার কন্টেইনার নেটওয়ার্কের একটি খুব স্পষ্ট টপোগ্রাফি থাকতে পারে। তদ্ব্যতীত, আপনি যদি আপনার কন্টেনারগুলি হোস্টের বাইরে থেকে অ্যাক্সেসযোগ্য হওয়ার অনুমতি দিতে চান তবে আপনার আইপি ফরওয়ার্ডিং এবং NAT প্রয়োজন হবে। আপনি যদি যোগাযোগের জন্য docker0 ইন্টারফেস ব্যবহার করেন তবে আপনার কম, সহজ iptables নিয়মের প্রয়োজন হবে।

আপনি iptables -L কমান্ড চালিয়ে এবং DOCKER চেইন চেক করে এটি যাচাই করতে পারেন। আপনি যখনই -p বিকল্পের সাথে একটি ধারক চালাবেন তখনই নতুন নিয়মগুলি স্বয়ংক্রিয়ভাবে যুক্ত হবে৷

চেইন ডকার (1 রেফারেন্স)
target    prot opt ​​source     গন্তব্য
স্বীকার করুন  tcp  --  যে কোনো জায়গায়   172.17.0.5    tcp dpt:http
স্বীকার করুন  tcp  --  যেকোনো জায়গায়   172.17.0.5    tcp dpt:ssh
স্বীকার করুন  tcp  --  যেকোনো জায়গায়   172.17.0.6    tcp dpt:ssh
স্বীকার করুন  tcp  --  যে কোনো জায়গায়   172.17.0.6    tcp dpt:http
স্বীকার করুন  tcp  --  যেকোনো জায়গায়   172.17.0.7    tcp dpt:ssh
স্বীকার করুন  tcp  --  যে কোনো জায়গায়   172.17.0.7    tcp dpt:http
স্বীকার করুন  tcp  --  যেকোনো জায়গায়   172.17.0.8    tcp dpt:ssh
স্বীকার করুন  tcp  --  যেকোনো জায়গায়   172.17.0.8    tcp dpt:http

যাইহোক, যদি আপনার কোন নিরাপত্তা বিধিনিষেধ না থাকে, তবে গতিশীল পদ্ধতিটি বেশ কার্যকর হতে পারে, কারণ আপনি আপনার কন্টেইনারগুলি শুরু করার সময় পোর্টের ম্যাপিং জানতে হবে না। ডকার পিএস আউটপুট পার্স করে আপনি রিয়েল টাইমে তথ্য পেতে পারেন। যাইহোক, পরিষেবাগুলির জন্য, স্ট্যাটিক আইপি ঠিকানা এবং পরিচিত পোর্ট সেট করা প্রায়শই দরকারী।

সারাংশ

কারণ এটি কিছুটা বিভ্রান্তিকর, আসুন সংক্ষিপ্তভাবে সংক্ষেপে বলি। যেকোনো ডকার হোস্টের একটি docker0 বা একই নামে একটি ব্রিজ চালু থাকবে, সাধারণত একটি /16 সাবনেট সহ, যদিও আপনি সাবনেট বা এমনকি নেটওয়ার্কের নামও পরিবর্তন করতে পারেন। এটির পিছনে, আপনার কাছে একটি সম্পূর্ণ পরিসর থাকতে পারে, প্রতিটির নিজস্ব ব্যক্তিগত আইপি ঠিকানা এবং এক বা একাধিক উন্মুক্ত পোর্ট রয়েছে।

আপনি যদি এই কন্টেইনার এবং তাদের প্রাসঙ্গিক পোর্টগুলির সাথে সংযোগ করতে চান তবে আপনার কাছে বেশ কয়েকটি বিকল্প রয়েছে। আপনি সরাসরি সংযোগ করতে পারেন, কিন্তু তারপর প্রতিটির জন্য আপনার আইপি ফরওয়ার্ডিং, NAT এবং ফায়ারওয়াল নিয়ম প্রয়োজন এবং আপনাকে আইপি ঠিকানাগুলি জানতে হবে।

আপনি যদি হোস্ট ইন্টারফেস (docker0) এবং হোস্ট পোর্ট পদ্ধতি ব্যবহার করে সংযোগ করতে চান, তাহলে আপনার কনটেইনারগুলি কীভাবে চলবে তা জানতে হবে না। আপনার শুধুমাত্র কন্টেইনার পোর্টে হোস্ট পোর্টের ম্যাপিং জানতে হবে। অন্য কথায়, আপনি যদি একাধিক হোস্ট নোডের মধ্যে আপনার কন্টেইনারগুলি অ্যাক্সেসযোগ্য করতে চান তবে আপনাকে শুধুমাত্র হোস্ট ইন্টারফেস (docker0) অন্যান্য হোস্টের কাছে দৃশ্যমান করতে হবে। এটি আইপি ফরওয়ার্ডিং, NAT এবং ফায়ারওয়াল নিয়মকে সহজ করে তোলে। উদাহরণস্বরূপ:

0.0.0.0:30001->22/tcp নেট1
0.0.0.0:30007->22/tcp নেট4
0.0.0.0:30008->22/tcp নেট5

উপরের উদাহরণটি আপনাকে তিনটি ভিন্ন কন্টেইনারের SSH এর সাথে সংযোগ করতে দেয়। আপনি যদি এক-টু-ওয়ান ম্যাপিং ব্যবহার করেন, যেমন একই হোস্ট পোর্ট এবং কন্টেইনার পোর্ট (যেমন 22:22), তাহলে আপনি কার্যকরভাবে শুধুমাত্র একটি একক কন্টেইনারের সাথে একটি একক পরিষেবা শোনার মধ্যে সীমাবদ্ধ। এটি আপনার বাড়ির রাউটারের মতো। ওয়ান-টু-ওয়ান ম্যাপিং ব্যবহার করতে আপনাকে আপনার পাত্রে বিভিন্ন পোর্ট ব্যবহার করতে হবে। কিন্তু এটি বিভ্রান্তিকর, কারণ আপনি আশা করেন যে আপনার পরিষেবাগুলি অনুমানযোগ্য পোর্টগুলিতে চলবে৷

উপরের উদাহরণ দিয়ে, আমরা দেখতে পাচ্ছি যে আমরা তিনটি পাত্রে SSH ব্যবহার করতে পারি। অভ্যন্তরীণভাবে, কন্টেইনার দৃষ্টিকোণ থেকে, এটি সর্বদা 22 পোর্ট। বাইরে থেকে, পোর্ট নম্বর উভয়ই কন্টেইনার এবং সেইসাথে পরিষেবাকে চিহ্নিত করে। এবং পর্দার আড়ালে যা ঘটছে তা নিয়ে মাথা ঘামানো ছাড়াই এটিই একমাত্র অংশ যা আপনার জানা দরকার।

এর মানে হল আপনি কন্টেইনার তৈরি করার সময়, কোনো ধরনের স্ক্রিপ্ট লজিক বা এই জাতীয় ব্যবহার করে গতিশীলভাবে হোস্ট পোর্টগুলি বরাদ্দ করতে পারেন এবং তারপর আপনার পরিষেবা পোর্টগুলি সনাক্ত করতে সেই তথ্যটি ব্যবহার করতে পারেন। এইভাবে, হোস্ট টু কনটেইনার নেটওয়ার্কিং একটি সহজ এবং মার্জিত ব্যাপার হয়ে ওঠে। এবং আপনি কন্টেইনার টপোগ্রাফি আগে থেকে না জেনেও হোস্ট থেকে অন্যের সাথে সংযোগ করতে পারেন।

নেটওয়ার্কিং হোস্ট করার ধারক

এটি একটি কিছুটা বেশি আকর্ষণীয় অংশ। আপনার পাত্রে একটি দীর্ঘস্থায়ী উদ্দেশ্য পরিবেশন করতে পারে, এবং সেইজন্য, তাদের কিছু সময়ের জন্য চালু থাকতে হবে এবং চলতে হবে। পরিবর্তে, এর অর্থ হল আপনাকে কন্টেইনারগুলি বজায় রাখতে হবে, যার অর্থ আপগ্রেড, প্যাচিং, হোস্ট ফাইল আপডেট এবং কী নয়। আপনি শেফ, পাপেট বা সিফেঞ্জিনের মতো একটি কনফিগারেশন ম্যানেজমেন্ট টুলও ব্যবহার করতে পারেন, তাই সেই অংশটিও রয়েছে।

প্রথম বড় প্রশ্নটি আপনাকে জিজ্ঞাসা করতে হবে, কন্টেইনারগুলি কি বাইরের বিশ্বের সাথে যোগাযোগ করতে পারে? হ্যাঁ ঠিক. ভূমিকা গাইডে, আমরা সরাসরি অফিসিয়াল রিপোজিটরি থেকে CentOS আপডেটগুলি ডাউনলোড করেছি, তাই আমরা জানি এই অংশটি ঠিক কাজ করে। pinging docker0 সম্পর্কে কেমন হয়:

দ্বিতীয় প্রশ্ন, আমরা কি docker0 ইন্টারফেস অ্যাক্সেস করতে পারি এবং তারপরে এর হোস্ট পোর্টগুলির সাথে সংযোগ করতে পারি। আসুন এক মুহুর্তের জন্য ধরে নিই যে পাত্রের ভিতরে আমাদের প্রয়োজনীয় তথ্য দেওয়া হয়েছে।

টেলনেট 172.17.42.1 49162
172.17.42.1 চেষ্টা করা হচ্ছে...
টেলনেট:ঠিকানার সাথে সংযোগ করুন 172.17.42.1:হোস্ট করার কোন রুট নেই

এটি কাজ করবে না, কারণ আমরা আমাদের হোস্টে আইপি ফরওয়ার্ডিং কনফিগার করিনি। অধিকন্তু, প্রয়োজনীয় ট্র্যাফিকের অনুমতি দেওয়ার জন্য আমাদের ফায়ারওয়াল নিয়মের প্রয়োজন হবে। এখানে, এটি একটু জটিল হয়ে যায়, কারণ আপনি যদি iptables এর সাথে পরিচিত না হন তবে আপনি কিছুটা সংগ্রাম করবেন।

echo 1> /proc/sys/net/ipv4/ip_forward

এবং iptables নিয়ম - একটি কিছুটা শিথিল সেট, মন (হোস্টের উপর):

iptables -t ফিল্টার -A FORWARD -d 172.17.0.0/16 \
-o docker0 -j স্বীকার করুন
iptables -t ফিল্টার -A FORWARD -s 172.17.0.0/16 \
-i docker0 -j স্বীকার করুন
iptables -t ফিল্টার -A FORWARD -i docker0 -o docker0 -j স্বীকার করুন
iptables -t nat -A POSTROUTING -s 172.17.0.0/16 \
! -d 172.17.0.0/16 -p tcp -j MASQUERADE --to-পোর্ট 1016-65535 \
iptables -t nat -A POSTROUTING -s 172.17.0.0/16
! -d 172.17.0.0/16 -p udp -j MASQUERADE --to-পোর্ট 1016-65535 \
iptables -t nat -A POSTROUTING -s 172.17.0.0/16
! -d 172.17.0.0/16 -j মাস্কেরেড

সবচেয়ে সহজ বিকল্প হল ফায়ারওয়াল বন্ধ করা - অথবা সব অনুমতি দেওয়া। এর মানে হল প্রয়োজনীয় কমান্ড চালানো, যা systemctl stop firewalld, iptables -F বা সমতুল্য হতে পারে। কিছু পরিস্থিতিতে, এটি সম্ভব নাও হতে পারে, কারণ আপনার অতিরিক্ত নিরাপত্তা প্রয়োজন। যাইহোক, এটি আমরা আলোচনা করা প্রথম ব্যবহারের ক্ষেত্রেও সংযুক্ত। এখন, কল্পনা করুন যে আপনাকে প্রতিটি একক ধারক এবং এর সাথে সম্পর্কিত পরিষেবাগুলির জন্য ম্যানুয়াল নিয়ম তৈরি করতে হবে।

সঠিক নেটওয়ার্কিং নিয়মগুলির সাথে, আপনি হোস্ট পোর্টগুলির সাথে সংযোগ করতে সক্ষম হবেন, যার কার্যকরী অর্থ হল অন্য কন্টেইনারগুলির সাথে কথা বলা, যদিও নির্দিষ্ট আইপি ঠিকানা বা পোর্টে এমন কিছুই নেই যার জন্য লক্ষ্যটিকে অন্য কন্টেইনার হতে হবে৷ তদ্ব্যতীত, আপনি হোস্টের অন্যান্য নেটওয়ার্কিং ডিভাইসে বা এমনকি দূরবর্তী হোস্টের সাথেও সংযোগ করতে সক্ষম হবেন।

কন্টেইনার থেকে কন্টেইনার নেটওয়ার্কিং

ডেভিড বোভির গানের মতো, অ্যাশেস থেকে অ্যাশেস, শুধুমাত্র তেমন শান্ত নয়। এটি সবচেয়ে দরকারী দৃশ্যের মত মনে হচ্ছে. আবার, আমাদের দুটি বিকল্প আছে। আমরা সরাসরি অন্যান্য পাত্রে সংযোগ করার চেষ্টা করতে পারি, অথবা আমরা docker0 গতিশীলভাবে ম্যাপ করা পোর্ট ব্যবহার করার চেষ্টা করতে পারি। আমরা প্রতারণা করব। আমরা হোস্ট এবং হোস্ট পোর্টগুলিকে পাত্রে প্রবেশদ্বার হিসাবে ব্যবহার করব। এখন, প্রথম পদ্ধতিটি বেশ সহজবোধ্য। চলুন net1 থেকে net2 এবং net3 পিং করার চেষ্টা করি।

এটি কোনো সমস্যা ছাড়াই কাজ করে। কিন্তু সমস্যা হল, আমরা বাহ্যিক বিশ্বের আইপি ঠিকানাগুলি সম্পর্কে জানি! আমরা কন্টেইনারের ভেতর থেকে এই তথ্য পাইনি। প্রকৃতপক্ষে, নিরাপত্তার কারণে সেইসাথে বেস কন্টেইনারটি তুলনামূলকভাবে ছোট ইমেজ, আপনার কাছে ডিফল্টরূপে কোনো দুর্দান্ত নেটওয়ার্কিং টুল উপলব্ধ নেই। এমনকি আপনার কাছে ifconfig ইউটিলিটি উপলব্ধ থাকবে না। তাছাড়া, আপনি পাত্রে iptables ম্যানিপুলেট করতে পারবেন না, হয়:

iptables - এল
iptables v1.4.21:iptables টেবিল `ফিল্টার' আরম্ভ করতে পারে না:অনুমতি অস্বীকার করা হয়েছে (আপনাকে অবশ্যই রুট হতে হবে)
সম্ভবত iptables বা আপনার কার্নেল আপগ্রেড করা প্রয়োজন।

অতএব, দ্বিতীয় পদ্ধতি, ডকার0 অ্যাক্সেস করা এবং হোস্ট পোর্টগুলির সাথে সংযোগ স্থাপন করা সত্যিই সম্ভব নয়, কারণ আমরা হোস্ট ফায়ারওয়াল নিয়মগুলি পরিচালনা করতে পারি না, পাত্রের মধ্যে থেকে নয়। এজন্য আমরা তৃতীয় পদ্ধতি নিয়ে আলোচনা করব।

কন্টেইনার লিঙ্ক!

এটি করার সঠিক উপায় হল --link বৈশিষ্ট্যটি ব্যবহার করে। এর অর্থ হল, আমরা তাদের অন্যান্য, বিদ্যমান পাত্রে লিঙ্ক করার সময় নতুন উদাহরণ তৈরি করব। লিঙ্ক ফাংশন এনভায়রনমেন্টে এবং নতুন ইনস্ট্যান্সের /etc/hosts ফাইলে লিঙ্ক করা পাত্রের হোস্টনাম এবং IP ঠিকানা সন্নিবেশ করাবে। হয়তো এটি একটু বিভ্রান্তিকর শোনাচ্ছে, তাই আসুন উদাহরণ দিই:

ডকার রান -d -ti -p 80 --নাম ওয়েব ইমেজ-4:সর্বশেষ
8e689d8ae3ef43eeab3bfa9cf523e1cc6658dae5fc665f8cbf889db17db46c26

ডকার ওয়েব পরিদর্শন | grep -i ipaddr
"IPAddress":"172.17.0.9",

nc -w1 -v 172.17.0.9 80
Ncat:সংস্করণ 6.40 ( https://nmap.org/ncat )
Ncat:172.17.0.9:80 এর সাথে সংযুক্ত।

আমরা একটি ধারক চলমান আছে, এবং এটি একটি ওয়েব সার্ভার হতে অনুমিত হয়. এখন, আমরা চাই ক্লায়েন্টরা এটি অ্যাক্সেস করতে সক্ষম হোক। আমরা আইপি ঠিকানার পরিবর্তে সার্ভারের নাম ব্যবহার করতে চাই, কারণ টপোগ্রাফি সম্পর্কে আমাদের কোনো পূর্ব জ্ঞান নাও থাকতে পারে। তদ্ব্যতীত, নামগুলি দরকারী কারণ তারা আমাদের নেটওয়ার্ক বিন্যাস পরিবর্তন করতে দেয়। প্রকৃতপক্ষে, আসুন একটি ক্লায়েন্ট কন্টেইনার তৈরি করি এবং এটিকে আমাদের ওয়েব সার্ভারের সাথে লিঙ্ক করি:

docker run -ti --name ক্লায়েন্ট --link web:web image-4:latest /bin/bash

আমাদের এখানে যা আছে তা নিম্নরূপ। আমরা উৎসের একটি লিঙ্ক তৈরি করছি:লক্ষ্য। অন্য কথায়, ওয়েব নামে সার্ভার (কন্টেইনার) আমাদের নতুন কন্টেইনারের ভিতরে ওয়েব হিসাবে ক্লায়েন্ট নামক দৃশ্যমান হবে। আপনি যদি ধারকটি তৈরি করেন এবং তারপরে এটি সংযুক্ত করেন তবে আপনি একটি BASH শেলে env কমান্ডটি চালিয়ে পরিবেশ পরীক্ষা করতে পারেন:

WEB_PORT_80_TCP_PORT=80
WEB_PORT_80_TCP=tcp://172.17.0.9:80
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
WEB_PORT_22_TCP_ADDR=172.17.0.9
ধারক_uuid=558a9db0-6d1e-d9d2-b62d-a8dbfbad0b2d
WEB_PORT_22_TCP=tcp://172.17.0.9:22
SHLVL=1
হোম=/মূল
WEB_NAME=/ক্লায়েন্ট/ওয়েব
WEB_PORT_80_TCP_PROTO=tcp
WEB_PORT_80_TCP_ADDR=172.17.0.9
LESSOPEN=||/usr/bin/lesspipe.sh %s
WEB_PORT=tcp://172.17.0.9:22
__=/usr/bin/env

কারণ একই নামের ম্যাপিং বিভ্রান্তিকর হতে পারে, আসুন একটি ভিন্ন ম্যাপিং চেষ্টা করি:

docker run -ti --name ক্লায়েন্ট --link web:dedoimedo image-4:latest /bin/bash

এবং তারপর আমরা পাই:

ঐচ্ছিকভাবে, আপনি যদি পাত্র তৈরি করেন যেগুলিকে শুধুমাত্র দ্রুত কর্মী হতে হবে, তাহলে আপনি run --rm বিকল্প ব্যবহার করে সেগুলি তৈরি করার কথা বিবেচনা করতে পারেন। স্বল্পস্থায়ী কাজের জন্য, ডিস্কে কন্টেইনার ফাইলগুলি রাখার কোনও কারণ নেই এবং আপনি ডকারকে স্বয়ংক্রিয়ভাবে সেগুলি পরিষ্কার করতে পারেন। অফিসিয়াল ডকুমেন্টেশন পড়া:

ডিফল্টরূপে একটি কন্টেইনারের ফাইল সিস্টেম কন্টেইনার প্রস্থান করার পরেও টিকে থাকে। এটি ডিবাগিংকে অনেক সহজ করে তোলে (যেহেতু আপনি চূড়ান্ত অবস্থা পরিদর্শন করতে পারেন) এবং আপনি ডিফল্টরূপে আপনার সমস্ত ডেটা ধরে রাখেন। কিন্তু আপনি যদি স্বল্প-মেয়াদী ফোরগ্রাউন্ড প্রসেস চালাচ্ছেন, এই কন্টেইনার ফাইল সিস্টেমগুলি সত্যিই গাদা করতে পারে। পরিবর্তে আপনি যদি চান যে ডকার স্বয়ংক্রিয়ভাবে ধারকটি পরিষ্কার করুক এবং ধারকটি প্রস্থান করার সময় ফাইল সিস্টেমটি সরিয়ে ফেলুক, আপনি --rm পতাকা যোগ করতে পারেন।

ডকার রান --rm -ti --name ক্লায়েন্ট --link web:dedoimedo image-4:latest /bin/bash

হোস্ট ফাইল

লিঙ্ক ফাংশন সম্পর্কে দ্বিতীয় ভাল বিট হল যে নতুন কন্টেইনারগুলি স্বয়ংক্রিয়ভাবে তাদের /etc/hosts ফাইল প্রয়োজনীয় নাম দিয়ে তৈরি হবে, তাই আপনি একটি ট্রিট করতে পারবেন। IPv6 এন্ট্রি মুছে ফেলার সাথে এটি নীচের মত কিছু দেখাবে:

[root@e1e92f6918dd /]# বিড়াল /etc/hosts
172.17.0.11     e1e92f6918dd
127.0.0.1       স্থানীয় হোস্ট
172.17.0.9      dedoimedo 8e689d8ae3ef ওয়েব

সার্ভারের সাথে সংযোগ করুন, এর নাম ব্যবহার করে

এবং যেহেতু আমাদের হোস্ট নেম রেজোলিউশন এবং এনভায়রনমেন্ট সেটিংস আছে, তাই এটি যেকোনো জায়গায় যেকোনো নেটওয়ার্কিংয়ের মতোই হয়ে যায়। সত্যিই সহজ, স্মরণীয় এবং সবচেয়ে গুরুত্বপূর্ণ, স্ক্রিপ্টেবল।

আরো পড়া

আপনি যদি মনে করেন না যে আপনি যথেষ্ট মজা পেয়েছেন, তাহলে:

ডকার উন্নত নেটওয়ার্কিং গাইড

উপসংহার

এই নাও. আরেকটি ভয়ঙ্কর বিষয় রহস্যময়. জিনিসটি হল, আমি বিশ্বাস করি ডকার কন্টেইনারগুলির সাথে কাজ করার সময় আপনি যে সবচেয়ে বড় চ্যালেঞ্জের মুখোমুখি হবেন তা হল এই প্রযুক্তির নেটওয়ার্কিং অংশের অবিচ্ছেদ্য কিছুর পরিবর্তে ফায়ারওয়াল নিয়মগুলির কনফিগারেশন। কিন্তু একবার আপনি এটিকে আটকে ফেললে, এটি এতটা কঠিন বা জটিল নয়।

আমরা দেখেছি কিভাবে কন্টেইনার শুরু করা যায় এবং পোর্ট এক্সপোজ করা যায়, কন্টেইনারে হোস্ট, কন্টেইনার থেকে হোস্ট এবং কনটেইনার থেকে কন্টেইনার নেটওয়ার্কিং, সেটআপ ফরওয়ার্ডিং, এবং আমাদের জীবনকে অনেক সহজ এবং অনুমানযোগ্য করতে লিঙ্কগুলি ব্যবহার করা যায়। সব মিলিয়ে, এটি একটি ব্যস্ত কিন্তু আশাকরি ব্যবহারিক গাইড ছিল। আবার, আপনার যদি অন্য কোন বিষয় থাকে, সেগুলি নির্দ্বিধায় সাজেস্ট করুন। এবং আমরা সম্পন্ন.

পুনশ্চ. আপনি যদি এই নিবন্ধটি পছন্দ করেন, তাহলে আপনি Dedoimedo কে কিছু ভালবাসা ফিরিয়ে দিতে চান!

চিয়ার্স।


  1. ভার্চুয়াল মেশিনে 3D ত্বরণ - পার্ট 2:ভার্চুয়ালবক্স এবং ওপেনজিএল - টিউটোরিয়াল

  2. ভার্চুয়াল মেশিনে 3D ত্বরণ - পার্ট 1:VMware এবং DirectX - টিউটোরিয়াল

  3. Microsoft EMET v4 পর্যালোচনা এবং বিস্তৃত টিউটোরিয়াল

  4. Windows 10 শোষণ সুরক্ষা - টিউটোরিয়াল