الارتباك مع جنكينز عامل الميناء المساعد والعبيد جنكينز عامل الميناء

لذلك أنا مندهش سارة في بعض النواحي لرؤية جنكينز عامل الميناء المساعد" دفع " صور عامل الميناء لبلدي عامل الميناء المضيف المعادن لكنه مربك جدا لأن بلدي يبني تجري في حاويات الرقيق عامل الميناء التي تعمل على عامل الميناء المضيف المعادن. حتى سيد جنكينز يعمل في حاوية عامل ميناء ، وليس مباشرة على المعدن...

بعد هذا شعبية جنكينز سيد / دليل الرقيق وصلت إلى النقطة التي كان لي جنكينز يبني العمل في حاويات عامل الميناء سريعة الزوال.

وهذا يعني أنه عندما أفعل جنكينز بناء بعض مكونات البرمجيات شفرة المصدر / خدمة الألغام ، يتم إطلاق بناء قبالة في الرقيق جنكينز الذي يحدث أن تكون حاوية عامل الميناء نسج من قبل المساعد جنكينز عامل الميناء.

مساحة العمل جنكينز في هذه الحاوية الرقيق ، سيد جنكينز مع المساعد عامل الميناء تثبيت ، والتخلص من هذه الحاوية الرقيق مرة واحدة بناء كاملة. انظر الرسم البياني الذي أدليت به للمساعدة في شرح:

enter image description here

بعض نقاط المتابعة المهمة بعد هضم هذا الرسم البياني:

  • جينكينز ماستر و جينكينز الرقيق تعمل على نفس عامل الميناء المضيف المعادن في هذه المرحلة ، وأنا فقط في المراحل الأولى من الحصول على هذا النظام قيد التشغيل
  • أنا باستخدام المساعد عامل الميناء و سه العبيد المساعد لإنجاز هذا الإعداد

حتى ضمن هذا العبد عامل الميناء يتم إنشاء بلدي مكون البرمجيات/خدمة بناء قطعة أثرية ، يمكن أن يكون ، على سبيل المثال ، أ .دلل أو .الحرب. يحدث أن يكون الحال على الرغم من أن بلدي بناء قطعة أثرية ستكون صورة عامل الميناء. لكي أكون واضحا ، أقوم ببناء صورة عامل ميناء داخل حاوية عامل ميناء قيد التشغيل (عبد جنكينز).

يبدأ ارتباكي مع توقعي أنني يجب أن يكون لتشغيل صراحة سمد لدفع بلدي مكون البرمجيات عامل الميناء صورة بناء قطعة أثرية إلى سجل عامل الميناء. خلاف ذلك ، عندما جنكينز بناء وظيفة كاملة ، فإن المساعد عامل الميناء اغلاق الرقيق حاوية عامل الميناء ، والتخلص من (آرإم) حاوية الرقيق ومن سأفقد قطعة أثرية بناء داخل تلك الحاوية الرقيق.

ما يحدث في الواقع ، ولماذا أنا مفاجأة سارة ، على الأقل في المدى القصير بينما أنا الحصول على ديفوبس وتشغيلها ، هو أن بناء قطعة أثرية صورة عامل الميناء يظهر على عامل الميناء المضيف المعادن, docker image ls.

أنا مندهش من أن البرنامج المساعد عامل الميناء سيذهب إلى هذا المستوى من الافتراض / المساعدة... وأنا أعلم أن البرنامج المساعد عامل الميناء يسمح لك لتكوين سجل عامل الميناء وأنه يمكنك إضافة خطوة بناء لبناء / نشر إلى سحابة عامل الميناء الذي أفترض أن يتم التعامل مع سحابة كسجل للصور وربما مكان لتشغيل أيضا تلك الصور كذلك:

enter image description here

ما هو مثير للاهتمام بشكل خاص هو أنني لا تستخدم المساعد عامل الميناء لأي خطوات البناء ، وأنا مجرد استخدام المساعد عامل الميناء لتكوين حاوية الرقيق لبناء البند جنكينز:

enter image description here

الخطوة الوحيدة لبناء لدي هو أنني تنفيذ برنامج نصي قذيفة ، نعم هذا البرنامج النصي يحدث لبناء في نهاية المطاف صورة عامل الميناء ولكن المساعد عامل الميناء لن يعرف هذا:

enter image description here

يقوم المكون الإضافي لعامل الإرساء بتدوير حاويات الرقيق لعامل الإرساء ، أقوم بتكوين المكون الإضافي لعامل الإرساء وأخبره بمضيف عامل الإرساء (معدنيتي في وضعي) السحابة هي ما يسميه المكون الإضافي لعامل الإرساء مضيف عامل الإرساء وأيضا صور الرقيق لعامل الإرساء لاستخدامها على مضيف عامل الإرساء / السحابة:

enter image description hereهل لدي فقط سوء فهم حول كيفية عزل جينكينز بناء مساحة العمل يحدث عندما يكون داخل حاوية الرقيق عامل الميناء?

هو المساعد عامل الميناء مجرد التخلف عن استخدام واحد وفقط سحابة عامل الميناء (بلدي عامل الميناء المضيف المعادن) لدي الإعداد لجميع أي أوامر عامل الميناء يحدث لتشغيل داخل حاوية جينكينز عامل الميناء الرقيق? (حاوية الرقيق بالمناسبة التي لديها عامل الميناء-سي المثبتة على ذلك)

بلدي سيد جنكينز دوكيرفيل:

#reference#https://engineering.riotgames.com/news/putting-jenkins-docker-containerFROM jenkins:2.60.1MAINTAINER Brian OgdenUSER root#TimezoneENV TZ=America/Los_AngelesRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone# Prep Jenkins DirectoriesRUN mkdir /var/log/jenkinsRUN mkdir /var/cache/jenkinsRUN chown -R jenkins:jenkins /var/log/jenkinsRUN chown -R jenkins:jenkins /var/cache/jenkins# Copy in local config filesfilesCOPY plugins.sh /usr/local/bin/plugins.shRUN chmod +x /usr/local/bin/plugins.sh# Install default plugins# Set list of plugins to download / update in plugins.txt like this# pluginID:version# credentials:1.18# maven-plugin:2.7.1# ...# NOTE : Just set pluginID to download latest version of plugin.# NOTE : All plugins need to be listed as there is no transitive dependency resolution.COPY plugins.txt /tmp/plugins.txtRUN /usr/local/bin/plugins.sh /tmp/plugins.txtUSER jenkins#give Jenkins a nice 8 GB memory pool and room to handle garbage collection#ENV JAVA_OPTS="-Xmx8192m"#give Jenkins a nice base pool of handlers and a cap#ENV JENKINS_OPTS="--handlerCountStartup=100 --handlerCountMax=300"ENV JENKINS_OPTS="--logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war"

يمكنني استخدام عامل الميناء يؤلف وحجم عامل الميناء مع سيد جنكينز بلدي ، بلدي عامل الميناء يؤلف.يمل:

version: '2'services:  data:    build: data    image: tsl.devops.jenkins.data.image    container_name: tsl.devops.jenkins.data.container  master:    build: master    image: tsl.devops.jenkins.master.image    container_name: tsl.devops.jenkins.master.container    volumes_from:      - data    ports:      - "50000:50000"    #network_mode: "host"  nginx:    build: nginx    image: tsl.devops.jenkins.nginx.image    container_name: tsl.devops.jenkins.nginx.container    ports:      - "80:80"    links:      - master:jenkins-master  slavebasic:    build:      context: ./slaves      dockerfile: basic/Dockerfile    image: tsl.devops.jenkins.slave.basic.image    container_name: tsl.devops.jenkins.slave.basic.container  slavedotnetcore:    build:      context: ./slaves      dockerfile: dotnetcore/Dockerfile    image: tsl.devops.jenkins.slave.dotnetcore.image    container_name: tsl.devops.jenkins.slave.dotnetcore.container

بلدي حجم جينكينز الرئيسي/ محرك دوكيرفيل:

#reference#https://engineering.riotgames.com/news/docker-jenkins-data-persistsFROM centos:7MAINTAINER Brian Ogden#create the Jenkins user in this containerRUN useradd -d "/var/jenkins_home" -u 1000 -m -s /bin/bash jenkins#NOTE: we set the UID here to the same one the Cloudbees Jenkins image uses #so we can match UIDs across containers, which is essential if you want #to preserve file permissions between the containers. We also use the same home directory and bash settings.#Jenkins log directoryRUN mkdir -p /var/log/jenkinsRUN chown -R jenkins:jenkins /var/log/jenkins#Docker volume magicVOLUME ["/var/log/jenkins", "/var/jenkins_home"]USER jenkins#just a little output reminder of the container's purposeCMD ["echo", "Data container for Jenkins"]

بلدي عبد دوكيرفيل:

FROM centos:7MAINTAINER Brian Ogden#the USER will be root by default just explicitly #expressing it for better documentationUSER root# Install EssentialsRUN yum update -y && \         yum clean all############################################## Jenkins Slave setup#############################################RUN yum install -y \    git \    wget \    openssh-server \    java-1.8.0-openjdk \    sudo \    make && \    yum clean all# gen dummy keys, centos doesn't autogen them like ubuntu doesRUN /usr/bin/ssh-keygen -A# Set SSH Configuration to allow remote logins without /proc write accessRUN sed -ri 's/^session\s+required\s+pam_loginuid.so$/session optional pam_loginuid.so/' /etc/pam.d/sshd# Create Jenkins UserRUN useradd jenkins -m -s /bin/bash# Add public key for Jenkins loginRUN mkdir /home/jenkins/.sshCOPY /files/id_rsa.pub /home/jenkins/.ssh/authorized_keys#setup permissions for the new folders and filesRUN chown -R jenkins /home/jenkinsRUN chgrp -R jenkins /home/jenkinsRUN chmod 600 /home/jenkins/.ssh/authorized_keysRUN chmod 700 /home/jenkins/.ssh# Add the jenkins user to sudoersRUN echo "jenkins  ALL=(ALL)  ALL" >> etc/sudoers########################################################################################### Docker and Docker Compose Install##############################################install required packagesRUN yum install -y \    yum-utils \    device-mapper-persistent-data \    lvm2 \    curl && \    yum clean all#add Docker CE stable repositoryRUN yum-config-manager \    --add-repo \    https://download.docker.com/linux/centos/docker-ce.repo#Update the yum package index.RUN yum makecache fast#install Docker CERUN yum install -y docker-ce-17.06.0.ce-1.el7.centos#install Docker Compose 1.14.0#download Docker Compose binary from github repoRUN curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose#Apply executable permissions to the binaryRUN chmod +x /usr/local/bin/docker-compose########################################################################################### .NET Core SDK#############################################RUN yum install -y \    libunwind \    libicuRUN curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?linkid=848821RUN mkdir -p /opt/dotnet && tar zxf dotnet.tar.gz -C /opt/dotnetRUN ln -s /opt/dotnet/dotnet /usr/local/bin#add Trade Service Nuget ServerRUN mkdir -p /home/jenkins/.nuget/NuGetCOPY /files/NuGet.Config /home/jenkins/.nuget/NuGet/NuGet.ConfigRUN chown -R jenkins /home/jenkins/.nugetRUN chgrp -R jenkins /home/jenkins/.nugetRUN chmod 600 /home/jenkins/.nuget/NuGet/NuGet.ConfigRUN chmod 700 /home/jenkins/.nuget/NuGet#speed up dotnet core buildsENV NUGET_XMLDOC_MODE skipENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE true############################################## Expose SSH port and run SSHDEXPOSE 22#Technically, the Docker Plugin enforces this call when it starts containers by overriding the entry command. #I place this here because I want this build slave to run locally as it would if it was started in the build farm.CMD ["/usr/sbin/sshd","-D"]

مثال البرنامج / المكون دوكيرفيل التي من شأنها إنشاء صورة عامل الميناء بناء قطعة أثرية داخل حاوية جينكينز الرقيق عامل الميناء:

FROM centos:7MAINTAINER Brian Ogden#TimezoneENV TZ=America/Los_AngelesRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezoneRUN yum update -y && \         yum clean all############################################## .NET Core SDK#############################################RUN yum install -y \    libunwind \    libicuRUN curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?linkid=848821RUN mkdir -p /opt/dotnet && tar zxf dotnet.tar.gz -C /opt/dotnetRUN ln -s /opt/dotnet/dotnet /usr/local/bin#speed up dotnet core buildsENV NUGET_XMLDOC_MODE skipENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE true########################################################################################### .NET Sevrice setup#############################################ARG ASPNETCORE_ENVIRONMENT# Copy our code from the "/src/MyWebApi/bin/Debug/netcoreapp1.1/publish" folder to the "/app" folder in our containerWORKDIR /appCOPY ./src/TSL.Security.Service/bin/Debug/netcoreapp1.1/publish .# Expose port 5000 for the Web API trafficENV ASPNETCORE_URLS http://+:5000ENV ASPNETCORE_ENVIRONMENT $ASPNETCORE_ENVIRONMENT EXPOSE 5000# Run the dotnet application against a DLL from within the container# Don't forget to publish your application or this won't workENTRYPOINT ["dotnet", "TSL.Security.Service.dll"]#############################################

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

تجدر الإشارة إلى أن البيانات من المحتمل أن تذهب أولا إلى حجم عامل الإرساء الذي يستخدمه العبد (وفقا لجنكينز Dockefile في https://github.com/jenkinsci/docker/blob/9f29488b77c2005bbbc5c936d47e697689f8ef6e/Dockerfile الافتراضي هو /var/jenkins_home). في حالتك ، هذا مجرد مجلد من data الخدمة (على الرغم من ذلك ، بتنسيق تكوين الإصدار 2 ، يمكنك فقط تحديد وحدة تخزين مسماة ، ولا تحتاج إلى إنشاء حاوية بيانات). من هنا ، التعليمات البرمجية الخاصة بك و Dockerfile الحصول على إرسالها إلى سياق بناء عامل الميناء على المضيف من خلال أبي في tcp://172.17.0.1:4243.

يمكنك تأكيد تخطيط المضيف? هو سيد جنكينز والعبد على المضيفين المادية المختلفة? أيضا, الذي الإضافات عامل الميناء الذي تستخدمه? ألاحظ أن هناك اثنين على الأقل ل جنكينز (عامل الميناء المساعد وعامل الميناء العبيد المساعد ، وأنا لست متأكدا إذا كنت تستخدم واحد أو كليهما أو غيرها).

مرحبا @ أنديشين ، لقد قمت بتحديث سؤالي للإجابة على أسئلتك، " - جينكينز ماستر و جينكينز الرقيق تعمل على نفس عامل الميناء المضيف المعادن في هذه المرحلة ، وأنا فقط في المراحل الأولى من الحصول على هذا النظام قيد التشغيل

  • أنا باستخدام المساعد عامل الميناء و سه العبيد المساعد لإنجاز هذا الإعداد"

لدي تفسير يمكنني تقديمه. ولكن أنا في حيرة على بضعة أجزاء أنه ربما يمكنك توضيح. 1) كيف يعرف المساعد العبيد عامل الميناء لإطلاق جنكينز كصورة عامل الميناء الرقيق? ومن غير الواضح بالنسبة لي كيف الرقيق جنكينز تطلق فعلا الصورة مندوكيرفيل ' التي تقدمها. 2) يمكنك تأكيدعامل الميناء تشغيل` الأمر الذي استخدمته لبدء سيد? أنا أتساءل عما إذا كان يمر في مقبس التحكم عامل الميناء ، وفي هذه الحالة أي يبني في الحاوية سوف مجرد استخدام عامل الميناء المضيف (وبالتالي ، لماذا كنت ترى الصورة التي يجري بناؤها على المضيف). سوف أوجز هذا كإجابة.

@أنديشين حسنا ، لقد قمت بتحديث سؤالي بالمعلومات التي طلبتها. لقد أضفت دوكيرفيل لبلدي جنكينز ماستر ، الذي يحتوي على حجم دوكر لذلك أضفت دوكيرفيل لحجم البيانات الرئيسية جنكينز كذلك. شرحت أيضا ، بما في ذلك جينكينز التكوين قطة ، وكيفية تكوين “المساعد عامل الميناء” ، وليس عامل الميناء العبيد المساعد كما كنت يطلق عليه ، لاستخدام صورة عامل الميناء محددة كعبد، تم تضمين بلدي عامل الميناء لعبد بلدي في سؤالي الأصلي