الخطأ الأول هو الاعتقاد بأن صورة/حاوية عامل الميناء تشبه الجهاز الظاهري. هناك أوجه تشابه لكنها ليست هي نفسها وبصراحة, ليست متشابهة حقا.
عامل الميناء ليس ، حقا ، لتشغيل نظام التشغيل. هو لتشغيل عملية واحدة في بيئة (معزولة) الواردة. تستخدم الحاوية نفس النواة مثل ما هو موجود على المضيف.
عند إنشاء صورة عامل ميناء مع FROM ubuntu
كنت بدأت صورتك مع بعض الطبقات التي تم إنشاؤها مسبقا أن يجلب في بعض أجزاء من نظام الملفات القياسية وحزم سوف تجد على خادم أوبونتو.
ثم تقوم بإضافة طبقات إضافية خاصة بك ، وإضافة الثنائيات والملفات الضرورية لتشغيل البرنامج / العملية.
الصورة (عادة ولكن ليس إلزاميا) لديها CMD
القيادة أو ENTRYPOINT
الأمر لتشغيل شيء ما.
كل سطر في Dockerfile
هو أمر تعليمات عامل الميناء على كيفية إنشاء الصورة. ينتج عن كل سطر/أمر طبقة أخرى. لتثبيت الحزم ، ربما تريد القيام بشيء من هذا القبيل:
FROM ubuntu:16.04RUN apt-get -qq update && \ apt-get -y install build-essential autoconf libtool && \ apt-get install -y python-setuptools python-dev python3-dev && \ apt-get install -y python-pip python3-pip && \ apt-get install -y python-virtualenv unixodbc-dev libffi-dev git && \ apt-get clean && \ rm -rf /var/lib/apt/lists/*
من شأنها أن تبقي صورتك أصغر.
ثم سوف تحتاج إلى تشغيل شيء ما بالفعل...
CMD python
ثم يمكنك بناء صورتك:
docker build -t myimage .
واستخدامها...
docker run --rm -it myimage
ifconfig
لا يعمل لأن الثنائي ليس في الصورة. ليس من الضروري حقا لأنك لا تدير الشبكة من داخل الحاوية.
لذلك يبدو أنك تصنع حاوية لبناء بعض التعليمات البرمجية. كنت ترغب في تحميل الدليل الخاص بك مع رمز داخل الحاوية عند تشغيله. لا أعرف نظام التشغيل الذي تقوم بتشغيله على محطة العمل أو الخادم الخاص بك ، لذا سأشير إلى هذا المنشور لمزيد من المعلومات: https://stackoverflow.com/questions/41485217/mount-current-directory-as-a-volume-in-docker-on-windows-10/41489151#41489151
لنفترض أنك تبني مع الأمر make
، يمكنك القيام بذلك:
docker run --rm -it -v $(pwd):/usr/src/project myimage make
وهذا يتطلب خط في الخاص بك Dockerfile
لجعل دير العمل /usr/src/project
:
WORKDIR /usr/src/project
ماذا سيحدث إذا قمت بتشغيل docker
سطر الأوامر أعلاه هو أنه سيتم إنشاء حاوية من الصورة المسماة myimage
(بناء الأمر هو مبين في وقت سابق) ، جبل الدليل الحالي كنت في كما /usr/src/project
داخل الحاوية الجديدة. تشغيل make
الأمر داخل الحاوية ثم الخروج. ال --rm
تخبر المعلمة عامل الميناء بعدم الاحتفاظ بالحاوية بمجرد الانتهاء من تشغيلها. ال -it
المعلمات يعني interactive
و tty
.
إذا كنت تريد أن يكون مجرد الوصول إلى بعض قذيفة حتى تتمكن من تشغيل يدويا make
أو أوامر أخرى بطريقة مخصصة ، يمكنك أيضا القيام بذلك:
docker run --rm -it -v $(pwd):/usr/src/project myimage /bin/bash
هذا من شأنه أن يخلق الحاوية من myimage
الصورة ، وتشغيل bash
. لأن bash
لا خروج وكان لديك -it
المعلمة ، سوف تكون في موجه الحاوية حيث يمكنك أن تفعل ما تريد.
فقط تذكر أن أي ملف تقوم بتعديله من داخل الحاوية لن يتم الحفاظ عليه وفي المرة القادمة التي تبدأ فيها العودة إلى الحالة الافتراضية. بالطبع أي ملفات من /usr/src/project
سيتم تعديل الدليل على القرص الصلب المحلي الخاص بك كما هي التي شنت هذا منه.