আমি যা বলতে পারি তা থেকে, ডকারের চিত্রগুলি /var/lib/dockerটানা যাওয়ার সাথে সাথে ইনস্টল করা হয়। মাউন্ট ভলিউমের মতো এই অবস্থান পরিবর্তন করার কোনও উপায় আছে কি /mnt?
আমি যা বলতে পারি তা থেকে, ডকারের চিত্রগুলি /var/lib/dockerটানা যাওয়ার সাথে সাথে ইনস্টল করা হয়। মাউন্ট ভলিউমের মতো এই অবস্থান পরিবর্তন করার কোনও উপায় আছে কি /mnt?
উত্তর:
ডকারের সাম্প্রতিক সংস্করণগুলির সাথে, আপনি data-rootপ্যারামিটারটির মানটি আপনার কাস্টম পাথটিতে সেট করবেন /etc/docker/daemon.json
( https://docs.docker.com/engine/references/commandline/dockerd/#daemon-configration-file অনুযায়ী )।
পুরানো সংস্করণগুলির সাহায্যে -gডকার ডিমন শুরু করার সময় আপনি বিকল্পটির সাহায্যে ডকারের স্টোরেজ বেস ডিরেক্টরি (যেখানে ধারক এবং চিত্রগুলি যান) পরিবর্তন করতে পারেন । (চেক docker --help) ডকার যখন / ইত্যাদি / ডিফল্ট / ডকারে যুক্ত করে শুরু করেন তখন আপনি এই সেটিংসটি স্বয়ংক্রিয়ভাবে প্রয়োগ করতে পারেন
-gবিকল্পটি / ইত্যাদি / ডিফল্ট / ডকারে আপস্টার্ট ফাইলটি পরিবর্তনের পরিবর্তে যুক্ত করা, আমার উত্তরটি দেখুন।
DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"
graphDaemon.json মধ্যে অ্যাট্রিবিউট v17.05.0 এ অনুমোদিত নয়, ব্যবহার data-rootপরিবর্তে, cf. stackoverflow.com/a/50217666/743507
মন্তব্যগুলির পরামর্শ অনুসরণ করে আমি এই উত্তরটি উন্নত করতে ডকার সিস্টেমড ডকুমেন্টেশন ব্যবহার করি । নীচে প্রক্রিয়া পুনরায় বুট করার প্রয়োজন হয় না এবং অনেক পরিষ্কার।
প্রথমে কাস্টম কনফিগারেশনের জন্য ডিরেক্টরি এবং ফাইল তৈরি করুন:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo $EDITOR /etc/systemd/system/docker.service.d/docker-storage.conf
17.06-ce পেস্টের আগে ডকার সংস্করণের জন্য :
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// --graph="/mnt"
17.06-ce পেস্টের পরে ডকারের জন্য :
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --data-root="/mnt"
daemon.jsonআমি সম্প্রতি ফেডোরা 25 - তে 17.09-ce দিয়ে উপরের পদ্ধতিটি চেষ্টা করেছি এবং দেখে মনে হচ্ছে এটি কার্যকর হয়নি। /etc/docker/daemon.jsonকৌতুকটি করতে সেই সাধারণ পরিবর্তনের পরিবর্তে :
{
"graph": "/mnt",
"storage-driver": "overlay"
}
পদ্ধতি থাকা সত্ত্বেও আপনাকে কনফিগারেশনটি পুনরায় লোড করতে হবে এবং ডকার পুনরায় চালু করতে হবে:
sudo systemctl daemon-reload
sudo systemctl restart docker
ডকার পুনরায় কনফিগার করা হয়েছে তা নিশ্চিত করতে:
docker info|grep "loop file"
সাম্প্রতিক সংস্করণে (17.03) বিভিন্ন কমান্ডের প্রয়োজন:
docker info|grep "Docker Root Dir"
আউটপুট এর মতো দেখতে হবে:
Data loop file: /mnt/devicemapper/devicemapper/data
Metadata loop file: /mnt/devicemapper/devicemapper/metadata
বা:
Docker Root Dir: /mnt
তারপরে আপনি পুরাতন ডকার স্টোরেজটি নিরাপদে মুছে ফেলতে পারেন:
rm -rf /var/lib/docker
docker infoবিবৃতি সম্ভবত পুরানো হয়েছে। উবুন্টু 16.04-এ, পুনরায় কনফিগার করা জন্য চেক sudo docker info | grep "Docker Root Dir"। অন্যথায়, ভাল উত্তর, স্বীকৃত এক হওয়া উচিত;)
Docker Root Dir: /"/mnt"যখন আপনি রান docker info|grep "Docker Root Dir", আপনি প্রতিস্থাপন আছে --data-root="/mnt"মধ্যে --data-root=/mntফাইল ভিতরেdocker-storage.conf
নতুন ডকার সংস্করণগুলির জন্য আমাদের v17.05.0 তে অবহিত data-rootহিসাবে ব্যবহার করা দরকার graph: অফিসিয়াল অবহেলিত ডকস
সম্পাদনা করুন /etc/docker/daemon.json(এটি বিদ্যমান না থাকলে এটি তৈরি করুন) এবং অন্তর্ভুক্ত করুন:
{
"data-root": "/new/path/to/docker-data"
}
তারপরে ডকার পুনরায় আরম্ভ করুন:
sudo systemctl daemon-reload
sudo systemctl restart docker
যেহেতু আমি ফেডোরায় এটি করার জন্য সঠিক নির্দেশাবলী খুঁজে পাইনি (EDIT: লোকেরা মন্তব্য করেছে যে এটি সেন্টোস এবং স্যুসেও কাজ করা উচিত) (/ ইত্যাদি / ডিফল্ট / ডকার সেখানে ব্যবহৃত হয় না), তাই আমি যুক্ত করছি আমার এখানে উত্তর:
আপনাকে / etc / sysconfig / ডকার সম্পাদনা করতে হবে এবং অপশন ভেরিয়েবলটিতে -g বিকল্পটি যুক্ত করতে হবে। যদি একাধিক বিকল্প থাকে তবে নিশ্চিত হয়ে নিন যে আপনি এগুলি "" এ সংযুক্ত করে রেখেছেন। আমার ক্ষেত্রে, এই ফাইলটি রয়েছে:
OPTIONS=--selinux-enabled
সুতরাং এটি হয়ে যাবে
OPTIONS="--selinux-enabled -g /mnt"
পুনরায় চালু করার পরে ( systemctl restart docker), ডকারের নতুন ডিরেক্টরিটি ব্যবহার করা উচিত
ডকার ফোল্ডারটিকে / mnt এ সরানোর জন্য একটি প্রতীকী লিঙ্ক ব্যবহার করবেন না (উদাহরণস্বরূপ)। এটি ডকার আরএম কমান্ডের সাথে সমস্যায় পড়তে পারে ।
ডকারের জন্য -g অপশনটি আরও ভাল ব্যবহার করুন। উবুন্টুতে আপনি এটিকে স্থায়ীভাবে /etc/default/docker.io এ সেট করতে পারেন। DOCKER_OPTS লাইনটি বাড়ান বা প্রতিস্থাপন করুন।
এখানে একটি উদাহরণ: OC DOCKER_OPTS = "- g / mnt / কোথাও / অন্য / ডকার /"
docker rmএকটি সিমলিংক ব্যবহার করার সময় আমার কী ধরণের সমস্যা আশা করতে হবে ?
Ubuntu 16.04 stackoverflow.com/a/30219552/977622 কাজ এটি পেতে
ডকার পরিষেবা বন্ধ করুন
sudo systemctl stop docker
বিদ্যমান ডকার ডিরেক্টরিটি নতুন স্থানে সরান
sudo mv /var/lib/docker/ /path/to/new/docker/
প্রতীকী লিঙ্ক তৈরি করুন
sudo ln -s /path/to/new/docker/ /var/lib/docker
ডকার পরিষেবা শুরু করুন
sudo systemctl start docker
sudo ln -s /path/to/new/docker/ /var/lib/docker
এই সমাধানটি রেড হ্যাট 7.2 এবং ডকার 1.12.0 এ কাজ করে
আপনার পাঠ্য সম্পাদকটিতে /lib/systemd/system/docker.service ফাইলটি সম্পাদনা করুন ।
যোগ -G / পথ / থেকে / Docker / শেষে ExecStart নির্দেশ। সম্পূর্ণ লাইনটি দেখতে এটির মতো হওয়া উচিত।
ExecStart=/usr/bin/dockerd -g /path/to/docker/
নীচের আদেশটি কার্যকর করুন
systemctl daemon-reload
systemctl restart docker
ডকার ডিরেক্টরি পরীক্ষা করার জন্য কমান্ডটি কার্যকর করুন
docker info | grep "loop file\|Dir"
আপনার যদি রেড হ্যাট বা ডকারে ১.7.১ এ / ইত্যাদি / সিসকনফিগ / ডকার ফাইল থাকে তবে এই উত্তরটি দেখুন।
বিজয়ীর উত্তরের কপি-পেস্ট সংস্করণ :)
কেবলমাত্র এই বিষয়বস্তু দিয়ে এই ফাইলটি তৈরি করুন:
$ sudo vi /etc/docker/daemon.json
{
"graph": "/my-docker-images"
}
Ubuntu 16.04.2 LTSডকারে পরীক্ষিত1.12.6
graphDaemon.json মধ্যে অ্যাট্রিবিউট v17.05.0 এ অনুমোদিত নয়, ব্যবহার data-rootপরিবর্তে, cf. stackoverflow.com/a/50217666/743507
CentOS 6.5 এ
service docker stop
mkdir /data/docker (new directory)
vi /etc/sysconfig/docker
নিম্নলিখিত লাইন যুক্ত করুন
other_args=" -g /data/docker -p /var/run/docker.pid"
তারপরে ফাইলটি সংরক্ষণ করুন এবং আবার ডকার শুরু করুন
service docker start
এবং মধ্যে সংগ্রহস্থল ফাইল তৈরি করবে /data/docker
ডেবিয়ান / উবুন্টু বা ফেডোরার জন্য, আপনি সম্ভবত অন্যান্য উত্তরগুলি ব্যবহার করতে পারেন। তবে আপনার কাছে /etc/default/dockerবা এর অধীনে ফাইলগুলি না থাকলে /etc/sysconfig/dockerএবং আপনার সিস্টেমটি সিস্টেমড চলছে, আপনি এই উত্তরটি h3nrik দ্বারা অনুসরণ করতে পারেন । আমি আর্চ ব্যবহার করছি এবং এটি আমার জন্য কাজ করে।
মূলত, আপনাকে নতুন ডকার চিত্রের অবস্থানটি পরিবেশের ভেরিয়েবল হিসাবে পড়তে কনফিগার করতে হবে এবং সেই পরিবেশের পরিবর্তনশীলটিকে ডকার ডেমন এক্সিকিউশন স্ক্রিপ্টে পাস করতে হবে।
সম্পূর্ণতার জন্য, এখানে h3nrick এর উত্তর:
আপনার কাছে কোন /lib/systemd/system/docker.serviceফাইল আছে?
যদি তাই হয়, সম্পাদনা এটা যাতে Docker সেবা চলিত ব্যবহার /etc/default/dockerএকটি পরিবেশ ফাইল হিসাবে: EnvironmentFile=-/etc/default/docker।
ইন /etc/default/dockerফাইল তারপর যোগ DOCKER_OPTS="-g /home/rseixas/Programs/Docker/images"।
শেষে শুধু একটি systemctl daemon-reload && systemctl restart docker।
আরও তথ্যের জন্য দয়া করে ডকুমেন্টেশনটি দেখুন ।
আরও সহজ সমাধান হ'ল আপনি যা চান তার নরম লিঙ্ক পয়েন্ট তৈরি করা, যেমন
link -s /var/lib/docker /mnt/whatever
এটি আমার সেন্টোস 6.5 সার্ভারে আমার জন্য কাজ করে।
@Mbarthelemy দ্বারা পুনর্বিবেচনা -gঅনুসারে ডকার ডেমন সরাসরি শুরু করার সাথে সাথে বিকল্পের মাধ্যমে এটি করা যেতে পারে ।
তবে, যদি ডকার একটি সিস্টেম পরিষেবা হিসাবে শুরু করা হচ্ছে, তবে /etc/default/dockerফাইলটি সংশোধন করার পরামর্শ দেওয়া হয় না । সেখানে অবস্থিত এই একটি গাইডলাইন হল এখানে ।
সঠিক পন্থাটি হ'ল /etc/docker/daemon.jsonলিনাক্স (বা ম্যাক) সিস্টেমে বা %programdata%\docker\config\daemon.jsonউইন্ডোজে কোনও ফাইল তৈরি করা । যদি এই ফাইলটি অন্য কোনও কিছুর জন্য ব্যবহার না করা হয় তবে নিম্নলিখিত ক্ষেত্রগুলি পর্যাপ্ত হওয়া উচিত:
{
"graph": "/docker/daemon_files"
}
এটি এমন নতুন অবস্থান ধরে নিচ্ছে যেখানে আপনি ডকারের ডেটাটি ধরে রাখতে চান /docker/daemon_files
ওপেনসুসে লিপ 42.1
$cat /etc/sysconfig/docker
## Path : System/Management
## Description : Extra cli switches for docker daemon
## Type : string
## Default : ""
## ServiceRestart : docker
#
DOCKER_OPTS="-g /media/data/installed/docker"
নোট করুন যে DOCKER_OPTS প্রাথমিকভাবে খালি ছিল এবং ডককে আমার নতুন ডিরেক্টরি ব্যবহার করার যুক্তিতে আমি সমস্ত কিছু যুক্ত করেছিলাম
ফেডোরা 26 এবং সম্ভবত আরও অনেক সংস্করণে, আপনার বেস ফোল্ডারের অবস্থান উপরে বর্ণিত হিসাবে স্থানান্তরিত করার পরে আপনি একটি ত্রুটির সম্মুখীন হতে পারেন। এটি বিশেষত সত্য যদি আপনি এটিকে / বাড়ির নীচে কোথাও নিয়ে যাচ্ছেন। কারণ সেলিনাক্স ডোকার ধারককে এই অবস্থানের নিচে থেকে তার প্রচুর প্রোগ্রাম চালানো থেকে বাধা দেয়।
সংক্ষিপ্ত সমাধানটি হ'ল - -able পরামিতি যুক্ত করার পরে - সক্ষম-সেলিনাক্স বিকল্পটি সরিয়ে ফেলা।
একটি এডাব্লুএস উবুন্টু 16.04 সার্ভারে আমি ডকার ইমেজগুলিকে একটি পৃথক ইবিএসে রেখেছিলাম, / হোম / উবুন্টু / কাগল / উপর লাগানো, ডকারের নীচে
আমার আরম্ভের স্ক্রিপ্টের এই স্নিপেটটি সঠিকভাবে কাজ করেছে
# where are the images initially stored?
sudo docker info | grep "Root Dir"
# ... not where I want them
# modify the configuration files to change to image location
# NOTE this generates an error
# WARNING: Usage of loopback devices is strongly discouraged for production use.
# Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
# see /programming/31620825/
# warning-of-usage-of-loopback-devices-is-strongly-discouraged-for-production-use
sudo sed -i ' s@#DOCKER_OPTS=.*@DOCKER_OPTS="-g /home/ubuntu/kaggle/docker"@ ' /etc/default/docker
sudo chmod -R ugo+rw /lib/systemd/system/docker.service
sudo cp /lib/systemd/system/docker.service /etc/systemd/system/
sudo chmod -R ugo+rw /etc/systemd/system/
sudo sed -i ' s@ExecStart.*@ExecStart=/usr/bin/dockerd $DOCKER_OPTS -H fd://@ ' /etc/systemd/system/docker.service
sudo sed -i '/ExecStart/a EnvironmentFile=-/etc/default/docker' /etc/systemd/system/docker.service
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo docker info | grep "Root Dir"
# now they're where I want them
১.0.০6.০-সি-ম্যাক ১৯ সংস্করণে ম্যাক ব্যবহারকারীদের জন্য আপনি পছন্দসমূহ বিকল্পে ইউজার ইন্টারফেস থেকে ডিস্ক চিত্রের অবস্থানটি সরাতে পারবেন কেবলমাত্র ডিস্ক চিত্রের অবস্থান পরিবর্তন করুন এবং এটি ( ডিস্কের চিত্রটি সরান ক্লিক করে ) এবং পুনরায় চালু করার কাজ করবে ডক এই পদ্ধতির সাহায্যে আমি ডকার ইমেজগুলি সংরক্ষণের জন্য আমার বাহ্যিক হার্ডডিস্কটি ব্যবহার করতে সক্ষম হয়েছি।
