ডকারে অবিচ্ছিন্ন স্টোরেজ (যেমন ডাটাবেসগুলি) কীভাবে মোকাবেলা করতে হয়


991

লোকেরা কীভাবে আপনার ডকারের ধারকগুলির জন্য অবিরাম সঞ্চয় করতে পারে?

আমি বর্তমানে এই পদ্ধতির ব্যবহার করছি: চিত্র তৈরি করুন, উদাহরণস্বরূপ PostgreSQL এর জন্য এবং তারপরে ধারকটি শুরু করুন

docker run --volumes-from c0dbc34fd631 -d app_name/postgres

আইএমএইচও, এর অপূর্ণতা আছে যে আমার কখনই (দুর্ঘটনাক্রমে) ধারক "c0dbc34fd631" মুছতে হবে না।

অন্য ধারণাটি হবে ধারকটিতে হোস্ট ভলিউম "-v" মাউন্ট করা, তবে, ধারকটির মধ্যে থাকা ইউজারিড প্রয়োজনীয়ভাবে হোস্টের ইউজারিডের সাথে মেলে না এবং তারপরে অনুমতিগুলি বিশৃঙ্খলাবদ্ধ হতে পারে।

দ্রষ্টব্য: আপনি পরিবর্তে এমন একটি নাম --volumes-from 'cryptic_id'ব্যবহার করতে পারেন --volumes-from my-data-containerযেখানে my-data-containerআপনাকে কেবলমাত্র ডেটা-পাত্রে ধার্য করা হয়েছে, যেমন docker run --name my-data-container ...(স্বীকৃত উত্তর দেখুন)


দুঃখিত, আমি ভুলটি বলেছিলাম, আমি বলতে চাইছি: সেই চিত্র থেকে আমার ভবিষ্যতের সমস্ত উদাহরণ সেই ধারকটির উপর নির্ভর করে। যদি আমি দুর্ঘটনাক্রমে সেই ধারকটি মুছে ফেলি তবে আমি সমস্যায় আছি।
জুয়াল্টার

@ অ্যান্টন স্ট্রোগনফ - হ্যাঁ, শব্দবন্ধ ত্রুটি - আমি বলতে চাইছিলাম: আমার নিশ্চিত হওয়া দরকার যে আমি কখনই (সম্ভবত) পুরানো পাত্রে মুছতে পারব না, কারণ "স্থায়ী"
স্টোরেজটিও

এটা হওয়া উচিত --name। আপনার আছে-name
শামেল লি

উত্তর:


985

উপরে ডকার 1.9.0 এবং উপরে

ভলিউম API ব্যবহার করুন

docker volume create --name hello
docker run -d -v hello:/container/path/for/volume container_image my_command

এর অর্থ হ'ল ডেটা-কেবল পাত্রে প্যাটার্নটি অবশ্যই নতুন ভলিউমের পক্ষে ছেড়ে দেওয়া উচিত।

প্রকৃতপক্ষে ডেটা-ধারক প্যাটার্নটি কী ছিল তা অর্জনের জন্য ভলিউম এপিআই হ'ল একটি ভাল উপায়।

আপনি যদি কোনও -v volume_name:/container/fs/pathডকার দিয়ে একটি ধারক তৈরি করেন তবে স্বয়ংক্রিয়ভাবে আপনার জন্য একটি নামযুক্ত ভলিউম তৈরি করবে যা এটি করতে পারে:

  1. মাধ্যমে তালিকাভুক্ত করা docker volume ls
  2. মাধ্যমে চিহ্নিত করা docker volume inspect volume_name
  3. একটি সাধারণ ডিরেক্টরি হিসাবে ব্যাক আপ
  4. কোনও --volumes-fromসংযোগের মাধ্যমে আগের মতো ব্যাক আপ করা হয়েছে

নতুন ভলিউম এপিআই একটি দরকারী কমান্ড যুক্ত করেছে যা আপনাকে ঝুঁকির পরিমাণগুলি সনাক্ত করতে দেয়:

docker volume ls -f dangling=true

এবং তারপরে এটি মুছে ফেলুন:

docker volume rm <volume name>

