ডকার-রচনার মাধ্যমে ডকার পাত্রে স্থির আইপি সরবরাহ করুন


95

আমি পাত্রে স্থির আইপি ঠিকানা সরবরাহ করার চেষ্টা করছি। আমি বুঝতে পারি যে আমাকে একটি কাস্টম নেটওয়ার্ক তৈরি করতে হবে। আমি এটি তৈরি করেছি এবং ব্রিজ ইন্টারফেসটি হোস্ট মেশিনে রয়েছে (উবুন্টু 16.x)। ধারকরা এই সাবনেট থেকে আইপি পান তবে আমি সরবরাহিত স্ট্যাটিকটি নয়।

এখানে আমার ডকার-কম্পোজ.আইএমএল:

version: '2'

services:
  mysql:
    container_name: mysql
    image: mysql:latest
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=root
    ports:
     - "3306:3306"
    networks:
     - vpcbr

  apigw-tomcat:
    container_name: apigw-tomcat
    build: tomcat/.
    ports:
     - "8080:8080"
     - "8009:8009"
    networks:
     - vpcbr
    depends_on:
     - mysql

networks:
  vpcbr:
    driver: bridge
    ipam:
     config:
       - subnet: 10.5.0.0/16
         gateway: 10.5.0.1
         aux_addresses:
          mysql: 10.5.0.5
          apigw-tomcat: 10.5.0.6

পাত্রে 5 এবং 6 এর পরিবর্তে 10.5.0.2 এবং 10.5.0.3 পাওয়া যায়।


নেটওয়ার্কে ইতিমধ্যে ব্যবহৃত আইপি ঠিকানাগুলি আইপাম-ড্রাইভারকে ম্যানুয়ালিভাবে অবহিত করতে অক্স-ঠিকানা ব্যবহার করা হয়
হামজা

যখন আমি পরিষেবাটিতে একটি স্ট্যাটিক আইপি বরাদ্দ করেছি তখন 'ডকার কম্পোজ আপ-ডি - স্কেল ধারক-নাম = 3' ব্যবহার করে আমি এই পাত্রে যে কোনও একটি কীভাবে স্কেল করতে পারি?
যশ

উত্তর:


121

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

version: '2'

services:
  mysql:
    container_name: mysql
    image: mysql:latest
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=root
    ports:
     - "3306:3306"
    networks:
      vpcbr:
        ipv4_address: 10.5.0.5

  apigw-tomcat:
    container_name: apigw-tomcat
    build: tomcat/.
    ports:
     - "8080:8080"
     - "8009:8009"
    networks:
      vpcbr:
        ipv4_address: 10.5.0.6
    depends_on:
     - mysql

networks:
  vpcbr:
    driver: bridge
    ipam:
     config:
       - subnet: 10.5.0.0/16
         gateway: 10.5.0.1

4
আপনি অবশ্যই রচনা ফাইলটির নীচের অর্ধেকটি মিস করেছেন যেখানে ব্যবহারকারী কনফিগার করা সাবনেট সংজ্ঞায়িত হয়েছিল।
বিএমচ

11
সংস্করণ 3 এ আপনি এটি কীভাবে করতে পারেন?
আতর_ম্যাক্স

4
@ আর্ট_ম্যাক্স এই মুহুর্তে, আপনি পারবেন না: "দ্রষ্টব্য: অতিরিক্ত আইপিএএম কনফিগারেশন যেমন গেটওয়ে, কেবল এই মুহূর্তে সংস্করণ 2 এর জন্য সম্মানিত হয়েছে।" docs.docker.com/compose/compose-file/#ipam
BMich

