ডকার কমপোজ বনাম ডকফেরফিল - এটি আরও ভাল কি?


384

আমি ডকার সম্পর্কে পড়ছি এবং শিখছি এবং ব্যবহার করার জন্য জ্যাঙ্গো সেটআপটি সঠিকভাবে চয়ন করার চেষ্টা করছি। এখনও পর্যন্ত হয়:

ডকার কমপোজ বা ডকফাইফাইল

আমি বুঝতে পারি যে এটিতে Dockerfilesব্যবহৃত হয়েছে Docker Compose, তবে আমি নিশ্চিত নই FROMযে বিভিন্ন চিত্রের জন্য একাধিক কমান্ড সহ একটি বড় ডকফিলিতে সমস্ত কিছু রাখা ভাল অনুশীলন কিনা ?

আমি কয়েকটি বিভিন্ন চিত্র ব্যবহার করতে চাই যার মধ্যে রয়েছে:

uwsgi
nginx
postgres
redis
rabbitmq
celery with cron

ডকার ব্যবহার করে এই ধরণের পরিবেশ স্থাপনের জন্য সর্বোত্তম অনুশীলনগুলি সম্পর্কে পরামর্শ দিন ।

যদি এটি সহায়তা করে তবে আমি ম্যাকে আছি, সুতরাং বুট 2 ডকার ব্যবহার করে ।

আমার কিছু সমস্যা ছিল:

  1. ডকার রচনা পাইথন 3 এর সাথে সামঞ্জস্যপূর্ণ নয়
  2. আমি আমার প্রকল্পটি ধারক করে তুলতে চাই, সুতরাং যদি কোনও বড় ডকফাইফাইল আদর্শ না হয় তবে আমি অনুভব করি যে ডকার রচনাটি ব্যবহার করে এটি ভেঙে ফেলতে হবে feel
  3. আমি পাই 2 এবং পাই 3 প্রকল্পটি সুসংগত করতে ঠিক আছি, তাই জাজানো-রচনাটির দিকে ঝুঁকছি

5
বিষয়টি আরও ভালভাবে বর্ণিত হবে "আমাকে কি আমার অ্যাপ্লিকেশনটি একক বা একাধিক ধারক হিসাবে চালানো উচিত?" দেখে মনে হচ্ছে এটি নির্ভর করে এবং স্কেলিং এবং উদ্বেগের বিভাজনের বিষয়গুলি (পরিষেবা প্রতি এক ধারক) বিবেচনা করা উচিত। এগুলি সাহায্য করতে পারে: স্ট্যাকওভারফ্লো / প্রশ্ন / 30534939/… এবং কোওরা. com/…
ফ্যাবিয়েন স্নোওয়ার্ট

অফিসিয়াল ডকার "শুরু করা" ডক্স
19ch

উত্তর:


238

উত্তর না হয়।

আপনি যদি আপনার প্রকল্পের বিল্ড কমান্ডটি যুক্ত করেন তবে ডকার কমপোজ (এটির মধ্যে রচনা হিসাবে চিহ্নিত) ডকফায়াইল ব্যবহার করবে docker-compose.yml

আপনার ডকার ওয়ার্কফ্লোটি Dockerfileআপনি তৈরি করতে চান এমন প্রতিটি চিত্রের জন্য উপযুক্ত তৈরি করা উচিত, তারপরে buildকমান্ডটি ব্যবহার করে চিত্রগুলি একত্র করার জন্য রচনা লিখুন ।

ব্যবহার করে আপনি আপনার ব্যক্তিগত Dockerfiles পাথ নির্দিষ্ট করতে পারেন build /path/to/dockerfiles/blahযেখানে /path/to/dockerfiles/blahযেখানে বাজে কথা কারো নির্দেশ চলে না Dockerfileজীবনে।


10
আপনি কি docker-composeউত্পাদন বা শুধুমাত্র দেব ব্যবহার করেন? আপনার সাহায্যের জন্য ধন্যবাদ.
অ্যারন লেলেভিয়ার

18
@ বুয়া আপনি কি দয়া করে এ সম্পর্কে বিস্তারিত বলতে পারবেন?
মার্টিন থোমা