@ এমপুগাচ মন্তব্যে আন্ডারলাইন হিসাবে, আপনি একটি সুন্দর ওলাইনার দিয়ে সমস্ত ঝোলা খণ্ডগুলি থেকে মুক্তি পেতে পারেন:

docker volume rm $(docker volume ls -f dangling=true -q)
# Or using 1.13.x
docker volume prune

ডকার 1.8.x এবং নীচে

উত্পাদনের জন্য যে পদ্ধতিটি সবচেয়ে ভাল কাজ করে বলে মনে হয় তা হল কেবলমাত্র একটি ডেটা ধারক ব্যবহার করা ।

কেবলমাত্র ডেটা ধারকটি একটি খালি হাতির ছবিতে চালিত হয় এবং এটি কোনও ডেটা ভলিউম প্রকাশ করা ব্যতীত কিছুই করে না।

তারপরে আপনি ডেটা ধারক ভলিউম অ্যাক্সেস পেতে অন্য যে কোনও ধারক চালাতে পারেন:

docker run --volumes-from data-container some-other-container command-to-execute
  • এখানে আপনি বিভিন্ন পাত্রে কীভাবে ব্যবস্থা করবেন তার একটি ভাল চিত্র পেতে পারেন।
  • এখানে ভলিউমগুলি কীভাবে কাজ করে তা সম্পর্কে একটি ভাল অন্তর্দৃষ্টি রয়েছে।

ইন এই ব্লগ পোস্টের একটি ভাল তথাকথিত বর্ণনা আছে ভলিউম প্যাটার্ন হিসাবে ধারক যা থাকার মূল বিন্দু সুস্পষ্ট তথ্য শুধুমাত্র পাত্রে

ডকার ডকুমেন্টেশনের এখন ধারকটির ভলিউম / গুলি প্যাটার্ন হিসাবে সংজ্ঞায়িত বর্ণনা রয়েছে

নীচে ডকার 1.8.x এর ব্যাকআপ / পুনরুদ্ধার পদ্ধতি এবং নীচে রয়েছে।

ব্যাকআপ:

sudo docker run --rm --volumes-from DATA -v $(pwd):/backup busybox tar cvf /backup/backup.tar /data
  • --rm: কনটেইনারটি বের হয়ে গেলে সরিয়ে ফেলুন
  • --volume-from DATA: DATA ধারক দ্বারা ভাগ করা ভলিউমের সাথে সংযুক্ত করুন
  • -v $ (pwd): / ব্যাকআপ: বর্তমান ডিরেক্টরিটিকে পাত্রে আবদ্ধ করুন; ট্যারে ফাইল লিখতে
  • ব্যস্তবক্স: একটি ছোট সরল চিত্র - দ্রুত রক্ষণাবেক্ষণের জন্য ভাল
  • tar cvf /backup/backup.tar / data: / data ডিরেক্টরিতে সমস্ত ফাইলের একটি সঙ্কুচিত টার ফাইল তৈরি করে

পুনঃস্থাপিত করো:

# Create a new data container
$ sudo docker run -v /data -name DATA2 busybox true
# untar the backup files into the new container᾿s data volume
$ sudo docker run --rm --volumes-from DATA2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
data/
data/sven.txt
# Compare to the original container
$ sudo docker run --rm --volumes-from DATA -v `pwd`:/backup busybox ls /data
sven.txt

এখানে চমৎকার ব্রায়ান গফের একটি চমৎকার নিবন্ধটি ব্যাখ্যা করে যে কেন একই চিত্রটি কোনও ধারক এবং ডেটা ধারক হিসাবে ব্যবহার করা ভাল।


8
এটি একটি ভিন্ন প্রয়োজনের জন্য একটি ডিফারেন্স সরঞ্জাম। --volumes-fromআপনাকে ডিস্কের জায়গাগুলি --linkভাগ করে দেয় যাতে পরিষেবাগুলি ভাগ করা যায়।
টমমসপ

3
এই ধরণের জিনিসটির জন্য বিশেষভাবে রচনাগুলিতে আরও একটি প্রকল্প রয়েছে, এটি দেখার জন্য একটি রেফারেন্স হিসাবে এই উত্তরটিতে যুক্ত করতে পারেন? github.com/ClusterHQ/flocker
Andre

