Iptables দ্বারা বন্দর অবরুদ্ধ করা সত্ত্বেও কেন একটি সার্ভার চালিত একটি ডকার কনটেইনার বাইরের বিশ্বে পোর্ট উন্মুক্ত করে?


24

মাইএসকিউএল ডকারের ধারকটির ভিতরে চলতে আমার সমস্যা হচ্ছে। আমার পরীক্ষার চিত্রটি নিম্নোক্ত ডকফাইফাইল থেকে নির্মিত:

# See: https://index.docker.io/u/brice/mysql/

FROM ubuntu:12.10
MAINTAINER Joni Kahara <joni.kahara@async.fi> 

# Because docker replaces /sbin/init: https://github.com/dotcloud/docker/issues/1024
RUN dpkg-divert --local --rename --add /sbin/initctl
RUN ln -s /bin/true /sbin/initctl

RUN apt-get update
RUN apt-get upgrade -y

RUN apt-get -y install mysql-server

RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf

RUN /usr/bin/mysqld_safe & \
    sleep 10s && \
    mysql -e "GRANT ALL ON *.* to 'root'@'%'; FLUSH PRIVILEGES;"

EXPOSE 3306

VOLUME ["/var/lib/mysql", "/var/log/mysql"]

CMD ["mysqld_safe"]

উপরের ফাইল থেকে একটি চিত্র তৈরির পরে, আমি এটি দিয়ে চালাচ্ছি:

docker run -p 3306:3306 asyncfi/magento-mysql

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

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

iptables -L -v - লাইন সংখ্যা নিম্নলিখিত বলে:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     2265  107K ACCEPT     all  --  lo     any     anywhere             anywhere
2     240K  319M ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
3       14  1040 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:<REDACTED>
4       21  1092 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:http
5        6   360 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:https
6      538 34656 LOG        all  --  any    any     anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables DROP: "
7      551 35424 DROP       all  --  any    any     anywhere             anywhere

Chain FORWARD (policy ACCEPT 5 packets, 296 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 ACCEPT     all  --  docker0 docker0  anywhere             anywhere
2     6752  396K ACCEPT     all  --  docker0 !docker0  anywhere             anywhere
3     125K  188M ACCEPT     all  --  any    docker0  anywhere             anywhere             ctstate RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT 51148 packets, 14M bytes)
num   pkts bytes target     prot opt in     out     source               destination

ডকার সংস্করণটি হ'ল:

Client version: 0.7.3
Go version (client): go1.2
Git commit (client): 8502ad4
Server version: 0.7.3
Git commit (server): 8502ad4
Go version (server): go1.2
Last stable version: 0.7.3

মাইএসকিউএল পোর্টটি কেন বাইরের বিশ্বের কাছে উন্মুক্ত?

উত্তর:


28

# ডকার আইআরসি চ্যানেল ব্যবহারকারীদের মাইকেল ক্রসবি এবং পল জজারকে ধন্যবাদ আমি এখন আমার নিজের প্রশ্নের উত্তর দিতে সক্ষম হয়েছি। সমস্যাটি আসলে এই যে আমি এই ধারকটি চালিয়েছি:

docker run -p 3306:3306 asyncfi/magento-mysql

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

docker run -p 127.0.0.1:3306:3306 asyncfi/magento-mysql

এছাড়াও EXPOSEডকফাইলে লাইনটি প্রয়োজনীয় নয় কারণ পাত্রে লিঙ্ক দেওয়ার জন্য "এক্সপোজ" প্রক্রিয়া ব্যবহৃত হয় ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.