2
উত্তরের জন্য ধন্যবাদ! ডকফায়াইল চিত্রের জন্য কনফিগারেশন নির্দিষ্ট করে এবং ডকার-কমপোজ.আইএমএল একসাথে চিত্রগুলি একত্রিত করে .. একটি জিনিস আমি উল্লেখ করতে চাই যে, যদি docker-compose.ymlকেবলমাত্র সর্বজনীন চিত্র ব্যবহার করা হয় (ইন্টারনেট / ডকার হাব থেকে চিত্রটি টানতে) তবে তার জন্য প্রয়োজন নেই কমান্ড চালানোর জন্য ডকফেরফাইল docker-compose up
Oldyoung

549

Dockerfile

এখানে চিত্র বর্ণনা লিখুন

ডকফেরফিল হ'ল একটি সাধারণ পাঠ্য ফাইল যা ব্যবহারকারীর দ্বারা একটি চিত্র একত্রিত করার জন্য ডেকে আনা কমান্ডগুলি থাকে।

উদাহরণস্বরূপ, ডকফেরাইল

FROM ubuntu:latest
MAINTAINER john doe 

RUN apt-get update
RUN apt-get install -y python python-pip wget
RUN pip install Flask

ADD hello.py /home/hello.py

WORKDIR /home

ডকার রচনা

এখানে চিত্র বর্ণনা লিখুন

ডকার রচনা

  • মাল্টি-কন্টেইনার ডকার অ্যাপ্লিকেশনগুলি সংজ্ঞায়িত এবং চালানোর জন্য একটি সরঞ্জাম।

  • আপনার অ্যাপটি তৈরি করে এমন পরিষেবাগুলি সংজ্ঞায়িত করুন docker-compose.ymlযাতে তারা বিচ্ছিন্ন পরিবেশে একসাথে চালানো যায়।

  • একটি কমান্ডে চলমান একটি অ্যাপ্লিকেশন সন্ধান করে চলুন get docker-compose up

উদাহরণস্বরূপ, ডকার-কমপোজ.আইএমএল

version: "3"
services:
  web:
    build: .
    ports:
    - '5000:5000'
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
    volumes:
      logvolume01: {}

43
@ এস জি এর উত্তরটি হ'ল ডকার বনাম ডকার কমপোজ সম্পর্কে বোঝার অভাবের ভিত্তিতে প্রশ্নটি খারাপ। দু'জনের আন্তঃসম্পর্কীয়ভাবে ব্যাখ্যা করা কীভাবে সম্ভবত আমি ভাবতে পারি সেরা উত্তর।
চালিত

53
আমার সঠিক ধারণা নেই কেন ডকারের হোম পৃষ্ঠায় এই সঠিক ব্রেকডাউনটি বসে নেই। ধন্যবাদ।
codykochmann

4
আমি ওয়েবে সর্বাধিক প্রকাশিত সরঞ্জাম / সমাধান / ফ্রেমওয়ার্কগুলিতে এই জাতীয় ডক্স অনুপস্থিত দেখতে পাচ্ছি। আমি ধারণা করি আপনি ইতিমধ্যে সমাধানটি নিজেরাই জানেন / আবিষ্কার করেছেন সে ক্ষেত্রে কারও কেন এটির প্রয়োজন তা দেখা শক্ত।
পিটার ব্রানফোর্ন 12 '13

36
এই উত্তরটি থেকে কী অনুপস্থিত তা রচনা সম্পর্কে আরও তথ্য। রচনা লিপিটি কি ডকফায়িলকে ডাকে? কীভাবে এটি রচনা করবেন তা জানেন? উদাহরণটি দেখায় image: redisকিন্তু এটি কি ডকারহাব থেকে? স্থানীয় ডিরেক্টরি? ইত্যাদি ... এটি আমার মতো একজন নববধূকে আসলেই কী ঘটছে তা বুঝতে বিভ্রান্ত করে তোলে
জো ফিলিপস

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

99