9
ডেটা পাত্রে কোনও অর্থ নেই এবং এটি সত্যই খারাপ ধারণা! কনটেইনারটির অর্থ কেবল তখনই কোনও প্রক্রিয়া চলমান থাকে, অন্যথায় এটি হোস্ট ফাইল সিস্টেমের কেবল একটি অংশ। আপনি কেবলমাত্র -v এর সাথে একটি ভলিউম মাউন্ট করতে পারেন এটিই একমাত্র এবং সর্বোত্তম বিকল্প। আপনার ব্যবহৃত ফাইল সিস্টেম এবং ফিজিকাল ডিস্কের উপর আপনার নিয়ন্ত্রণ রয়েছে।
বায়নাক্স

11
হ্যাঁ, ডকার ১.৯ হিসাবে, ভলিউম এপিআই ( docker volume create --name mydata) দিয়ে নামযুক্ত ভলিউম তৈরি করা ডেটা ভলিউম ধারকটির চেয়ে পছন্দসই। ডকারের লোকেরা নিজেরাই পরামর্শ দেয় যে ডেটা ভলিউম ধারকগুলি " আর প্রস্তাবিত প্যাটার্ন হিসাবে বিবেচনা করা হয় না ," " নামযুক্ত ভলিউমগুলি বেশিরভাগ (যদি না সমস্ত) ক্ষেত্রে ডেটা-কেবলমাত্র ভলিউমগুলি প্রতিস্থাপন করতে সক্ষম হয় ," এবং " কোনও কারণ আমি ব্যবহার করতে দেখতে পাচ্ছি না কেবলমাত্র ডেটা পাত্রে
কুইন কমেন্ডেন্ট

8
@ কোডিং, আমি দুঃখিত যে আপনি দু: খিত, আংশিক কারণ আপনি 3 বছরের বিলম্বের সাথে উত্তরগুলি বিচার করছেন এবং আংশিক কারণ উত্তরটি এর ইতিহাসের সমস্ত ক্ষেত্রে সঠিকভাবে সঠিক। আপনার যদি কোনও পরামর্শ থাকে তবে বিনা দ্বিধায় মন্তব্য করতে পারেন যাতে আমি উত্তরটি সংহত করতে এবং লোককে দুঃখ না করতে সহায়তা করতে পারি
টমমসপ

74

ইন Docker মুক্তি v1.0 হওয়া , বাঁধাই একটি ফাইল বা হোস্ট মেশিনের দেওয়া কমান্ড দ্বারা সম্পন্ন করা যেতে পারে ডিরেক্টরি মাউন্ট করুন:

$ docker run -v /host:/container ...

উপরের ভলিউমটি হোস্ট চলমান ডকারে অবিরাম সঞ্চয় হিসাবে ব্যবহৃত হতে পারে।


3
এই সুপারিশ করা উত্তর হওয়া উচিত যেমন ভলিউম-ধারক পদ্ধতির সেই মুহুর্তে আরো ভোট হয়েছে তুলনায় অনেক কম জটিল
insitusec

2
এই ভলিউম মাউন্ট কমান্ডটি ব্যবহার করার সময় হোস্ট-ইউআইডি: ধারক-ইউআইডি এবং হোস্ট-গিড: ধারক-গিড ম্যাপিং নির্দিষ্ট করার জন্য একটি পতাকা থাকতে চাই।
রায়পুন

34

ডকার কমপোজ 1.6 হিসাবে, এখন ডকার কমপোজিতে ডেটা ভলিউমের উন্নত সমর্থন রয়েছে। নিম্নলিখিত রচনা ফাইলটি এমন একটি ডেটা চিত্র তৈরি করবে যা পিতামাতার ধারকগুলির পুনঃসূচনা (বা এমনকি অপসারণ) এর মধ্যে অব্যাহত থাকবে:

ব্লগের ঘোষণাটি এখানে: রচনা 1.6: নেটওয়ার্ক এবং ভলিউম সংজ্ঞায়নের জন্য নতুন রচনা ফাইল

রচনা ফাইলের একটি উদাহরণ এখানে দেওয়া হয়েছে:

version: "2"

services:
  db:
    restart: on-failure:10
    image: postgres:9.4
    volumes:
      - "db-data:/var/lib/postgresql/data"
  web:
    restart: on-failure:10
    build: .
    command: gunicorn mypythonapp.wsgi:application -b :8000 --reload
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    links:
      - db

volumes:
  db-data:

যতদূর আমি বুঝতে পারি: এটি একটি ডেটা ভলিউম ধারক তৈরি করবে ( db_data) যা পুনরায় আর্টের মধ্যে থাকবে।

আপনি যদি চালান: docker volume lsআপনার তালিকাভুক্ত ভলিউমটি দেখতে হবে:

local               mypthonapp_db-data
...

আপনি ডেটা ভলিউম সম্পর্কে আরও কিছু বিশদ পেতে পারেন:

docker volume inspect mypthonapp_db-data
[
  {
    "Name": "mypthonapp_db-data",
    "Driver": "local",
    "Mountpoint": "/mnt/sda1/var/lib/docker/volumes/mypthonapp_db-data/_data"
  }
]

কিছু পরীক্ষা:

# Start the containers
docker-compose up -d

# .. input some data into the database
docker-compose run --rm web python manage.py migrate
docker-compose run --rm web python manage.py createsuperuser
...

# Stop and remove the containers:
docker-compose stop
docker-compose rm -f

# Start it back up again
docker-compose up -d

# Verify the data is still there
...
(it is)

# Stop and remove with the -v (volumes) tag:

docker-compose stop
docker=compose rm -f -v

# Up again ..
docker-compose up -d

# Check the data is still there:
...
(it is).

