لذلك أنا مندهش سارة في بعض النواحي لرؤية جنكينز عامل الميناء المساعد" دفع " صور عامل الميناء لبلدي عامل الميناء المضيف المعادن لكنه مربك جدا لأن بلدي يبني تجري في حاويات الرقيق عامل الميناء التي تعمل على عامل الميناء المضيف المعادن. حتى سيد جنكينز يعمل في حاوية عامل ميناء ، وليس مباشرة على المعدن...
بعد هذا شعبية جنكينز سيد / دليل الرقيق وصلت إلى النقطة التي كان لي جنكينز يبني العمل في حاويات عامل الميناء سريعة الزوال.
وهذا يعني أنه عندما أفعل جنكينز بناء بعض مكونات البرمجيات شفرة المصدر / خدمة الألغام ، يتم إطلاق بناء قبالة في الرقيق جنكينز الذي يحدث أن تكون حاوية عامل الميناء نسج من قبل المساعد جنكينز عامل الميناء.
مساحة العمل جنكينز في هذه الحاوية الرقيق ، سيد جنكينز مع المساعد عامل الميناء تثبيت ، والتخلص من هذه الحاوية الرقيق مرة واحدة بناء كاملة. انظر الرسم البياني الذي أدليت به للمساعدة في شرح:
بعض نقاط المتابعة المهمة بعد هضم هذا الرسم البياني:
- جينكينز ماستر و جينكينز الرقيق تعمل على نفس عامل الميناء المضيف المعادن في هذه المرحلة ، وأنا فقط في المراحل الأولى من الحصول على هذا النظام قيد التشغيل
- أنا باستخدام المساعد عامل الميناء و سه العبيد المساعد لإنجاز هذا الإعداد
حتى ضمن هذا العبد عامل الميناء يتم إنشاء بلدي مكون البرمجيات/خدمة بناء قطعة أثرية ، يمكن أن يكون ، على سبيل المثال ، أ .دلل أو .الحرب. يحدث أن يكون الحال على الرغم من أن بلدي بناء قطعة أثرية ستكون صورة عامل الميناء. لكي أكون واضحا ، أقوم ببناء صورة عامل ميناء داخل حاوية عامل ميناء قيد التشغيل (عبد جنكينز).
يبدأ ارتباكي مع توقعي أنني يجب أن يكون لتشغيل صراحة سمد لدفع بلدي مكون البرمجيات عامل الميناء صورة بناء قطعة أثرية إلى سجل عامل الميناء. خلاف ذلك ، عندما جنكينز بناء وظيفة كاملة ، فإن المساعد عامل الميناء اغلاق الرقيق حاوية عامل الميناء ، والتخلص من (آرإم) حاوية الرقيق ومن سأفقد قطعة أثرية بناء داخل تلك الحاوية الرقيق.
ما يحدث في الواقع ، ولماذا أنا مفاجأة سارة ، على الأقل في المدى القصير بينما أنا الحصول على ديفوبس وتشغيلها ، هو أن بناء قطعة أثرية صورة عامل الميناء يظهر على عامل الميناء المضيف المعادن, docker image ls
.
أنا مندهش من أن البرنامج المساعد عامل الميناء سيذهب إلى هذا المستوى من الافتراض / المساعدة... وأنا أعلم أن البرنامج المساعد عامل الميناء يسمح لك لتكوين سجل عامل الميناء وأنه يمكنك إضافة خطوة بناء لبناء / نشر إلى سحابة عامل الميناء الذي أفترض أن يتم التعامل مع سحابة كسجل للصور وربما مكان لتشغيل أيضا تلك الصور كذلك:
ما هو مثير للاهتمام بشكل خاص هو أنني لا تستخدم المساعد عامل الميناء لأي خطوات البناء ، وأنا مجرد استخدام المساعد عامل الميناء لتكوين حاوية الرقيق لبناء البند جنكينز:
الخطوة الوحيدة لبناء لدي هو أنني تنفيذ برنامج نصي قذيفة ، نعم هذا البرنامج النصي يحدث لبناء في نهاية المطاف صورة عامل الميناء ولكن المساعد عامل الميناء لن يعرف هذا:
يقوم المكون الإضافي لعامل الإرساء بتدوير حاويات الرقيق لعامل الإرساء ، أقوم بتكوين المكون الإضافي لعامل الإرساء وأخبره بمضيف عامل الإرساء (معدنيتي في وضعي) السحابة هي ما يسميه المكون الإضافي لعامل الإرساء مضيف عامل الإرساء وأيضا صور الرقيق لعامل الإرساء لاستخدامها على مضيف عامل الإرساء / السحابة:
هل لدي فقط سوء فهم حول كيفية عزل جينكينز بناء مساحة العمل يحدث عندما يكون داخل حاوية الرقيق عامل الميناء?
هو المساعد عامل الميناء مجرد التخلف عن استخدام واحد وفقط سحابة عامل الميناء (بلدي عامل الميناء المضيف المعادن) لدي الإعداد لجميع أي أوامر عامل الميناء يحدث لتشغيل داخل حاوية جينكينز عامل الميناء الرقيق? (حاوية الرقيق بالمناسبة التي لديها عامل الميناء-سي المثبتة على ذلك)
بلدي سيد جنكينز دوكيرفيل:
#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"]#############################################