Questions tagged «containers»

5
如何处理Docker容器中的安全更新?
在将应用程序部署到服务器上时,应用程序本身与捆绑在一起的东西与平台(操作系统和已安装的程序包)期望提供的东西之间通常存在分隔。其中一点是,平台可以独立于应用程序进行更新。例如,当需要紧急将安全更新应用到平台提供的软件包而不重建整个应用程序时,这很有用。 传统上,仅通过执行程序包管理器命令来应用安全更新,以在操作系统上安装程序包的更新版本(例如RHEL上的“ yum更新”)。但是随着诸如Docker之类的容器技术的出现,容器映像实际上将应用程序和平台都捆绑在一起,如何使具有容器的系统保持最新状态?主机和容器都有各自独立的软件包集,需要在主机上进行更新和更新不会更新容器内的任何软件包。随着RHEL 7的发布,尤其是Docker容器成为特色,很高兴听到Redhat推荐的处理容器安全性更新的方法是什么。 关于以下几种选择的想法: 让软件包管理器更新主机上的软件包将不会更新容器内的软件包。 必须重新生成所有容器映像以应用更新似乎打破了应用程序与平台之间的分隔(更新平台需要访问生成Docker映像的应用程序构建过程)。 在每个正在运行的容器中运行手动命令似乎很麻烦,并且在下次从应用程序发布工件更新容器时,更改有被覆盖的风险。 因此,这些方法似乎都不令人满意。

6
在Amazon ECS中更新服务的容器
建议使用哪种方法来更新在Amazon ECS中运行的服务的容器? 该AWS文档说:“如果你已经更新了应用程序的泊坞图像,你可以创建一个新的任务定义与图像,并将其部署到您的服务,一次一个任务。” 当前(2015年4月13日)文档中目前几乎包含所有内容。 我是否正确理解,在Amazon ECS中更新我的应用程序容器的唯一方法是创建一个新任务,然后停止旧任务并启动新任务? 我已经在Core OS和Fleetctl中成功使用了“最新”标签。这样做的好处是不需要为新的更新而更改Docker映像的标签,因为重新加载服务将看到新的更改并更新容器(使用相同的标签“最新”)。 您使用哪种方法通过Amazon ECS中的更新的docker镜像来更新服务?

2
docker-compose:在docker-compose.yml中运行后自动删除容器的选项
该docker-compose run参考指出,它有--rm选项 运行后取出容器。 run对于我在中指定的某些服务,我想将此设为默认行为docker-compose.yml。 所以,问题是: 能以某种方式指定 docker-compose.yml吗? 如果可以,我该怎么办? (INB4“使用bash别名,卢克!”:当然,我可以docker-compose.yml通过设置一些bash别名来强制执行此操作,alias docker-compose-run='docker-compose run --rm'但是我对如何通过docker-compose.yml而不是某些外部方式完全执行强制执行感兴趣。)

2
如何将文件添加到没有root权限的docker容器中?
我正在尝试将文件添加到根据官方tomcat映像构建的Docker 映像中。该映像似乎没有root权限,因为tomcat如果我运行bash,则以用户身份登录: docker run -it tomcat /bin/bash tomcat@06359f7cc4db:/usr/local/tomcat$ 如果我指示Dockerfile将文件复制到该容器,则该文件具有权限644,所有者为root。据我了解,这似乎是合理的,因为Dockerfile中的所有命令都以root身份运行。但是,如果我尝试将该文件的所有权更改为,则会tomcat:tomcat收到Operation not permitted错误消息。 为什么不能更改复制到该图像的文件的权限? 如何复制它: mkdir docker-addfilepermission cd docker-addfilepermission touch test.txt echo 'FROM tomcat COPY test.txt /usr/local/tomcat/webapps/ RUN chown tomcat:tomcat /usr/local/tomcat/webapps/test.txt' > Dockerfile docker build . 输出docker build .: Sending build context to Docker daemon 3.072 kB Sending build context to Docker …