কম্পোজ ফাইল বর্ণনা তার চলমান অবস্থায় ধারক , কিভাবে করতে হয় তার বিবরণের যাব ধারক গড়ে তুলতে থেকে Dockerfileshttp://deninet.com/blog/1587/docker-scratch-part-4-compose-and-volumes

আপনি যখন আপনার অ্যাপ্লিকেশনটিকে বিকাশে কমপোজ দিয়ে সংজ্ঞায়িত করেন, আপনি এই সংজ্ঞাটি বিভিন্ন অ্যাপ্লিকেশন যেমন সিআই, মঞ্চায়ন এবং উত্পাদনতে চালানোর জন্য ব্যবহার করতে পারেনhttps://docs.docker.com/compose/production/

এটিও মনে হয় যে রচনাটি 1.11 হিসাবে উত্পাদনকে নিরাপদ হিসাবে বিবেচনা করা হয় , যেহেতু https://docs.docker.com/v1.11/compose/pr Prod// এটিকে https: // ডক্সের মতো উত্পাদনে ব্যবহার না করার একটি সতর্কতা নেই .docker.com / v1.10 / রচনা / উত্পাদন / করে।


1
সমস্যাটি সামনে আনার জন্য ধন্যবাদ। আপনি কি দয়া করে 1.11 এ উত্পাদন সুরক্ষার জন্য ঠিক করা হয়েছিল তার আরও কিছু যোগ করতে পারেন?
এম এ হোসাইন টনু

92

আপনাকে ডোনার-ক্লাইজের সাথে আপনাকে এক টন কমান্ড লিখতে রাখতে ডকার-কমপোজ উপস্থিত রয়েছে।

ডকার-কমপোজ একইসাথে একাধিক পাত্রে স্টার্টআপ করা সহজ করে তোলে এবং এটিকে স্বয়ংক্রিয়ভাবে কিছু ফর্ম নেটওয়ার্কিংয়ের সাথে সংযুক্ত করে।

ডকার-রচনাটির উদ্দেশ্য হ'ল ডকার ক্লাই হিসাবে কাজ করা কিন্তু একাধিক কমান্ড আরও দ্রুত জারি করা।

ডকার-রচনাটির ব্যবহার করতে, আপনি আগে যে docker-compose.ymlফাইলটি চালাচ্ছিলেন সেগুলিকে একটি ফাইলের মধ্যে এনকোড করা দরকার ।

আপনি কেবল তাদের ইয়ামল ফাইলে কপি করতে যাচ্ছেন না, একটি বিশেষ বাক্য গঠন রয়েছে।

একবার তৈরি হয়ে গেলে, আপনাকে এটিকে ডকার-রচনা ক্লাইলে খাওয়াতে হবে এবং ফাইলটি বিশ্লেষণ করতে এবং এটি নির্দিষ্ট করা সঠিক কনফিগারেশন সহ সমস্ত বিভিন্ন ধারক তৈরি করা আমাদের ক্লাইকের হাতে থাকবে।

সুতরাং আপনার পৃথক পাত্রে থাকবে, উদাহরণস্বরূপ বলতে দিন, একটি হ'ল redis-serverদ্বিতীয়টি হ'ল node-appএবং আপনি এটি চান Dockerfileআপনার বর্তমান ডিরেক্টরিতে এটি ব্যবহার করে তৈরি করা ।

অতিরিক্তভাবে, সেই ধারকটি তৈরি করার পরে আপনি এর ভিতরে চলমান সমস্ত কিছু অ্যাক্সেস করার জন্য ধারক থেকে স্থানীয় মেশিনে কিছু বন্দর ম্যাপ করবেন।

সুতরাং আপনার docker-compose.ymlফাইলের জন্য আপনি প্রথম লাইনের মতো শুরু করতে চান:

version: '3'

এটি ডকারকে আপনার যে সংস্করণটি docker-composeব্যবহার করতে চান তা বলে । এর পরে আপনাকে যুক্ত করতে হবে:

version: '3'
services: 
  redis-server: 
    image: 'redis'
  node-app:
    build: .