4
@ রায়ান স্ট্যাটিক আইপি'র সুরক্ষা উন্নত হবে না, আপনাকে এখনও একই সংযোগগুলি খুলতে হবে এবং আপনার পাত্রে এখনও একটি নেমস্পিড নেটওয়ার্কের অভ্যন্তরে চলবে যেখানে আপনি কেবল যা প্রয়োজন তা প্রকাশ করেন। স্ট্যাটিক আইপিগুলি আপনার অ্যাপ্লিকেশনটির রোলিং আপডেট করার ক্ষমতা, ঝাঁকনি মোডে কাজ না করা এবং পরিবেশক বা অনুরূপ ধারকগুলির মধ্যে অনুলিপিটি শক্ত করার জন্য ধারকটির কনফিগারেশনকে আরও কমিয়ে দেবে flex সংযুক্ত সমস্যার জন্য, আপনাকে কেবল ধারকটির ভিতরে 0.0.0.0 এ শুনতে হবে।
বিএমইচ

4
@ প্রতি আমার একই সমস্যা রয়েছে, আপনাকে --ফোর্স-রিকিয়েট বিকল্পটি ব্যবহার করা দরকার কারণ ডকার-
কমপস

21

আমি একটি পরিবেশের পরিবর্তনশীল যা কাস্টম নাম সহ (KAPACITOR_BASE_URL এবং KAPACITOR_ALERTS_ENDPOINT এর জন্য ধারক নাম / পোর্ট কনভেনশন সহ নয়) সহ কিছু সমস্যার মুখোমুখি হয়েছিলাম। যদি আমরা এই ক্ষেত্রে পরিষেবার নাম দিই তবে এটি আইপি হিসাবে সমাধান করবে না

KAPACITOR_BASE_URL:  http://kapacitor:9092

উপরে http://[**kapacitor**]:9092সমাধান করতে হবে নাhttp://172.20.0.2:9092

আমি সাবনেটিং কনফিগারেশন ব্যবহার করে স্থির আইপি সমস্যাগুলি সমাধান করেছি।

version: "3.3"

networks:
  frontend:
    ipam:
      config:
        - subnet: 172.20.0.0/24
services:
    db:
        image: postgres:9.4.4
        networks:
            frontend:
                ipv4_address: 172.20.0.5
        ports:
            - "5432:5432"
        volumes:
            - postgres_data:/var/lib/postgresql/data

    redis:
        image: redis:latest
        networks:
            frontend:
                ipv4_address: 172.20.0.6
        ports:
            - "6379"

    influxdb:
        image: influxdb:latest
        ports:
            - "8086:8086"
            - "8083:8083"
        volumes:
            - ../influxdb/influxdb.conf:/etc/influxdb/influxdb.conf
            - ../influxdb/inxdb:/var/lib/influxdb
        networks:
            frontend:
                ipv4_address: 172.20.0.4
        environment:
          INFLUXDB_HTTP_AUTH_ENABLED: "false"
          INFLUXDB_ADMIN_ENABLED: "true"
          INFLUXDB_USERNAME: "db_username"
          INFLUXDB_PASSWORD: "12345678"
          INFLUXDB_DB: db_customers

    kapacitor:
        image: kapacitor:latest
        ports: 
            - "9092:9092"
        networks:
            frontend:
                ipv4_address: 172.20.0.2
        depends_on:
            - influxdb
        volumes:
            - ../kapacitor/kapacitor.conf:/etc/kapacitor/kapacitor.conf
            - ../kapacitor/kapdb:/var/lib/kapacitor
        environment:
          KAPACITOR_INFLUXDB_0_URLS_0: http://influxdb:8086

    web:
        build: .
        environment:
          RAILS_ENV: $RAILS_ENV
        command: bundle exec rails s -b 0.0.0.0
        ports:
            - "3000:3000"
        networks:
            frontend:
                ipv4_address: 172.20.0.3
        links:
            - db
            - kapacitor
        depends_on:
            - db
        volumes:
            - .:/var/app/current
        environment:
          DATABASE_URL: postgres://postgres@db
          DATABASE_USERNAME: postgres
          DATABASE_PASSWORD: postgres
          INFLUX_URL: http://influxdb:8086
          INFLUX_USER: db_username
          INFLUX_PWD: 12345678
          KAPACITOR_BASE_URL:  http://172.20.0.2:9092
          KAPACITOR_ALERTS_ENDPOINT: http://172.20.0.3:3000

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