2
Linux容器中的循环设备?
我试图在容器内使用循环设备来挂载一些图像文件: > sudo losetup /dev/loop0 test.img losetup: /dev/loop0: failed to set up loop device: No such file or directory /dev/loop0 确实不存在,并且 > sudo mknod /dev/loop0 b 7 0 mknod: ‘/dev/loop0’: Operation not permitted 我该如何工作?容器是否需要一些可能没有的cgroup权限?

3
如果退出结果为0的情况下如何退出所有主管程序
我像这样用主管运行docker容器: Docker文件 CMD ["/run.sh"] 运行 #!/usr/bin/env bash exec supervisord -n Supervisor-serf.conf [group:job] programs=serf,producer [program:serf] command=/start-serf-agent.sh numprocs=1 autostart=true autorestart=unexpected stopasgroup=true killasgroup=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 start-self-agent.sh #!/bin/bash exec serf agent --join=serf:7946 -tag role=producer 主管服务 [program:producer] command=/start.sh numprocs=1 stopasgroup=true killasgroup=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 start.sh #!/bin/bash exec /producer --project=${NAME} 生产者停止后,我得到: producer_1 | …

3
Red Hat / CentOS EL6上的Linux容器(LXC)-lxc-create与libvirt?
试图保持Red Hat的良好能力并仍然计划系统寿命是很棘手的... 我已经支持Linux容器(LXC)一年多了。我最初的安装基础上,从在线教程,喜欢收集的信息这一个和这一个。它以和命令为中心lxc-create,并修改现有的OpenVZ模板。lxc-start|stoplxc-destroy 这样效果很好,并且可以在生产环境中愉快地运行。但是,我要提出一些其他系统,并决定查看Red Hat关于EL6中容器的最新文档。看到他们对此的官方立场,我感到很惊讶。 在不RHEL 6提供了LXC工具需要使用Linux容器?Red Hat将LXC描述为技术预览,并建议使用libvirt来管理创建和管理容器。 但是,Oracle 提倡在Unbreakable Linux中使用完全不同的容器化技术。 libvirt方法中似乎缺少一些功能,但是我最初使用lxc- *命令的方法是一个手动过程……我不太清楚是什么是正确的,还是无法在EL6上管理容器的“可接受”方法。 对于当今的LXC和类似RHEL的系统,传统的看法是什么? 您如何在组织中实施它们? 与其他方法相比,一种方法有什么优势吗? 这些可以共存吗?

3
在btrfs上处理LXC容器的正确方法
假设我们有一台安装了lxc的服务器,以及一个用作基本img的lxc容器/var/lib/lxc/ubuntu_base。为了简单起见,让我们忘记了复制基本img之后的配置更改。 有些人建议使用子卷和快照来创建新容器,但是可以很容易地执行cp --reflink并获得类似结果。 那么管理多个容器的正确方法是什么(或者更好的方法)? 快照 这种方式似乎是最好的,但是lxc-destroy之类的命令将无法工作,因为它无法删除目录。 btrfs subvolume snapshot /var/lib/lxc/ubuntu_base /var/lib/lxc/container_1 使用reflink的cp 我不确定此快照或快照之间是否有任何性能差异 cp --reflink=always /var/lib/lxc/ubuntu_base /var/lib/lxc/container_1 或者还有其他我不知道的更好的方法来做到这一点。 编辑: 我在reflink选项中看到的一件事是,如果其他容器正在运行,则不能删除基本容器,因为/proc和/dev被挂载且从未更改,因此引用始终是相同的。但是关闭所有已复制的容器似乎有所帮助。


