我需要针对多个正在运行的容器运行一个命令。 例如,假设我的应用程序需要在收到代码更新后针对数据库运行数据结构更新。 为此,我们要运行docker build <project_dir> -t latest ,然后docker stop; docker rm; docker run docker stop; docker rm; docker run docker stop; docker rm; docker run 。 在这个阶段,我们可以假定我们已经更新了容器的核心代码,但是我们仍然需要使用应用程序自己的工具来运行数据库更新。 从本质上讲,我需要一些方法来获取正在运行的容器列表,按照某些条件进行过滤,并将这些容器ID注册到Ansible。 然后为每个容器运行命令。 喜欢这个: – name: Get list of running containers docker: image: my-image:latest state: running register: container_ids 此任务将使用my-image:latest的运行容器的列表存储到container_ids 。 然后我们执行命令: – name: Exec the database update cmd: "docker […]
我试图通过docker安装php-fpm和nginx,我有一个nginx的问题,它返回了502错误的网关错误,但是当我尝试去任何HTML文件只显示正确。 我必须做什么,以一个PHP文件正常工作与这个系统? Nginxconfiguration网站: server { listen 80; server_name api.local.dev; access_log /var/log/nginx/api.access.log; error_log /var/log/nginx/api.error.log; root /www; charset utf-8; index index.php index.html index.htm; location / { index index.php index.html index.htm; } location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } Dockerfile FROM ubuntu:13.10 # Keep upstart from complaining RUN dpkg-divert –local […]
我正在运行一个主机目录的docker: $ docker run -v /usr/groups/thing -ti imagename /bin/bash /usr/groups/thing/foo是可访问的: # ls /usr/groups/thing/foo abc 但是/usr/groups/thing/bar中的文件不是: # ls /usr/groups/thing/bar ls: cannot open directory /usr/groups/thing/bar: Too many levels of symbolic links 这在Debian上,而/usr/groups/thing是一个自动安装的NFS卷。
更新:这个问题可以通过在docker容器中安装Postfix来重现。 我试图从源2.x和3.x最新的后缀版本重新编译,但它没有解决问题。 我已经configuration了Postfix发送和接收电子邮件,但是HARD反弹的电子邮件存在问题 – 它们不被拒绝,Postfix重复发送它们每隔x分钟,并且用户多次收到“Undelivered Mail Returned to Sender”。 在mail.log中我看到: [..] delay=5.2, delays=0.11/0.01/0.07/5, dsn=4.3.0, status=deferred (bounce or trace service failure) 我添加了-v来反弹,master.cf中的qmgr守护进程,但我仍然无法弄清楚什么是错的。 这是我的configuration: # postconf -nf: alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases append_dot_mydomain = no biff = no config_directory = /etc/postfix content_filter = smtp-amavis:[127.0.0.1]:10024 inet_interfaces = all inet_protocols = all local_recipient_maps = $virtual_mailbox_maps mailbox_size_limit = 0 […]
我正在尝试使用官方网站( Docker Docs )上的说明将Docker安装在带有Ubuntu 14.04的Vagrantbox上。 安装似乎工作,但事后我不能启动docker服务使用sudo service docker start它给了我以下错误信息: start: Job failed to start 如果我尝试docker ps -a然后我得到以下错误信息: Cannot connect to the Docker daemon. Is the docker daemon running on this host? 内核:Linux vagrant-ubuntu-trusty-64 3.13.0-85-generic#129-Ubuntu SMP Thu Mar 17 20:50:15 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux 来自/var/log/upstart/docker.log的相关行 Waiting for /var/run/docker.sock Invalid value "" for […]
背景 我目前正在构build一个我想要部署到Docker容器的应用程序。 容器将运行在我的服务器上。 我希望能够在同一台服务器上运行其他应用程序,而不会增加运行的Docker映像的数量。 到目前为止,不同的零件/容器是: Nginx(反向代理,静态资源) 节点(应用程序前端) 节点(应用程序后端/ API) Mongo(数据库) 思考 我的一般想法是,每个不同的部分应该作为容器来运行。 我担心的是,如果我要在同一台机器上运行另一个应用程序,那么最终会使用不可处理的链接图像数量来增加它。 这可以通过为每个应用程序制作一个图像来解决。 因此,上述服务将成为一个形象的一部分。 这是否与Docker的整体安全性或目的冲突? 澄清 在一个Docker镜像中有多个服务是否与Docker的目的冲突? 从一个映像运行服务时,容器的整体安全优势是否会被删除?
我目前正在从一个强大的根服务器迁移到一个function较弱,最明显更便宜的服务器。 在根服务器上,我有一些服务被隔离到不同的虚拟机中。 在新的服务器上这是不可能的。 但是,我想仍然有一些孤立的一些服务…如果可能的话。 目前我正在考虑使用docker进行隔离。 但是我不确定docker是否是正确的工具。 我试图谷歌的答案,但是我发现有关docker的大多数post只与开发,ci或testing目的的短期容器有关。 在我的情况下,它会更像是一个长期的容器,运行如nginx,php和mysql / mariadb(而数据库甚至可能获得自己的容器)和其他服务运行其他容器的Web服务堆栈。 所以我的问题是:Docker是否适合长时间运行容器的任务。 或换句话说…是docker工人可以作为基于虚拟机的“替代品”吗?
CoreOS群集可能共享磁盘空间,例如使用NFS? 如果是这样的话,怎么会这样呢? (例如,在一个节点有很多磁盘空间的情况下)。 这将有助于避免每个节点都必须下载并存储自己的docker映像库,或者跨节点共享主目录空间。 因为我们不能直接在CoreOS上安装额外的软件,所以我想我们只需要编写一个容器来安装NFS(例如,基于Ubuntu的容器上的nfs-kernel-server )。 我不知道这是否可行,但是我希望在CoreOS集群中共享磁盘空间有一些确定的方法(毕竟,对群集来说似乎是一种普遍的期望,也许我的build议比以前更为复杂) 。 只是提供一些反馈的饲料,这是我到目前为止的想法: 提供NFS的主机端似乎是一个合理的docker任务,例如我想像一个Dockerfile,如: FROM ubuntu:14.04 ENV CLIENT_IP 11.111.111.111 RUN apt-get update && apt-get install -y nfs-kernel-server supervisor RUN mkdir /var/nfs && chown nobody:nogroup /var/nfs RUN echo "/home ${CLIENT_IP}(rw,sync,no_root_squash,no_subtree_check)" >> /etc/exports RUN echo "/var/nfs ${CLIENT_IP}(rw,sync,no_subtree_check)" >> /etc/exports RUN exportfs -a CMD service nfs-kernel-server start 在CLIENT_IP被正确填写的地方(也许我们需要用一个叫supervisord或者类似的名字来代替这个CMD,使得这个持久化,但是你明白了) 那么,在运行这个容器的时候,我们应该如何恰当地链接一些卷 我们将从CoreOS主机链接哪个卷? 还是我需要添加像–net="host" ,使客户端可用? […]
比方说,我有一个docker主机设置了50个容器,每个容器运行一个由Apache服务的站点。 据我了解,每个容器将运行一个Apache实例,通常每个Apache实例每ram使用约250mb。 那么Apache每个subprocess需要几个MB。 我是否正确地假设每个容器都需要一个完整的Apache实例的内存? 例如。 50个站点需要50 x〜300mb? 或者Apache能够在容器之间共享部分内存来提高内存效率? Docker是否适合高效的“大规模”托pipe(例如,每个站点都是容器的大量站点,每个站点都需要很less的资源)? 或者只有一个Apache容器为50个站点提供服务是可行的?
我正在玩docker,我想能够在其中启动一个mpi应用程序。 我正在使用ubuntu:latest作为基础映像,并且已经安装了所需的工具来编译我的程序并将其与mpi链接起来。 当我使用mpirun启动程序时,我收到以下警告: [c1dab84c3fac:10417] [[INVALID],INVALID] ORTE_ERROR_LOG: Not found in file ess_hnp_module.c at line 170 ————————————————————————– It looks like orte_init failed for some reason; your parallel process is likely to abort. There are many reasons that a parallel process can fail during orte_init; some of which are due to configuration or environment problems. This failure appears […]