মন্তব্য:

  • আপনি volumesব্লকের বিভিন্ন ড্রাইভার নির্দিষ্ট করতে পারেন । উদাহরণস্বরূপ, আপনি db_data এর জন্য ফ্লকার ড্রাইভার নির্দিষ্ট করতে পারেন:

    volumes:
      db-data:
        driver: flocker
    
  • যখন তারা ডকার সোর্ম এবং ডকার কমপোজ (এবং সম্ভবত ফ্লকারকে ডকার ইকো-সিস্টেমে সংহত করতে শুরু করেছে (আমি একটি গুজব শুনেছি যে ডকার ফ্লকারকে কিনে ফেলেছে) এর মধ্যে সংহতকরণ উন্নতি করেছে, তাই আমি মনে করি এই পদ্ধতির ক্রমবর্ধমান শক্তিশালী হওয়া উচিত।

দাবি অস্বীকার: এই পদ্ধতির প্রতিশ্রুতিবদ্ধ, এবং আমি এটি একটি সফল পরিবেশে সফলভাবে ব্যবহার করছি। আমি এখনও এটি উত্পাদন ব্যবহার করতে ভীত হই!


Flocker হয়েছে শাট ডাউন এবং সেখানে কার্যকলাপ অনেকটা নয় GitHub রেপো
কৃষ্ণ

17

যদি ডকার 1.9 হিসাবে নির্বাচিত উত্তরের 5 আপডেট থেকে পরিষ্কার না হয় তবে আপনি নির্দিষ্ট কন্টেইনারটির সাথে সম্পর্কিত না হয়ে অস্তিত্ব রাখতে পারে এমন ভলিউম তৈরি করতে পারেন, এইভাবে "কেবলমাত্র ডেটা পাত্রে" প্যাটার্নটি অপ্রচলিত করে তোলে।

শুধুমাত্র ডকার 1.9.0 দিয়ে অচলিত ডেটা-পাত্রে দেখুন ? # 17798

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


13

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

এটি আপনার ধারকগুলি কম আন্তঃনির্ভরশীল করে তুলবে এবং একটি পাত্রে অপরটিকে প্রভাবিত করে এমনটি মুছে ফেলার বিষয়ে আপনাকে চিন্তা করতে হবে না।


ফ্লিপ-সাইড আর্গুমেন্টটি হ'ল "কেবলমাত্র ডেটা" কনটেইনারগুলি ডেটা ভলিউমের সর্বশেষ-অবলম্বন রেফারেন্স হিসাবে শেষ হয় (ডকার সেই ভলিউমের সাহায্যে সর্বশেষ docker rm
ধারকটি

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

12

ডকার রচনাটি ব্যবহার করার সময় , কেবল একটি নামযুক্ত ভলিউম সংযুক্ত করুন, উদাহরণস্বরূপ:

version: '2'
services:
  db:
    image: mysql:5.6
    volumes:
      - db_data:/var/lib/mysql:rw
    environment:
      MYSQL_ROOT_PASSWORD: root
volumes:
  db_data:

9

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

আরও দেখুন: হোস্টের সাথে অনুমতি এবং ইউআইডি / গিড ম্যাপিংয়ের মতো সমস্যাগুলি এড়াতে কীভাবে ডেটা পাত্রে ব্যবহার করা যায় তার উদাহরণের জন্য " ডকারের ভাগ করা খণ্ডগুলির জন্য অনুমতিগুলি পরিচালনা করার (সেরা) উপায় কী? " এই প্রশ্নের আমার উত্তর

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

সর্বদা হিসাবে, যদিও ব্যাকআপ করুন!

আপডেট: ডকারের এখন খণ্ডগুলি রয়েছে যা ধারকগুলি থেকে স্বাধীনভাবে পরিচালনা করা যায়, যা এটি পরিচালনা করা আরও সহজ করে তোলে।


9

আপনার প্রয়োজনের উপর নির্ভর করে অবিচ্ছিন্নভাবে ডেটা পরিচালনা করার বিভিন্ন স্তর রয়েছে:

  • এটি আপনার হোস্টে রাখুন
    • -v host-path:container-pathহোস্ট ডিরেক্টরিতে ধারক ডিরেক্টরি ডেটা অবিরত রাখতে পতাকা ব্যবহার করুন ।
    • ব্যাকআপগুলি / পুনরুদ্ধারগুলি একই ডিরেক্টরিতে মাউন্ট করা ব্যাকআপ / পুনরুদ্ধার ধারক (যেমন টুটমক্লাউড / ডকআপ) চালিয়ে ঘটে।
  • ডেটা ধারক তৈরি করুন এবং এর অ্যাপ্লিকেশন ধারকটিতে এর ভলিউমগুলি মাউন্ট করুন
    • এমন একটি ধারক তৈরি করুন যা কোনও ডেটা ভলিউম রফতানি করে, --volumes-fromআপনার অ্যাপ্লিকেশন ধারকটিতে সেই ডেটাটি মাউন্ট করতে ব্যবহার করুন ।
    • ব্যাকআপ / পুনরুদ্ধার উপরের সমাধান হিসাবে একই।
  • একটি ডকার ভলিউম প্লাগইন ব্যবহার করুন যা বাহ্যিক / তৃতীয় পক্ষের পরিষেবার ব্যাক করে
    • ডকার ভলিউম প্লাগইনগুলি আপনার ডেটাসোর্সটি যে কোনও জায়গা থেকে আসতে দেয় - এনএফএস, এডাব্লুএস (এস 3, ইএফএস, এবং ইবিএস)
    • প্লাগইন / পরিষেবাটির উপর নির্ভর করে আপনি একক বা একাধিক পাত্রে একক ভলিউমে সংযুক্ত করতে পারেন।
    • পরিষেবাটির উপর নির্ভর করে আপনার জন্য ব্যাকআপ / পুনরুদ্ধারগুলি স্বয়ংক্রিয়ভাবে চালিত হতে পারে।
    • যদিও এটি ম্যানুয়ালি করা জটিল হয়ে উঠতে পারে, কিছু অর্কেস্টেশন সলিউশন - যেমন র্যাঞ্চার - এটি বেকড এবং সহজেই ব্যবহার করতে পারে।
    • কনভয় হ'ল ম্যানুয়ালি এটি করার সহজ সমাধান।

8

আপনি যদি আপনার ভলিউমগুলি চারপাশে সরাতে চান তবে আপনার ফ্লোকারের দিকেও নজর দেওয়া উচিত ।

পুনরায় পড়া থেকে:

ফ্লকার হ'ল ডেটা ভলিউম ম্যানেজার এবং মাল্টি-হোস্ট ডকার ক্লাস্টার ম্যানেজমেন্ট সরঞ্জাম। এটির সাহায্যে আপনি লিনাক্সে জেডএফএসের শক্তি ব্যবহার করে আপনার স্টেটলেস অ্যাপ্লিকেশনগুলির জন্য ব্যবহার করেন একই সরঞ্জামগুলি ব্যবহার করে আপনার ডেটা নিয়ন্ত্রণ করতে পারেন।

এর অর্থ হ'ল আপনি ডকারে আপনার ডাটাবেস, সারি এবং কী-মান স্টোর পরিচালনা করতে পারেন এবং আপনার অন্যান্য অ্যাপ্লিকেশনের মতো সহজেই এগুলিকে সরিয়ে নিতে পারেন।


1
ধন্যবাদ জোহান আমি ক্লাস্টারএইচকিউতে কাজ করি এবং আমি কেবল উল্লেখ করতে চেয়েছিলাম যে আমরা কেবল জেডএফএস-ভিত্তিক স্টোরেজ ছাড়িয়ে গিয়েছি। আপনি এখন অ্যামাজন ইবিএস বা গুগল পার্সিনিস্ট ডিস্কের মতো স্টোরেজ সহ ফ্লকার ব্যবহার করতে পারেন। এখানে স্টোরেজ বিকল্পগুলির একটি সম্পূর্ণ তালিকা রয়েছে: docs.clusterhq.com/en/latest/supported/…
ফেরানটিম

1
ফ্লকার বন্ধ হয়ে গেছে এবং পোর্টওয়ারক্স.com
jesugmz

5

এটি আপনার দৃশ্যের উপর নির্ভর করে (এটি উত্পাদনের পরিবেশের জন্য সত্যই উপযুক্ত নয়) তবে এখানে একটি উপায় রয়েছে:

একটি মাইএসকিউএল ডকার কনটেইনার তৈরি করা হচ্ছে

এর সংক্ষিপ্ত বিবরণটি ডেটা অধ্যবসায়ের জন্য আপনার হোস্টের একটি ডিরেক্টরি ব্যবহার করা।


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

1
আমি মনে করি এটি মূল দ্বারা চালিত হওয়ায় আপনি বেশ সুরক্ষিত, তবে আমি সম্মত হই যে এটি হ্যাক hack স্থানীয় দেব / সাময়িক ইন্টিগ্রেশন পরীক্ষার জন্য সবচেয়ে উপযুক্ত। এটি অবশ্যই এমন একটি অঞ্চল যা আমি আরও নিদর্শন / চিন্তার উত্থান দেখতে চাই। আপনার এই প্রশ্নটি ডকার-ডেভেল গুগল গ্রুপে চেক আউট / পোস্ট করা উচিত
ben schwartz

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

3

আমি সম্প্রতি একটি সম্ভাব্য সমাধান এবং কৌশলটি প্রদর্শিত একটি অ্যাপ্লিকেশন সম্পর্কে লিখেছি। আমি এটি বিকাশের সময় এবং উত্পাদনের সময় বেশ দক্ষ বলে মনে করি। আশা করি এটি কিছু ধারণাকে সহায়তা করে বা স্পার্ক করবে।

রেপো: https://github.com/LevInteractive/docker-nodejs- উদাহরণ
নিবন্ধ: http://lev-interactive.com/2015/03/30/docker-load-balanced-mongodb-persistance/


1

পোস্টগ্র্রেএসকিউএল-এর ডেটা বজায় রাখতে আমি কেবল হোস্টের একটি পূর্বনির্ধারিত ডিরেক্টরি ব্যবহার করছি। এছাড়াও, এইভাবে সহজেই বিদ্যমান পোস্টগ্রেএসকিউএল ইনস্টলেশন সহজেই ডকারের ধারকগুলিতে স্থানান্তরিত করা সম্ভব: https://crondev.com/persistent-postgresql-inside-docker/


0

আমার সমাধানটি হ'ল নতুনটি ব্যবহার করা docker cp, যা এখন পাত্রে থেকে ডেটা অনুলিপি করতে সক্ষম, এটি চালাচ্ছে কি না তা বিচার্য নয় এবং হোস্টের ভলিউমটি ঠিক একই জায়গায় ভাগ করা যায় যেখানে ডাটাবেস অ্যাপ্লিকেশনটি ধারকটির ভিতরে এটির ডাটাবেস ফাইল তৈরি করছে । এই ডাবল সলিউশনটি কেবলমাত্র ডাটাবেস ধারক থেকে সরাসরি কোনও ডেটা-পাত্র ছাড়া কাজ করে।

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

এটি এক্সিকিস্টার্টপ্রেতে এটি করছে:

ExecStartPre=-/usr/bin/docker cp lanti-debian-mariadb:/var/lib/mysql /home/core/sql
ExecStartPre=-/bin/bash -c '/usr/bin/tar -zcvf /home/core/sql/sqlbackup_$$(date +%%Y-%%m-%%d_%%H-%%M-%%S)_ExecStartPre.tar.gz /home/core/sql/mysql --remove-files'

এবং এটি এক্সিকিস্টপপোস্টেও একই জিনিস করছে:

ExecStopPost=-/usr/bin/docker cp lanti-debian-mariadb:/var/lib/mysql /home/core/sql
ExecStopPost=-/bin/bash -c 'tar -zcvf /home/core/sql/sqlbackup_$$(date +%%Y-%%m-%%d_%%H-%%M-%%S)_ExecStopPost.tar.gz /home/core/sql/mysql --remove-files'

প্লাস আমি হোস্টের ভলিউম হিসাবে একটি ফোল্ডারটি ঠিক একই জায়গায় যেখানে ডাটাবেস সংরক্ষণ করা হয়েছে তা উন্মুক্ত করেছিলাম:

mariadb:
  build: ./mariadb
  volumes:
    - $HOME/server/mysql/:/var/lib/mysql/:rw

এটি আমার ভিএম-তে দুর্দান্ত কাজ করে (আমি নিজের জন্য একটি এলইএমপি স্ট্যাক নির্মাণ করছি): https://github.com/DJviolin/LEMP

তবে আমি কেবল জানি না যে এটি আসলে "বুলেটপ্রুফ" সমাধান যখন আপনার জীবন আসলে নির্ভর করে (উদাহরণস্বরূপ, কোনও সম্ভাব্য মিলিসেকেন্ডে লেনদেনের সাথে ওয়েবশপ)?

এই অফিসিয়াল ডকার মূল ভিডিওটি থেকে 20 মিনিট 20 সেকেন্ডে উপস্থাপক ডাটাবেসটির মাধ্যমে একই কাজটি করেন:

ডকারের সাথে শুরু করা

"ডাটাবেসটির জন্য আমাদের একটি ভলিউম রয়েছে, তাই আমরা নিশ্চিত করতে পারি যে ডাটাবেস যখন উপরে উঠে যায় তখন ডাটাবেস ধারক বন্ধ হয়ে গেলে আমরা ডেটা আলগা করি না।"


"... এর ব্যবহার পান ..." এর অর্থ কী ? এবং "... কোনও সম্ভাব্য মিলিসেকেন্ডে লেনদেন" ?
পিটার মর্টেনসেন

0

কুবেরনেটস থেকে ক্রমাগত ভলিউম দাবি (পিভিসি) ব্যবহার করুন যা একটি ডকার ধারক পরিচালনা এবং সময়সূচী সরঞ্জাম:

ক্রমাগত খণ্ড

এই উদ্দেশ্যে কুবারনেটস ব্যবহারের সুবিধাগুলি হ'ল:

  • আপনি কোনও স্টোরেজ যেমন এনএফএস বা অন্যান্য স্টোরেজ ব্যবহার করতে পারেন এবং নোড ডাউন থাকলেও স্টোরেজটি থাকা দরকার না।
  • তবুও এই জাতীয় খণ্ডের ডেটা কনটেইনার করা যায় কনটেইনারটি নিজেই নষ্ট হয়ে যাওয়ার পরেও - যাতে প্রয়োজন হলে এটি অন্য ধারক দ্বারা পুনরুদ্ধার করা যায়।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.