Tag: docker

为Python项目构buildDocker镜像时如何避免重新安装软件包?

我的Dockerfile是类似的 FROM my/base ADD . /srv RUN pip install -r requirements.txt RUN python setup.py install ENTRYPOINT ["run_server"] 每当我build立一个新的形象,依赖关系必须重新安装,这可能是在我的地区非常缓慢。 我想要cache已经安装的软件包的一种方法是用这样的新图像覆盖my/base图像: docker build -t new_image_1 . docker tag new_image_1 my/base 所以下次我用这个Dockerfile构build时,我的/ base已经安装了一些软件包。 但是这个解决scheme有两个问题: 覆盖基本图像并不总是可能的 随着更新的图像分层,基本图像变得越来越大 那么我能用什么更好的解决scheme来解决这个问题呢? 编辑##: 关于我的机器上的泊坞窗的一些信息: ☁ test docker version Client version: 1.1.2 Client API version: 1.13 Go version (client): go1.2.1 Git commit (client): d84a070 […]

Apache HttpComponents的替代品?

所以,我得出的结论是,Apache HttpComponents 4是我遇到的最过度的API之一。 看起来像他们应该是简单的事情是采取数百行代码(我仍然不知道资源得到清理正确)。 另外,它希望我做这样的事情: List<NameValuePair> qparams = new ArrayList<NameValuePair>(); qparams.add(new BasicNameValuePair("q", "httpclient")); qparams.add(new BasicNameValuePair("btnG", "Google Search")); qparams.add(new BasicNameValuePair("aq", "f")); qparams.add(new BasicNameValuePair("oq", null)); URI uri = URIUtils.createURI("http", "www.google.com", -1, "/search", URLEncodedUtils.format(qparams, "UTF-8"), null); 哪,只是…不。 我知道这是Java,而我们并没有涉及到整个简单的事情,但是这有点多。 更不用说jar子高达700KB。 无论如何,足够的咆哮,我想看看人们与其他HTTP客户端库有什么样的经验? 我知道的是: Jetty , Hotpotato和AsyncHttpClient 。 这是服务器端使用,我最感兴趣的是许多并发获取和大文件传输的性能。 任何build议? PS我知道古老的HttpClient 3.1仍然存在,但我想使用一些支持。 更新 @oleg:这是文档build议的内容: HttpClient httpclient = new DefaultHttpClient(); try { […]

在docker里面运行docker可以吗?

我在Docker容器中运行Jenkins。 我不知道Jenkins容器是否也是Docker主机? 我在想的是从Jenkins内部为每个集成testing版本启动一个新的Docker容器(以启动数据库,消息代理等)。 集成testing完成后,容器应该closures。 有没有这样的理由,以避免从另一个docker集装箱内运行docker集装箱?

如何在web.xml中的<web-app>标签中指定根上下文?

我想在我的WAR文件中指定我的Java Web应用程序的根上下文。 我怎样才能在web.xml文件中使用有效的web-app XML? 哦,是的,我想以应用程序服务器不可知的方式做到这一点。 先谢谢你,罗布

你如何在代理后面的dockerfile中运行apt-get?

我运行一个虚拟机(Ubuntu 13.10)与docker(版本0.8.1,生成a1598d1)。 我正在试图build立一个docker文件的形象。 首先,我想更新软件包(使用下面的代码 – 代理被混淆),但apt-get超时错误: Could not resolve 'archive.ubuntu.com' 。 FROM ubuntu:13.10 ENV HTTP_PROXY <HTTP_PROXY> ENV HTTPS_PROXY <HTTPS_PROXY> RUN export http_proxy=$HTTP_PROXY RUN export https_proxy=$HTTPS_PROXY RUN apt-get update && apt-get upgrade 我也在主机系统中运行以下内容: sudo HTTP_PROXY=http://<PROXY_DETAILS>/ docker -d & 主机能够正常运行apt-get 。 如何更改dockerfile以允许它从容器内到达ubuntu服务器? 更新 我在CentOS中运行代码(将FROM ubuntu:13.10更改为FROM centos ),它工作正常。 这似乎是Ubuntu的一个问题。

如何从docker集装箱分离

这个问题是非常相似的,但我仍然有问题: 我运行一个容器: docker run -d CONTAINER 然后我附上它 docker attach NAME 但是我不能用CTRL-C和CTRL-P + CTRL-Q来退出它(就像上面类似的问题中提到的那样) 我必须kill -9 PID才能退出… 我究竟做错了什么? 信息: Docker版本0.6.7,build cb48ecc Ubuntu 3.8.0-33-generic#48〜precise1-Ubuntu

我应该使用AWS Elastic Beanstalk还是Amazon EC2 Container Service(ECS)来扩展Docker容器?

我开发了一个由多个微服务组成的基于Docker的应用程序。 它必须使用Amazon SQS消息并对其进行处理。 起初我想使用AWS Elastic Beanstalk,但后来我倒了EC2容器服务。 现在我不知道选哪一个。 到目前为止,Elastic Beanstalk支持多容器环境。 这很好,因为每个微服务都有一个Docker容器内的自己的应用服务器。 下一个问题是缩放: 我不知道缩放机制是如何工作的。 例如:我在Elastic Beanstalk环境中有5个docker容器。 现在只有第五个docker集装箱承受着沉重的负担,因为它有大量的SQS信息要处理,另外四个几乎空闲,因为它们不需要太多的CPU或者可能没有太多的SQS信息。 我们假设第5个容器运行一个JBoss应用程序服务器。 据我所知,即使有足够的CPU /内存,服务器也只能消耗有限的并行请求。 如果JBoss Docker容器不能处理大量的请求,但有足够的CPU /内存可用,当然我想在同一个实例上自动启动第二个Docker / JBoss容器。 但是如果我没有足够的CPU /内存会发生什么呢? 当然,我想旋转第二个实例,可以通过EB中的自动缩放组进行configuration。 现在是二审,但五号以外的每一个集装箱都快空闲了,当然我也不希望它们在二次产生不必要的东西,这样会浪费资源。 只有第五个应该产卵,其他的应该像第五个规模那样根据可configuration参数如CPU /内存/ SQS进行缩放。 我不完全知道Amazon ECS是否正在这样做,或者如果可能的话,但是我真的无法在互联网上find关于这个主题的任何来源,这通常是基于实例/容器的扩展。

Docker,只读卷

我正在使用Docker,并且我想安装一个变化很大的dyanmic文件夹(所以我不必为每个执行都做docker,这将会太昂贵),但是我希望这个文件夹是只读的。 将文件夹所有者更改为其他人可以工作,但是chown需要root访问权限,我不想将其暴露给应用程序。 当我使用-v标志来挂载时,它给出了我给的任何用户名,我在docker镜像里面创build了一个非root用户,但是拥有所有者作为docker的用户的卷中的所有文件都变成了用户I从命令行给出,所以我不能只读文件和文件夹。 我怎样才能防止这个? 我还添加了mustafa ALL=(docker) NOPASSWD: /usr/bin/docker ,所以我可以通过terminal切换到另一个用户,但是这些文件仍然对我的用户有权限。

无法链接到由docker-compose启动的正在运行的容器

我正在用Docker容器设置我的本地开发环境。 docker-compose.yml如下所示 version: '2' services: db: image: mongo:3 mq: image: rabbitmq:3 api: build: . image: my_app/api ports: – "3000:3000" links: – db – mq environment: – NODE_ENV=development 它开始没有错误。 Docker列出了3个正在运行的容器 docker-compose up -d docker ps e90e5a8b5d33 my_app/api "/usr/local/bin/node " 0.0.0.0:3000->3000/tcp my_app_api_1 42bfcd971b16 mongo:3 "/entrypoint.sh mongo" 27017/tcp my_app_db_1 a0685a816c47 rabbitmq:3 "/docker-entrypoint.s" 4369/tcp, 5671-5672/tcp, 25672/tcp my_app_mq_1 但是,当我尝试链接到从另一个容器运行的容器 docker […]

如何在Docker容器中运行Nginx而不停止?

我有一个Docker容器上安装Nginx,并试图像这样运行它: docker run -i -t -p 80:80 mydockerimage /usr/sbin/nginx 问题是,Nginx的工作方式是,初始化过程立即产生一个主Nginx进程和一些工作者,然后退出。 由于Docker只能看到原始命令的PID,容器会暂停。 我如何防止容器中止? 我需要能够告诉它绑定到第一个subprocess,或停止Nginx的初始进程退出。