ইন্ডেন্টেশনটি লক্ষ্য করুন, খুব গুরুত্বপূর্ণ। এছাড়াও, একটি পরিষেবাদির জন্য লক্ষ্য করুন আমি একটি চিত্র দখল করছি, তবে অন্য একটি পরিষেবার জন্য আমি docker-composeদ্বিতীয় ধারকটির জন্য ব্যবহার করা হবে এমন চিত্রটি তৈরি করতে বর্তমান ডিরেক্টরিটির ভিতরে দেখতে বলছি ।

তারপরে আপনি এই ধারকটিতে যে সমস্ত পৃথক পোর্ট খুলতে চান তা নির্দিষ্ট করতে চান।

version: '3'
services: 
  redis-server: 
    image: 'redis'
  node-app:
    build: .
    ports:
      -

দয়া করে ড্যাশটি লক্ষ্য করুন, একটি ইয়ামল ফাইলের একটি ড্যাশ হ'ল আমরা কীভাবে অ্যারে নির্দিষ্ট করি। এই উদাহরণে আমি 8081আমার লোকাল মেশিনে 8081কনটেইনারটিতে ম্যাপিং করছি :

version: '3'
services: 
  redis-server: 
    image: 'redis'
  node-app:
    build: .
    ports:
      - "8081:8081"

সুতরাং প্রথম বন্দরটি হ'ল আপনার স্থানীয় মেশিন, এবং অন্যটি ধারকটির বন্দর, আপনি এইরকম বিভ্রান্তি এড়াতে উভয়ের মধ্যে পার্থক্য করতে পারেন:

version: '3'
services:
  redis-server:
    image: 'redis'
  node-app:
    build: .
    ports:
      - "4001:8081"

আপনার docker-compose.ymlফাইলটি এটির মতো বিকাশ করার ফলে এটি মূলত একই নেটওয়ার্কে এই ধারকগুলি তৈরি করবে এবং তারা যেভাবে খুশি সেভাবে একে অপরের সাথে যোগাযোগের জন্য অবাধ অ্যাক্সেস পাবে এবং তারা যতটা চান তথ্য বিনিময় করবে।

যখন দুটি পাত্রে ব্যবহার করে তৈরি করা হয় তখন docker-composeআমাদের কোনও বন্দর ঘোষণার প্রয়োজন হয় না।

এখন আমার উদাহরণে, নোডেজ অ্যাপে আমাদের এমন কিছু কোড কনফিগারেশন করা দরকার যা দেখতে এরকম কিছু দেখাচ্ছে:

const express = require('express');
const redis = require('redis');

const app = express();
const client = redis.createClient({
  host: 'redis-server'
});

আমি আপনাকে এই বিষয়ে সচেতন করতে উপরের এই উদাহরণটি ব্যবহার করি যে এর বাইরেও আপনাকে কিছু নির্দিষ্ট কনফিগারেশন করতে হবে docker-compose.yml যে আপনার প্রকল্পের জন্য সুনির্দিষ্ট ফাইলটি ।

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

const express = require('express');
const redis = require('redis');

const app = express();
const client = redis.createClient({
  host: 'redis-server',
  port: 6379
});

সুতরাং ডকার দেখতে যাচ্ছেন যে নোড অ্যাপটি সন্ধান করছে redis-serverএবং এই চলমান ধারকটিতে সেই সংযোগটি পুনর্নির্দেশ করবে।

পুরো সময়, Dockerfileএকমাত্র এটি থাকে:

FROM node:alpine

WORKDIR '/app'

COPY /package.json ./
RUN npm install
COPY . .

CMD ["npm", "start"]

সুতরাং, docker run myimageফাইলের অভ্যন্তরে সমস্ত পাত্রে বা পরিষেবাদিগুলির পরিবর্তে চালানোর জন্য docker-compose upআপনাকে দৌড়াতে হবে, এবং আপনাকে কোনও চিত্র নির্দিষ্ট করতে হবে না কারণ ডকার বর্তমানের ডিরেক্টরিতে কাজ করবে এবং এটির জন্য অনুসন্ধান করবেdocker-compose.yml সেখানে ভিতরে ফাইল।

