Tag: 集装箱

如何知道docker集装箱退出的原因?

我有一个docker容器运行在一个1G RAM的主机(也有其他容器运行在同一主机)。 在这个docker容器中的应用程序将解码一些图像,这可能会消耗大量的内存。 不时,这个容器将退出。 我怀疑这是由于内存不足,但不是很确定。 我需要一个方法来find根本原因。 那么无论如何要知道这个容器的死亡发生了什么?

将目录绑定到泊坞窗容器

我正在构build一个testing项目,需要项目目录之外的模块。 该项目文件夹是在docker,我想将该模块目录绑定到我的项目的docker容器。 它甚至有可能做到这一点? 还是我问错了问题? 顺便说一句,我对docker工人还是个新手,所以我只是在尝试。

Docker,Web应用程序的静态文件。 最佳实践?

在Docker的Web部署中,人们如何倾向于处理静态资产? 例如,在容器中部署的django应用程序中,应用程序服务器是否提供了容器中的静态文件,或者将它们同步到另一台服务器以供Web服务器使用,还是使用CDN? 如果不从应用程序容器提供服务,则何时将文件推送到CDN或Web服务器:作为容器构build的一部分,还是作为构build中的第二个进程,以及如何确保两个步骤保持同步?

挂载gcePersistentDisk kubernetes卷是非常缓慢的

我启动一个kubernetes复制控制器。 当此复制控制器中的单个容器中的对应容器具有指定的gcePersistentDisk ,Pod将启动非常慢。 5分钟后,吊舱仍处于Pending状态。 kubectl get po会告诉我: NAME READY STATUS RESTARTS AGE app-1-a4ni7 0/1 Pending 0 5m 如果没有gcePersistentDisk ,吊舱在最多30秒内Running 。 (我使用的是10 GB的Google云端存储磁盘,并且我知道这些磁盘的容量较低,但我不确定这是否是问题。) 这可能是什么原因?

Docker容器的粒度

在使用Dockerdevise应用程序基础架构和架构时,最佳做法是在“服务”中为每个“服务”或多个容器创build一个容器? 例如使用Nginx,PHP-FPM,Redis,MySQL和ElasticSearch的分布式PHP应用程序。 服务容器: Nginx + App + PHP-FPM(完整的应用程序作为“服务”容器) Redis的 MySQL的 过程容器: Nginx的 应用 PHP-FPM Redis的 MySQL的 从我的angular度来看,使用“服务”容器方法似乎更容易维护,因为为每个过程pipe理如此多的谨慎容器可能会变得麻烦。

docker集装箱集群

我正在使用laravel homestead解决scheme进行开发,但现在我想迁移到docker。 问题是如何“膨胀”应该是我的容器。 当我说“臃肿”时,我的意思是每个容器应该有多less模块/服务。 例如,我创build了四个自定义容器,如下所示: php -> php-fpm -> composer -> memcached -> redis mysql -> mysql nginx ->nginx node ->gulp ->bower ->npm ->grunt 问题是,如果这是正确的集群,或者我应该创build单独的容器,让咕噜,鲍尔,memcached等? 如何决定一起做什么和分离容器? 有什么规定吗? 应该像生产一样发展?

有没有办法限制不受信任的容器调度?

我有一个应用程序,我想授予启动短期任务的权限,并将其作为docker容器安排。 我只是想通过docker run来做这个。 由于我想使攻击面尽可能小,所以我将该应用程序视为不可信。 因此,它可以运行任意的docker run命令(如果代码库包含bug或容器被入侵,input不正确地在某处逃脱等)。 这就是为什么我想在某些方面限制该应用程序(有效的调度程序): 防止 – –privileged使用 强制执行–read-only标志 强制执行内存和CPU限制 我看了几个选项: SELinux的 需要在主机级别设置selinux策略,然后通过daemon级别的–selinux-enabled标志在容器内传播。 然而,调度程序可以通过run –privileged覆盖这个。 seccompconfiguration文件 这些仅在启动容器时应用(seccomp标志可用于docker docker run ) AppArmor的 这可以(再次)通过–privileged在调度程序级别上被覆盖 docker守护进程–exec-opts标志 实际上只有一个选项可用于此标志( native.cgroupdriver ) 看起来Docker默认devise为信任容器调度器。 有谁知道这是否是一个devise决定? 是否有任何其他可能的解决scheme可用瓦特/当前最新的docker版本,我错过了? 我还研究了Kubernetes及其限制范围和资源配额 ,可以应用到K8S命名空间,这看起来很有趣,假设有一种方法来强制某些调度器只使用某些命名空间。 但是,这会将这个问题的范围扩大到运行K8S群集。

使用docker-compose来设置容器时区

我有一个docker-compose文件,运行一些Docker文件来创build我的容器。 我不想编辑我的Dockerfiles来设置时区,因为它们可以随时由我的团队成员更改,我有一个docker-compose.override.yml文件来进行本地环境更改。 然而,我的一个容器(一个基于selenium的容器)似乎不能拉东道时区,这给我造成了问题。 基于此,我想在我的所有容器上强制执行时区。 现在在我的Dockerfiles中 ENV TZ=America/Denver RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 一切正常。 如何在docker-compose语法中复制相同的命令?

docker引擎群模式需要服务发现

我很困惑docker群。 据我所知,运行swarm的旧方法是在docker引擎为swarm模式提供原生支持之前运行容器中的经理和工作人员。 旧的集装箱群的文档解释了如何使用consul,etcd或zookeeperbuild立服务发现。 服务发现是必要的,因为服务在随机端口运行以避免冲突,对吧? docker引擎群模式的文档没有解释如何设置服务发现。 现在我很困惑,如果机制被纳入群模式,或者是文件不完整。 我在哪里可以find关于群集模式的最新解释,以及它如何与服务发现等概念相关联?

如何单独获取Docker容器ID

我只有一个docker实例在运行。 我的实际任务是围绕这个容器编写shell脚本。 但是,第一步是通过shell命令获取容器ID。 有没有一个shell命令来做到这一点?