我有一个docker-compose项目,我想通过systemd控制。 暴发户,我会用一个看起来像这样的脚本: description "Start/Stop server" author "Jim Cortez" start on filesystem and started docker stop on runlevel [!2345] respawn limit 3 240 pre-start script # wait (if necessary) for our docker context to be accessible while [ ! -f /projects/my_server/docker-compose.yml ] do sleep 1 done /usr/local/bin/docker-compose -f /projects/my_server/docker-compose.yml up -d end script script sleepWhileAppIsUp(){ while […]
我有一个docker容器中的php-fpm,在Dockerfile我编辑fpmconfiguration文件( /etc/php5/fpm/pool.d/www.conf )来设置访问日志到/var/log/fpm-access.log和错误日志去/var/log/fpm-php.www.log : # Do some php-fpm config # Redirect worker stdout and stderr into main error log # Activate the fpm access log # Enable display errors # Enable the error log RUN sed -i '/^;catch_workers_output/ccatch_workers_output = yes' /etc/php5/fpm/pool.d/www.conf && \ sed -i '/^;access.log/caccess.log = /var/log/fpm-access.log' /etc/php5/fpm/pool.d/www.conf && \ sed -i '/^;php_flag\[display_errors\]/cphp_flag[display_errors] = […]
我正在构build一个容器来调整负载平衡器的内核设置。 我更愿意使用单个特权容器将这些更改部署到映像中的主机上。 例如: docker run –rm –privileged ubuntu:latest sysctl -w net.core.somaxconn=65535 在testing中,更改只对那个容器起作用。 我的印象是,一个完全特权的容器改变/ proc实际上会改变底层操作系统。 $docker run –rm –privileged ubuntu:latest \ sysctl -w net.core.somaxconn=65535 net.core.somaxconn = 65535 $ docker run –rm –privileged ubuntu:latest \ /bin/bash -c "sysctl -a | grep somaxconn" net.core.somaxconn = 128 这是多么特权容器应该工作? 我只是在做一些愚蠢的事情? 什么是做出持久改变的最好方法? 版本信息: Client version: 1.4.1 Client API version: 1.16 Go […]
我有一个Dockerfile: ENTRYPOINT ["uwsgi", "–ini /home/docker/app/uwsgi_app.ini"] (没有CMD ) 当我运行uwsgi正确地抱怨: uWSGI running as root, you can use –uid/–gid/–chroot options *** WARNING: you are running uWSGI as root !!! (use the –uid flag) *** 现在,我认为我可以通过docker run将参数追加到入口点,如下所示: $ docker run -itP uwsgi_app:0.1 –uid=docker 然而uwsgi仍然抱怨有同样的错误,似乎arg没有被追加。 如果我重写入口点,然后arg被添加: $ docker run -itP –entrypoint bash uwsgi_app:0.1 –uid=docker bash: –uid=docker: invalid option …我想知道是否–ini的–ini选项忽略其他参数,但它不是: $ […]
我们正在遇到一个有趣的争论,正在陷入两个阵营。 我感兴趣的任何想法或陷阱我们可能会失踪的任何特定的问题。 真的,任何能够帮助我们做出决定的东西,或者指出我们没有考虑到的事情。 我知道这个裙带着“无意见”的规则,但我希望这仍然是一个可以接受的问题。 对不起,长度也有一些微妙的差别。 1)一方(我 – 我不是没有偏见)发现云系统非常有趣的不变的服务器模型。 为此,我们将基础架构的所有组件移植到Docker中。 我们的自定义应用程序通过Jenkins直接构build到部署到本地Docker Registry的Docker镜像中。 然后,我们创build了一大组Ansibleangular色和一个能够伸手去找空服务器的剧本,安装Docker,然后告诉Docker根据需要安装所有的容器。 几分钟后,整个应用程序及其所有的支持基础架构就被连接起来并工作 – logging,监视,数据库创build/填充等。完成的机器是一个独立的QA或开发环境,具有应用。 我们计划扩大规模的计划是制作新的手册,从基础可信AMI(可能是一张非常光滑的图像)构build新的AWS服务器,对生产应用程序进行滚动部署以处理configurationpipe理和发布,而且通常不会再次编辑服务器 – 只是让他们重新。 我并不担心在实践中得到我所描述的工作 – 只要这是一个合理的模型。 2)另一个阵营希望使用Puppet来处理configurationpipe理,Ansible部署我们的自定义应用程序,这些应用程序是我们构build过程中生成的压缩包,Foreman负责处理整个stream程的触发和pipe理,Katello做一些基础图像pipe理。 发布将涉及Puppet根据需要更改configuration和Ansible部署更新的组件与一定数量的工头协调。 如果我们需要新的服务器,那么服务器的build立就会相当快,但是不要把它们作为标准stream程的一部分来处理。 尽pipe使用寿命长,但它更接近凤凰服务器模式。 所以我的问题真的归结为这个:是不是一成不变的服务器模型,我已经用上面描述的这些工具实际上是现实的了? 我喜欢这样一个想法,即我们的暂存过程实际上可以在现场构build完整的应用程序副本,让QA锤击它,然后只是翻转数据库存储和一些DNS设置以使其生存。 还是不可变的服务器模型在实践中失败? 我们在AWS和云环境方面拥有丰富的经验,所以这不是关注的问题 – 更重要的是如何让一个相当复杂的应用程序可靠地部署到今后。 这是我们特别感兴趣的,因为我们经常发布。 我们有Ansible,除了为我们创buildEC2服务器之外,还需要做大部分工作,这并不困难。 我很难理解为什么你真的需要木偶/工头/ Katello在这个模型中。 Docker比任何自定义的部署脚本更加清洁和简单。 Ansible似乎比Puppet简单得多,当你不必担心必须现场configuration它们,而只需使用新configuration再次构build它们。 我是KISS校长的粉丝,尤其是在墨菲法则猖獗的自动化领域。 国际海事组织越好,机械越less。 任何想法/意见或build议的方法将不胜感激!
我正在创build一个dockerfile来运行一个绑定到特定版本的Java的自定义应用程序。 我正在使用一个centos7的基础图像,因为这是我所指的文章正在使用,因为我必须使用一些东西,所以这是一样好。 我真的不在乎我使用的用户区。 这个映像的意义在于所托pipe的软件,Linux发行版本身只是一个手段而已 – 重要的是,JDK不会被其他应用程序或用户使用。 如上所述,我的应用程序与我正在使用的特定版本的Java相关 – 任何对Java版本的更新都需要在特定版本发布之前对软件进行完整的回归testing。 我正在关注的文章是从相关dockerfile JDK安装部分开始的,如下所示: FROM centos:centos7 RUN yum makecache \ && yum update -y \ && yum install -y \ java-1.8.0-openjdk-devel \ && yum clean all 这不够具体,任何时候的图像构build将得到一个随机版本的Java,这是不是我想要的,我需要一个特定的Java版本。 我改变了docker文件看起来像这样: FROM centos:centos7 RUN yum makecache \ && yum update -y \ && yum install -y \ java-1.8.0-openjdk-devel-1.8.0.65-3.b17.el7 \ && yum […]
我们有一个稍微复杂的IDAM设置: 也就是说,最终用户的机器和浏览器与父AD位于同一个networking中,我们基于Jetty的应用程序和可以与之通话的AD(本地AD)位于另一个networking中。 两个AD之间有双向的信任。 父networking中的浏览器在受信任的站点中具有本地域。 Jetty服务器的设置如下: 它使用针对本地AD中的主体生成的密钥表文件 它在本地AD中定义的用户下作为Windows服务运行 域,领域映射和kdc是针对本地AD的域定义的 它使用spnego – isInitiator设置为false; doNotPrompt是真的; storeKey是真的 问题是: 作为testing,从本地networking内的浏览器访问服务器(即链接到本地AD)的工作原理 – Kerberosdebugging信息出现在日志中,我可以在HTTPstream量中看到正确的Kerberos协商,并且用户自动login。 辉煌。 然而 ,从父networking中的浏览器访问服务器(这是我们的用户将如何做)不起作用! 浏览器得到一个401非法的,但然后提示input凭据,当input一个空白的屏幕。 然后单击地址栏并按Enter键,执行以下两项操作之一,具体取决于凭据是用于远程还是本地AD: 本地AD证书然后login,在日志中从头开始使用Kerberos(GET请求,401非法响应,Kerberos头部请求等) 远程AD证书不login(GET请求,401非法响应,看起来像一个NTLM头: Authorization: Negotiate <60 or so random chars> ) 无论哪种方式,它的提示是错误的! 有这些症状的解释吗? 我们的设置能做我们想要的吗? 关于上述描述可能是错误的:关于Jetty服务器,我提到的任何configuration都应该是正确的,就像我做的那样。 我很高兴提供更多的细节。 任何有关AD或父networking浏览器的configuration都有可能被怀疑,因为它不在我的控制之下,而且我已经将configuration报告给我,而不是自己看到它。
我有一个设置,我在docker集装箱运行我的网站的所有部分。 监听端口80和443的我的nginx在一个容器中运行。 363292a98545 scivm/nginx-django-scivmcom:latest /usr/bin/supervisord 12 days ago Ghost 0.0.0.0:40001->22/tcp, 88.198.57.112:443->443/tcp, 88.198.57.112:80->80/tcp lonely_feynmann 我想在另一个容器中设置一个服务的代理。 此容器绑定到主机上的端口3000: b38c8ef72d0a mazzolino/strider-dind:latest wrapdocker /usr/bin/ 41 minutes ago Up 41 minutes 0.0.0.0:3000->3000/tcp, 22/tcp, 27017/tcp distracted_einstein 我的docker主机上的iptables如下所示: root@Ubuntu-1204-precise-64-minimal /var/run # iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all — anywhere anywhere ACCEPT all — anywhere anywhere ctstate […]
我有以下Kubernetes作业configuration: — apiVersion: batch/v1 kind: Job metadata: name: dbload creationTimestamp: spec: template: metadata: name: dbload spec: containers: – name: dbload image: sdvl3prox001:7001/pbench/tdload command: ["/opt/pbench/loadTpcdsData.sh", "qas0063", "dbc", "dbc", "1"] restartPolicy: Never imagePullSecrets: – name: pbenchregkey status: {} 当我做kubectl create -f dbload-deployment.yml –record作业和一个pod被创build,Docker容器运行完成,我得到这个状态: $ kubectl get job dbload NAME DESIRED SUCCESSFUL AGE dbload 1 1 1h $ […]
有没有办法在不影响主机的情况下dynamic地(在运行时)设置Docker容器系统时间? 运用 hwclock –set –date "Sat Aug 17 08:31:24 PDT 2016" 给出以下错误: hwclock: Cannot access the Hardware Clock via any known method. hwclock: Use the –debug option to see the details of our search for an access method. 运用 date -s "2 OCT 2006 18:00:00" 给出以下错误: date: cannot set date: Operation not permitted 用例: 我需要testing时间敏感的软件(行为取决于date)。 […]