আগে docker-compose.yml, আমরা দুটি পৃথক কমান্ড সাথে মোকাবিলা করতে হয়েছে docker build .এবং docker run myimageকিন্তু এ docker-composeবিশ্বের আপনি আপনার ইমেজ আপনি লিখতে পুনর্নির্মাণের করতে চান তাহলে docker-compose up --build। এটি ডকারকে আবার ধারকগুলি আবার শুরু করতে বলে কিন্তু সর্বশেষ পরিবর্তনগুলি পেতে এটি পুনর্নির্মাণ করতে বলে।

সুতরাং docker-composeএকাধিক পাত্রে কাজ করা সহজ করে তোলে। পরের বার আপনার পটভূমিতে এই পাত্রে এই গোষ্ঠীটি শুরু করতে হবে docker-compose up -dএবং আপনি যেগুলি করতে পারেন তা বন্ধ করতে হবে docker-compose down


13
@ ক্রিস এটি প্রায় যেমন এটি এবং গৃহীত উত্তরের মধ্যে 3 বছরের জ্ঞান রয়েছে।
নারুটো সেম্পাই

আমি অবাক হয়েছি যদি আমার কোনও ভাল কারণ docker-compose upযদি আমার পরিস্থিতিতে কেবল একটি পরিষেবা ব্যবহার করে ? আর একটি শব্দ, এর সাথে তুলনা কর docker run xxx, আমি যদি কোন উপকার ব্যবহার করি docker-compose up?
অলাইন করুন

@atline Pansoul এর প্রতিক্রিয়া দেখতে stackoverflow.com/a/45549372/3366962 ব্যবহারের সুবিধা docker-composeএকক পাত্রে জন্য
go2null

1
@ পলরজভানবার্গ আপনার "বা" অংশটি সঠিক (এবং 6379এটি রেডিসের ডিফল্ট বন্দর)।
কৃষাপ্রভাকর

1
ডকার-কমপোজ.আইএমএল এর উদাহরণগুলি আমাকে ডকার-রচনা সম্পর্কে আমার কিছু প্রশ্নের উত্তর দিতে সহায়তা করেছিল। গৃহীত উত্তরটি কার্যকর নয়, বিশেষত যারা ডকারে নতুন।
maulik13

43

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

সবচেয়ে বড় সুবিধা (আমার মতে): পাত্রে লিঙ্ক করার সময় , আপনি একটি নাম সংজ্ঞায়িত করতে পারেন এবং এই পাত্রে আপনার পাত্রে পিং করতে পারেন। সুতরাং আপনার ডাটাবেস নামের সাথে অ্যাক্সেসযোগ্য dbএবং এর আইপি দ্বারা আর হতে পারে ।


আপনি নাম দ্বারা ডিবি অ্যাক্সেস আরও বিশদ বর্ণনা করতে পারেন?
বেদরান মেরিসেভিক।

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

সুরকারে আমি বলতে চাইছি। সুতরাং আমি সুরকারগুলিতে ছবিগুলিকে লিঙ্ক করব এবং আইপি এর পরিবর্তে আমার অ্যাপ কনফিগারেশনে, আমি মাইএসকিউএলটিকে সুরকারীর ফাইলে যে নাম দিয়েছি তা দিয়েই তার তালিকাবদ্ধ করছি?
বেদরান মেরিসেভিক।

এটাই সঠিক. এমনকি আপনাকে কোনও লিঙ্ক নির্দিষ্ট করতে হবে না। নেটওয়ার্কটি আলাদাভাবে নির্দিষ্ট না করা থাকলে তারা ডিফল্টরূপে লিঙ্কযুক্ত। এই উদাহরণে পরিষেবা "ওয়েব" হোস্টটিকে "রেডিস" এর নাম "রেডিস" দিয়ে পিং করতে পারে
n2o

37

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

আমি বুঝতে পেরেছি যে ডকারফিলসগুলি ডকার কমপোজগুলিতে ব্যবহৃত হয়, তবে আমি নিশ্চিত নই যে বিভিন্ন চিত্রের জন্য একাধিক এফআরএম কমান্ড সহ একটি বড় ডকফিলিতে সমস্ত কিছু রাখা ভাল অনুশীলন কিনা?

