هل من الممكن لتشغيل خادم أوبونتو على عامل الميناء?

وقد فريقي تطوير مشروعنا على أوبونتو 16.04 خادم يعمل على فيرتثلبوإكس. كما يأتي المطورين الجدد الانضمام مشروعنا ، بل هو متاعب كبيرة بالنسبة لنا مساعدتهم على إنشاء خادم أوبونتو جديد على فيرتثلبوإكس وتثبيت جميع التبعيات فقط لبدء المشروع في كل مرة.

قررنا حل المتاعب مع عامل الميناء. لذلك ، أحاول تشغيل مشروعنا على أوبونتو على عامل الميناء مع أدناه Dockerfile و docker-compose.yml، ولكن لا يمكنني العثور على العديد من الموارد مثل how to run Ubuntu on Docker. أنا ذاهب إلى الاتجاه الصحيح لتشغيل أوبونتو على عامل الميناء مع الطريقة أدناه?

شيء واحد أنا الخلط مع هو لماذا لا أستطيع الحصول على عنوان إب عندما أركض ifconfig على خادم أوبونتو الخاص بي يعمل على عامل الميناء?

دوكيرفيل

FROM ubuntu:16.04RUN sudo apt-get updateRUN sudo apt-get install -y build-essential autoconf libtool RUN sudo apt-get install -y python-setuptools python-dev python3-devRUN sudo apt-get install -y python-pip python3-pipRUN sudo apt-get install -y python-virtualenv unixodbc-dev libffi-dev git...

عامل الميناء-يؤلف.يمل

version: '3'services:  ubuntu:    build:      context: .      dockerfile: ./Dockerfile    ports:     - "8000:8000"    container_name: dev_ubuntu...

الخطأ الأول هو الاعتقاد بأن صورة/حاوية عامل الميناء تشبه الجهاز الظاهري. هناك أوجه تشابه لكنها ليست هي نفسها وبصراحة, ليست متشابهة حقا.

عامل الميناء ليس ، حقا ، لتشغيل نظام التشغيل. هو لتشغيل عملية واحدة في بيئة (معزولة) الواردة. تستخدم الحاوية نفس النواة مثل ما هو موجود على المضيف.

عند إنشاء صورة عامل ميناء مع 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 سيتم تعديل الدليل على القرص الصلب المحلي الخاص بك كما هي التي شنت هذا منه.

على لينكس ، لا تستخدم إفكونفيغ ' (صافي أدوات) ، استخدام إب` (إبروت 2) الذي لديه المزيد من الميزات. وقد وجدت إيبروت 2 لمدة 20 عاما ، و ‘صافي أدوات’ عفا عليها الزمن ، وقد تم الحفاظ بالكاد لمدة 15 عاما. linux - Should I quit using Ifconfig? - Server Fault