3
为什么在有Linux-vserver时使用LXC?
我不是LXC专家,但据我所知它确实与linux-vserver相似。 如果这是正确的,我想知道为什么在已经拥挤的虚拟化阵营中还有另一个参与者?LXC提供(或保证)linux-vserver没有什么? 我是linux-vserver的长期用户,我记得大约在多年前就出现了所有此类虚拟化宣传。最近一段时间,开发速度有所放缓,但从未完全停止-我知道是因为开发人员帮助我将其恢复到linux / hppa上的有用状态(至少在Gentoo中如此)。他们定期使用所有最新的功能(与LXC使用的容器基础结构)针对最新的内核推出补丁,甚至与GRsecurity集成。 从事LXC工作的人们可能有充分的理由这样做,而不是加入已经建立好的linux-vserver基础?那我想知道。 这与主线集成有关吗?那么为什么不像Linux的XenLinux那样使linux-vserver适应集成呢?

4
网络名称空间中的iptables LOG规则
我正在尝试为Docker容器设置iptables规则。我正在使用nsenter在容器的网络名称空间内执行iptables命令: # log access to port 8080 PID=$(docker inspect --format "{{.State.Pid}}" $ID) /home/ubuntu/nsenter -n -t $PID iptables -A OUTPUT -o eth0 -p tcp -m tcp --dport 8080 -j LOG 除LOG规则外,此方法非常有效。那些似乎不在任何地方记录。请注意,适用于主机系统的相同规则适用并登录到/var/log/kern.log。 在哪里可以找到这些日志规则的输出?这是网络名称空间的已知问题/限制吗?

1
防止货叉炸弹进入Docker容器
我目前正在努力限制我致电给用户的进程数sandbox。 我在内部配置了进程限制,/etc/security/limits.conf如下所示: sandbox hard nproc 100 但是,如果我想以sandbox用户身份连接到容器,则ssh返回: shell request failed on channel 0 因此,我以的身份登录root并检查了sandbox用户正在运行多少个进程,但少于5个。 那么,是什么让我无法通过ssh登录? 在没有设置限制的情况下,sandbox用户的ssh登录正常。 还是有其他方法可以防止叉子炸弹袭击?
8 ssh  pam  containers  docker 

1
扩展和容量规划的最佳实践:仅VM?VM +容器?仅集装箱?集群?还有吗
(我找不到类似的问题,但已经回答了,但由于我是法国学生,所以也许我不使用好话;)) 我要寻找的最接近的答案是:可扩展Web应用程序硬件拓扑最佳实践,但不能解决所有问题 我建立了一个小型私有云(Openstack),我可以在其中运行KVM VM,大多数情况下是为我的数十个网站以及某些客户端运行每个域/网站一个VM。 我计划测试是否可以演变为“混合云”,使某些事物在我的云中运行,而另一些事物在EC2上运行,因此我想确定我的“做事方式”是否最适合我的使用。 这些VM运行CoreOS,然后运行不同的Docker服务(一个用于Nginx的容器,一个用于pgsql的容器,等等)。如果一项服务在某些方面太“短”了,那么我要么创建一个更大的VM,将旧的VM复制到更大的VM并删除旧的VM,要么我为需要的服务创建一个专用的VM(例如,第二个专用于Nginx的VM,以处理更多连接。 但是,我想知道自己是否做错了事。 我之所以选择使用此“模型”,是因为我希望在不同的域/客户端之间建立强烈的隔离,因为我想回想起过去并逐渐习惯Docker,并且因为我发现Docker是最有效的方法之一快速部署服务。 我是否应该只使用每个服务具有一个VM(而不是每个域一个VM)的VM(因此没有容器)? 还是应该只使用容器来分隔不同的服务,然后在节点中将所有服务混合在一起运行?就像数十个容器,它们分别提供不同的服务和不同的客户?然后,如何有效隔离不同的域/客户端?然后如何扩展这些服务?仅添加更多节点? 还是我应该创建一个由大型VM或裸机组成的集群,然后使用它们来创建一个大型CoreOS集群,该集群应该能够通过向其添加更多裸机节点来进行扩展?然后适用于容器的相同问题。 抱歉,如果我的问题看起来太愚蠢,新手或不合适,但我宁愿现在问,而不是什么时候退后一步;) 任何建议欢迎:) ÿ
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.