একক ডকফার্মে একাধিক FROM ব্যবহার করা খুব ভাল ধারণা নয় কারণ বৈশিষ্ট্যটি অপসারণের প্রস্তাব রয়েছে। 13026

উদাহরণস্বরূপ, আপনি এমন একটি অ্যাপ্লিকেশনকে ডকারাইজ করতে চান যা একটি ডাটাবেস ব্যবহার করে এবং আপনার কম্পিউটারে অ্যাপ্লিকেশন ফাইল থাকতে পারে, আপনি নিম্নোক্তভাবে একটি ডকফায়াইলের সাথে একটি রচনা ফাইল ব্যবহার করতে পারেন

Docker-compose.yml

mysql:
  image: mysql:5.7
  volumes:
    - ./db-data:/var/lib/mysql
  environment:
    - "MYSQL_ROOT_PASSWORD=secret"
    - "MYSQL_DATABASE=homestead"
    - "MYSQL_USER=homestead"
  ports:
    - "3307:3306"
app:
  build:
    context: ./path/to/Dockerfile
    dockerfile: Dockerfile
  volumes:
    - ./:/app
  working_dir: /app

Dockerfile

FROM php:7.1-fpm 
RUN apt-get update && apt-get install -y libmcrypt-dev \
  mysql-client libmagickwand-dev --no-install-recommends \
  && pecl install imagick \
  && docker-php-ext-enable imagick \
  && docker-php-ext-install pdo_mysql \
  && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

30

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

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

এখানে চিত্র বর্ণনা লিখুন

ধারক: একটি ইমেজ একটি দৃষ্টান্ত একটি বলা হয় ধারক । একটি ধারক কেবল একটি এক্সিকিউটেবল ইমেজ বাইনারি যা হোস্ট ওএস দ্বারা চালিত হয়। একটি চলমান ইমেজ একটি ধারক হয়।

এখানে চিত্র বর্ণনা লিখুন

ডকফেরফাইল: একটি ডকফাইফাইল একটি পাঠ্য নথি যা সমস্ত কমান্ড / বিল্ড নির্দেশাবলী ধারণ করে, কোনও ব্যবহারকারী একটি চিত্র একত্রিত করার জন্য কমান্ড লাইনে কল করতে পারে। এটি হিসাবে সংরক্ষণ করা হবে Dockerfile। (ছোট 'এফ' দ্রষ্টব্য।)

এখানে চিত্র বর্ণনা লিখুন

ডকার-রচনা: রচনা বহু-ধারক ডকার অ্যাপ্লিকেশনগুলি সংজ্ঞায়িত এবং চালানোর জন্য একটি সরঞ্জাম। রচনা সহ, আপনি আপনার অ্যাপ্লিকেশনটির পরিষেবাগুলি (পাত্রে) কনফিগার করতে একটি YAML ফাইল ব্যবহার করেন। তারপরে, একটি একক কমান্ডের সাহায্যে আপনি আপনার কনফিগারেশন থেকে সমস্ত পরিষেবা তৈরি এবং শুরু করবেন। রচনা ফাইল হিসাবে সংরক্ষণ করা হবে docker-compose.yml


14

কল্পনা করুন আপনি কোনও সফ্টওয়্যার সংস্থার পরিচালক এবং আপনি কেবল একটি নতুন সার্ভার কিনেছেন। শুধু হার্ডওয়্যার।

Dockerfileআপনি আপনার সিস্টেম প্রশাসককে এই ব্র্যান্ড নতুন সার্ভারে কী ইনস্টল করবেন তা নির্দেশাবলীর একটি সেট হিসাবে ভাবেন । উদাহরণ স্বরূপ:

  • আমাদের একটি ডেবিয়ান লিনাক্স দরকার
  • একটি অ্যাপাচি ওয়েব সার্ভার যুক্ত করুন
  • আমাদের পাশাপাশি পোস্টগ্র্যাস্কলও দরকার
  • মধ্যরাতের কমান্ডার ইনস্টল করুন
  • সব হয়ে গেলে, আমাদের প্রকল্পের সমস্ত * .php, * .jpg, ইত্যাদি ফাইলগুলি ওয়েব সার্ভারের ওয়েবরুটে অনুলিপি করুন ( /var/www)

