Articles of Docker

如何减lessDocker镜像大小

我有容器运行GlassFish。 当我尝试提交图像时,它变成了14GB。 后来,我删除了容器中的/tmp/ 10GB,并试图提交一个图像,但仍然是14GB的图像。 看来从容器中删除文件并不反映在图像大小。 我该如何解决这个问题?

我们如何增加在Jetty中允许的最大HTTP GET查询长度?

我们使用Jetty运行Apache Solr索引。 我们已经有一些查询增长超出了以前预期的最大长度,现在有问题,大多数查询不返回任何数据,因为服务器没有响应(浏览器说“连接重置”)。 这些请求不是通过浏览器进行的,而是通过编程方式使用Apache_Solr_Service PHP库。 应用程序期望查询以HTTP GET请求的forms出现,因此只需切换到POST就不能解决此问题。 我们如何增加在Jetty中允许的最大HTTP GET查询长度? 谢谢!

较新的Docker客户端与较旧的Docker主机

我们在RHEL 6.6上运行稍旧的Docker服务器。 目前我们的运营团队没有很好的支持,所以我们不能轻易升级。 现在它运行一个EPEL仓库中的Docker 1.3.2。 如果我在ssh里面做了一切所需要的概念certificate,希望能够帮助我推动pipe理层改进对Docker的基础架构支持。 我将其设置为侦听TCP / TLS,并且能够连接到它,但拒绝运行由本地Docker客户端提供的命令。 $ docker version Client version: 1.4.1 Client API version: 1.16 Go version (client): go1.4 Git commit (client): 5bc2ff8 OS/Arch (client): darwin/amd64 FATA[0000] Error response from daemon: client and server don't have same version (client : 1.16, server: 1.15) 我知道连接本身的作品,因为fig作品: $ cat > fig.yml test: image: busybox […]

限制Docker容器的networking访问

我正在创build一个仅适用于SFTP的Docker容器,一个供多人使用的容器,用于在他们自己的chroot ed环境中上传和pipe理文件。 在纸上,这是非常安全的:我将禁用每一种forms的bashlogin,我不会在其中运行任何其他进程。 不过,我想稍微加强一点: 我想阻止这个容器从内部访问互联网,除了它是一个SFTP服务器的目的。 为了清楚起见:我知道如何防止外部世界访问我的容器 – 我可以设置传入的iptables规则,并且我只能在我的docker run命令中公开SFTP端口。 不过,我想使下面的命令(作为一个例子)在容器内运行时失败: curl google.com 我的意图是减less被黑客入侵的容器可以做的事情(不能用来发送垃圾邮件等)。

pipe理多个Docker容器的IAM安全证书

在普通的EC2环境中,通过IAMangular色和凭证(从实例元数据自动提取)来pipe理对其他AWS资源的访问相当简单。 使用CloudFormation更容易,您可以在将特定应用程序angular色分配给实例时即时创buildangular色。 如果我想迁移到Docker并进行一种M对N的部署,那里有M台机器和N个应用程序,我应该如何限制对每个应用程序AWS资源的访问? 实例元数据可以被主机上的任何人访问,所以我希望每个应用程序能够在相同的部署环境中查看/修改其他每个应用程序的数据。 在此类环境中运行的应用程序容器提供安全证书的最佳做法是什么?

Docker CMD指令中有多个命令

当我尝试在Dockerfile中通过CMD指令在运行时执行两条命令时,我不明白发生了什么。 我认为这应该工作: CMD ["/etc/init.d/nullmailer", "start", ";", "/usr/sbin/php5-fpm"] 但它不工作。 容器尚未启动。 所以我必须这样做: CMD ["sh", "-c", "/etc/init.d/nullmailer start ; /usr/sbin/php5-fpm"] 我不明白。 这是为什么? 为什么第一行不正确? 有人可以解释我这些“CMDshell格式与JSON格式等”的东西。 简而言之, 只需要注意 – 正如预期docker-compose.yml ,在docker-compose.yml command:是一样的。

Docker – 从外部访问的暴露端口 – 忽略iptables规则

我有一个docker容器运行如下: docker run –name some_container_1 -p 8080:80 -d some_image 哪个工作正常。 该容器公开它的端口80到8080,并可从本地主机访问。 由于某些原因,它完全忽略了INPUT iptables规则,也可以从外部访问。 我如何限制对我的Docker容器的访问,只允许IP 123.456.789.0从外部访问? 谢谢。 sudo iptables -L -n -v – 行号 Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT all — lo * 0.0.0.0/0 0.0.0.0/0 2 365 23380 ACCEPT […]

更新后,Docker守护进程答案'404页面未find'

我最近更新我的docker从1.4到1.5(与包lxc_docker )。 从那以后,docker守护进程发送一个像这样的错误(对于每个命令): $ docker version Client version: 1.5.0 Client API version: 1.17 Go version (client): go1.4.1 Git commit (client): a8a31ef OS/Arch (client): linux/amd64 FATA[0000] Error response from daemon: 404 page not found 但是,如果我使用客户端的以前版本,我会得到很好的答案: $ /usr/bin/docker-old version Client version: 1.4.0 Client API version: 1.16 Go version (client): go1.3.3 Git commit (client): 4595d4f OS/Arch (client): linux/amd64 […]

docker工人,高山和matplotlib

我正在试图用阿尔卑斯山缩小我们的一个docker图像: FROM python:2.7-alpine 但是,我有点麻烦安装matplotlib.h: EOF warning: no previously-included files matching '*.pyo' found anywhere in distribution warning: no previously-included files matching '*.pyd' found anywhere in distribution numpy/core/src/multiarray/numpyos.c:18:21: fatal error: xlocale.h: No such file or directory compilation terminated. numpy/core/src/multiarray/numpyos.c:18:21: fatal error: xlocale.h: No such file or directory compilation terminated. Traceback (most recent call last): File "<string>", line […]

如何在Google容器引擎中selectKubernetes负载均衡器的外部IP地址

我正在部署使用Google Container Engine的networking应用程序,并且希望通过负载均衡器访问我作为Google云平台中同一项目的一部分而控制的现有静态IP地址,因为我要使用的域名已经指向这个IP。 我用于该窗格的yaml文件是: apiVersion: v1 kind: Pod metadata: name: my-pod labels: app: my-app spec: containers: – name: my-container image: gcr.io/my-project/my-app:latest 我可以使用以下方法设置负载平衡器: apiVersion: v1 kind: Service metadata: name: my-load-balancer spec: ports: – port: 80 targetPort: 80 selector: app: my-app type: LoadBalancer 这提供了一个应用程序可访问的外部IP,但我找不到任何方式来configuration它使用我想要的IP。 服务文档提到了spec.clusterIP设置,但是这似乎与外部IP无关。 同样,一旦设置了负载平衡器,服务的status.loadBalancer.ingress.ip字段就被设置为其外部IP地址,但这似乎不是一个可configuration的设置。 另外,我尝试在Google Compute Engine控制台中手动创build转发规则,以将stream量从我的静态IP地址引导至由Kubernetes设置的目标池,但是当我尝试连接连接时被拒绝。 有什么办法做我想做的 – 在Google Container引擎上公开一个Kubernetes Pod(或复制控制器)在一个选定的静态IP地址?