我正在按照无花果指南使用带有python应用程序的docker,但是当docker启动命令时
RUN pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
Step 3 : RUN pip install -r requirements.txt
---> Running in fe0b84217ad1
Collecting blinker==1.3 (from -r requirements.txt (line 1))
Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', gaierror(-2, 'Name or service not known'))': /simple/blinker/
Run Code Online (Sandbox Code Playgroud)
这重复几次,然后我收到另一条消息:
Could not find any downloads that satisfy the requirement blinker==1.3 (from -r requirements.txt (line 1))
No distributions at all found for blinker==1.3 (from -r requirements.txt (line 1))
Run Code Online (Sandbox Code Playgroud)
所以由于某种原因,pip无法访问docker容器内的任何包.有什么我需要做的,以允许它上网?
然而,pip可以很好地在docker容器之外安装东西,并且即使使用那个确切的package(blinker==1.3)也能正常工作,这样就不是问题了.此问题也不是特定于该包.我pip install …
docker-compose支持mem_limit?我该怎么测试呢?
我有一个以下docker-compose.yml
repository:
image: myregistry/my_nginx_image
mem_limit: 60m
volumes:
- /etc/localtime:/etc/localtime
ports:
- "80:80"
Run Code Online (Sandbox Code Playgroud)
如何证明容器实际上不超过60 mb的RAM?
我在用:
我使用fig网站上的教程创建了一个postgres容器.我命名了容器db.
容器正在运行,我的应用程序正常连接.我试图运行命令fig run db psql与DB容器中运行,并得到了错误:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
如何进入psql正在运行的db容器中的接口?
是否可以从外部设备访问docker服务?我通过无花果构建了服务并暴露了端口3000.我使用带有docker-osx的fig,因此docker在虚拟机内运行.
现在我需要访问外部设备(即手机或平板电脑)提供的服务.
目前我只能从托管VirtualBox-Environment的机器上使用localdocker:3000访问该服务.
我正在尝试在Docker多个容器上设置Node.js应用程序.我的应用程序目前在一个Ubuntu DO Droplet上使用:
我需要对不同的部分进行dockerize,显然每个容器一个,然后使用Docker-Compose(以前称为图)简单描述不同的容器并设置它们之间的链接.我对多容器appraoch的窃取不清楚.
一个用于nginx,
一个用于Node.js,我的快速应用
一个用于MySql
,一个用于Redis
Docker-compose.yml会是什么样子?我猜nginx,mysql和redis将是未经修改的官方图片?虽然node.js将有一个构建指令指向Dockerfile,它会注意到它是基于node.js官方映像以及配置指令吗?我需要配置/配置mysql和redis例如,这是否意味着每个都需要与自己的Dockerfile分开?
容器之间的链接方式是什么?使用卷将文件复制到它们中,设置端口,调整hosts文件以将some.domain.com映射到nginx ip?
然后我需要在全局安装一些npm软件包,比如nodemon和PM2,并设置一些cron作业......(在Node.js容器上?)
这是初稿,如果能够更好地理解这个新设置,我将不胜感激:
泊坞窗,compose.yml
nginx:
image: nginx
links:
- "node"
node:
build: .
volumes:
- "app:/src/app"
ports:
- "3030:3000"
links:
- "db:mysql"
db:
image: mysql:5.6
environment:
- MYSQL_ROOT_PASSWORD=mypassword
Run Code Online (Sandbox Code Playgroud)
Dockerfile
FROM node:0.12
RUN mkdir /src
RUN npm install nodemon pm2 -g
WORKDIR /src
ADD app/package.json /src/package.json
RUN npm install
ADD app/nodemon.json /src/nodemon.json
EXPOSE 3000
CMD npm start
Run Code Online (Sandbox Code Playgroud)
我正在使用这个简单的项目作为基础,虽然我的应用程序需要
我正在使用docker-compose,我想为不同的服务构建步骤使用不同的Dockerfiles.该文件似乎表明放置不同Dockerfiles不同的目录中,但我想他们都在同一个(也许区分使用以下约定:Dockerfile.postgres,Dockerfile.main ...).这可能吗?
编辑:我有的场景包含这个docker-compose文件:
main:
build: .
volumes:
- .:/code
environment:
- DEBUG=true
postgresdb:
extends:
file: docker-compose.yml
service: main
build: utils/sql/
ports:
- "5432"
environment:
- DEBUG=true
Run Code Online (Sandbox Code Playgroud)
postgresdbDockerfile 在哪里:
FROM postgres
# http://www.slideshare.net/tarkasteve/developerweek-2015-docker-tutorial
ADD make-db.sh /docker-entrypoint-initdb.d/
Run Code Online (Sandbox Code Playgroud)
主要是:
FROM python:2.7
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
ADD . /code/
Run Code Online (Sandbox Code Playgroud)
这现在可以正常工作,但我想postgresdb通过调用Python脚本扩展其Dockerfile,该脚本根据基于SQL Alchemy构建的模型在数据库中创建表(Python脚本将被称为python manage.py create_tables).我想将它添加到db的Dockerfile中,但是由于容器的隔离,我不能在那里使用SQL Alchemy,因为该图像是基于postgres图像而不是Python的,并且它不包含sqlalchemy包......
我能做什么?我尝试使用该main服务postgresdb …
我正在尝试建立一个docker/fig Mesos集群.我是无花果和Docker的新手.Docker有很多文档,但我发现自己很难理解如何使用fig.
这是我的fig.yaml:
zookeeper:
image: jplock/zookeeper
ports:
- "49181:2181"
mesosMaster:
image: mesosphere/mesos:0.19.1
ports:
- "15050:5050"
links:
- zookeeper:zk
command: mesos-master --zk=zk --work_dir=/var/log --quorum=1
mesosSlave:
image: mesosphere/mesos:0.19.1
links:
- zookeeper:zk
command: mesos-slave --master=zk
Run Code Online (Sandbox Code Playgroud)
谢谢 !
编辑:
感谢Mark O`Connor的帮助,我创建了一个基于docker的工作台设置(+风暴,chronos等等).
享受,如果您觉得这很有用 - 请提供:https: //github.com/yaronr/docker-mesos
PS.请+1马克的答案:)
我正在尝试用docker来集成我们的开发环境.这包括Google Appengine项目的混合以及最终在容器化vm内的Google Compute引擎中托管的服务.
我们当前的开发环境引导脚本在boot2docker中引入elasticsearch和nginx,而其他应用程序在dev_appserver appengine沙箱中的localhost:{product port}上运行.这个过程很难管理和维护,因为它需要大量了解我们的应用程序如何通信.
我在docker-compose中遇到错误,它检测到容器之间的循环依赖关系.
cs和vbc以及aa和sr之间的循环导入.
由于此配置仅适用于开发环境(mac osx),因此在将所有产品套件依赖项链接在一起时,是否有人就不同的方法提出建议或想法.
docker-compose.yml的一部分:
elasticsearch:
build: ./compute/containers/elasticsearch/elasticsearch
ports:
- "9200:9200"
environment:
- PROJECT_ID=localhost
nginx:
build: ./compute/containers/elasticsearch/nginx
links:
- elasticsearch:localhost
ports:
- "9201:9201"
cs:
build: ./CS
command: dev_appserver.py /src/ --host=0.0.0.0 --admin_host=0.0.0.0 --port=8080 --admin_port=9080 --storage_path=/data/
ports:
- "8080:8080"
- "9080:9080"
volumes:
- /Users/source/CS/src:/src
- /Users/source/CS/data:/data
aa:
build: ./AA
command: dev_appserver.py /src/ --host=0.0.0.0 --admin_host=0.0.0.0 --port=8081 --admin_port=9081 --storage_path=/data/
links:
- vbc:vbc-local
- st:st-local
- elasticsearch:localhost
ports:
- "8081:8081"
- "9081:9081"
volumes:
- /Users/source/AA/src:/src
- /Users/source/AA/data:/data
vbc:
image: …Run Code Online (Sandbox Code Playgroud) 根据我对docker compose/fig的理解,如果您不想将端口暴露给其他人,则在两个服务/图像之间创建链接是一个主要原因.
像这里db不暴露任何端口,只链接:
web:
build: .
links:
- db
ports:
- "8000:8000"
db:
image: postgres
Run Code Online (Sandbox Code Playgroud)
Web是否认为db在其localhost上运行?我会从web中的脚本/程序连接到localhost:5432(postgresql的标准端口)来获取数据库连接吗?
如果这是正确的,如何在不暴露的情况下将端口5432更改为6432?我会在另一个端口上运行postgresql吗?
更新:
一些输入之后的有用链接:
我正在尝试使用docker-compose up您可以使用的方式docker run [APP_CONTAINER_NAME] [APP_OPTIONS].
docker ×10
fig ×10
apache-storm ×1
boot2docker ×1
macos ×1
mesos ×1
mysql ×1
nginx ×1
node.js ×1
pip ×1
postgresql ×1
python ×1
ubuntu ×1
virtualbox ×1