বিপরীতে, docker-compose.ymlনির্দেশাবলীর একটি সেট হিসাবে আপনি নিজের সিস্টেম প্রশাসককে বলবেন যে কীভাবে সার্ভারটি বিশ্বের অন্যান্য বিশ্বের সাথে যোগাযোগ করতে পারে । উদাহরণ স্বরূপ,

  • এটির অন্য কম্পিউটারের ভাগ করা ফোল্ডারে অ্যাক্সেস রয়েছে,
  • এটি 80 বন্দরটি হোস্ট কম্পিউটারের 8000 পোর্টের সমান,
  • ইত্যাদি।

(এটি একটি সুনির্দিষ্ট ব্যাখ্যা নয় তবে শুরু করার পক্ষে যথেষ্ট ভাল))


4

Dockerfiles একটি খালি হাড় উবুন্টু থেকে উদাহরণস্বরূপ একটি চিত্র গড়ে তুলতে হয়, আপনি যোগ করতে পারেন mysqlনামক mySQLএক ছবিতে এবং mywordpressনামের দ্বিতীয় ছবিতে mywordpress

রচনাগুলি YAML ফাইলগুলি এই চিত্রগুলি নেওয়ার জন্য এবং এগুলিকে একত্রে চালানোর জন্য। উদাহরণস্বরূপ যদি আপনার docker-compose.ymlফাইলে একটি পরিষেবা কল থাকে db:

services:
   db:
     image: mySQL  --- image that you built.

এবং ওয়ার্প্রেস নামে পরিচিত একটি পরিষেবা:

wordpress: 
    image: mywordpress

তারপরে মাইওয়ার্ডপ্রেস ধারকটির ভিতরে dbআপনি আপনার মাইএসকিউএল ধারকটির সাথে সংযোগ করতে ব্যবহার করতে পারেন । এই যাদুটি সম্ভব কারণ আপনার ডকার হোস্ট একটি নেটওয়ার্ক ব্রিজ তৈরি করে (নেটওয়ার্ক ওভারলে)।


0

মাইক্রোসার্ফেসিজ বিশ্বে (একটি সাধারণ শেয়ার্ড কোডবেস থাকা) প্রতিটি মাইক্রোসার্ফিসের Dockerfileমূল স্তরে কিছুটা সময় থাকতে হবে (সাধারণত সমস্ত মাইক্রোসার্ভেসের বাইরে এবং যেখানে আপনার প্যারেন্ট পিওএম থাকে) আপনি docker-compose.ymlসমস্ত মাইক্রোসার্ভেসিকে একটি সম্পূর্ণ বর্ধিত অ্যাপ্লিকেশনটিতে গ্রুপ করার জন্য সংজ্ঞায়িত করবেন ।

আপনার ক্ষেত্রে "ডকরোপাইল" এর চেয়ে "ডকার কমপোজ" পছন্দ করা হয়। "অ্যাপ" চিন্তা করুন "রচনা" লিখুন।


0

ডকফেরফাইল এমন একটি ফাইল যা কোনও চিত্র একত্রিত করার জন্য পাঠ্য কমান্ড ধারণ করে।

একাধিক ধারক পরিবেশ চালাতে ডকার রচনাটি ব্যবহৃত হয়।

আপনার নির্দিষ্ট দৃশ্যে, আপনি উল্লিখিত প্রতিটি প্রযুক্তির জন্য যদি আপনার একাধিক পরিষেবা (রেডডিস ব্যবহার করে পরিষেবা 1, খরগোশ এমকিউ ব্যবহার করে পরিষেবা 2) থাকে তবে আপনার প্রতিটি পরিষেবার জন্য একটি ডকফেরাইল এবং চালানোর জন্য একটি সাধারণ ডকার-কম্পোজ.আইএমএল থাকতে পারে specific পাত্রে সমস্ত "ডকফেরফাইল"।

আপনি যদি সেগুলি সমস্ত একক পরিষেবায় চান তবে ডকার-রচনাটি একটি কার্যকর বিকল্প হবে।

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