注意:这个问题是在更新 docker 文档之前创建的(这就是它们更新的原因 - 请参阅此答案)。请不要发布指出差异的文档的答案:-)
我一直在使用docker-compose,但注意到还有一个docker compose(没有破折号)。
我无法通过谷歌搜索快速确定两种形式之间的差异。
任何人?
docker compose的帮助:
docker-compose的帮助:
我想做这样的事情,我可以按顺序运行多个命令.
db:
image: postgres
web:
build: .
command: python manage.py migrate
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db
Run Code Online (Sandbox Code Playgroud) 有什么区别ports和expose选项docker-compose.yml
我一直在阅读并了解Docker,我正在尝试正确选择要使用的Django设置.到目前为止,要么:
我明白这Dockerfiles是用过的Docker Compose,但我不确定将所有内容放在一个大型Dockerfile中,并FROM为不同的图像添加多个命令是不是很好?
我想使用几个不同的图像,包括:
uwsgi
nginx
postgres
redis
rabbitmq
celery with cron
Run Code Online (Sandbox Code Playgroud)
请告知使用Docker设置此类环境的最佳做法.
如果它有帮助,我在Mac上,所以使用boot2docker.
我遇到的一些问题:
development-environment docker boot2docker dockerfile docker-compose
我有一个docker-compose.yml包含4个容器的文件:redis,postgres,api,worker
在开发worker期间,我经常需要重新启动它才能应用更改.有没有什么好方法可以重新启动容器(例如worker)而无需重新启动其他容器?
我使用的RabbitMQ并从一个简单的Python样品在这里 一起泊坞窗-撰写.我的问题是我需要等待rabbitmq完全启动.从我到目前为止搜索到的,我不知道如何等待容器x(在我的情况下是工人)直到y(rabbitmq)开始.
我找到了这个博文,他检查其他主机是否在线.我还发现了这个docker命令:
等待
用法:docker等CONTAINER [CONTAINER ...]
阻止,直到容器停止,然后打印其退出代码.
等待容器停止可能不是我想要的但如果是,是否可以在docker-compose.yml中使用该命令?到目前为止,我的解决方案是等待几秒钟并检查端口,但这是实现此目的的方法吗?如果我不等,我会收到错误.
泊坞窗,compose.yml
worker:
build: myapp/.
volumes:
- myapp/.:/usr/src/app:ro
links:
- rabbitmq
rabbitmq:
image: rabbitmq:3-management
Run Code Online (Sandbox Code Playgroud)
python hello sample(rabbit.py):
import pika
import time
import socket
pingcounter = 0
isreachable = False
while isreachable is False and pingcounter < 5:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect(('rabbitmq', 5672))
isreachable = True
except socket.error as e:
time.sleep(2)
pingcounter += 1
s.close()
if isreachable:
connection = pika.BlockingConnection(pika.ConnectionParameters(
host="rabbitmq"))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='', …Run Code Online (Sandbox Code Playgroud) 根据Docker Compose的撰写文件文档:
depends_on - 服务之间的快速依赖性.links- 链接到另一个服务中的容器,并以与depends_on相同的方式表达服务之间的依赖关系.我不明白链接到其他容器的目的,所以两个选项之间的差异对我来说似乎仍然很难.
如果有一个例子会更容易,但我找不到任何例子.
我注意到,当我将容器B与容器A链接时,容器B将在容器A的shell内"ping".
我ping B在容器A里跑了bash,得到了这样的结果(仅供参考,来自互联网的图片)
虽然潜入Docker,Google Cloud和Kubernetes,但还没有清楚地理解它们中的所有三个,在我看来这些产品是重叠的,但它们不兼容.
例如,需要重新编写docker-compose文件,以便可以将应用程序部署到Kubernetes.
有人可以提供一个高级粗略描述Docker,Docker-Compose,Docker Cloud和Kubernetes重叠的位置以及哪一个依赖于另一个?
我有几个我想要使用的docker图像minikube.我不想首先上传然后下载相同的图像,而不是直接使用本地图像.我该怎么做呢?
我试过的东西:
1.我尝试运行这些命令(单独,两次删除minikube的实例并重新开始)
kubectl run hdfs --image=fluxcapacitor/hdfs:latest --port=8989
kubectl run hdfs --image=fluxcapacitor/hdfs:latest --port=8989 imagePullPolicy=Never
Run Code Online (Sandbox Code Playgroud)
输出:
NAME READY STATUS RESTARTS AGE
hdfs-2425930030-q0sdl 0/1 ContainerCreating 0 10m
Run Code Online (Sandbox Code Playgroud)
它只是陷入某种状态但从未达到就绪状态.
2.我尝试创建一个注册表,然后将图像放入其中,但这也无效.我可能做错了但我找不到正确的指令来完成这项任务.
请提供在本地kubernetes实例中使用本地docker镜像的说明.
操作系统:ubuntu 16.04
Docker:Docker版本1.13.1,build 092cba3
Kubernetes:
Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.3", GitCommit:"029c3a408176b55c30846f0faedf56aae5992e9b", GitTreeState:"clean", BuildDate:"2017-02-15T06:40:50Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"08e099554f3c31f6e6f07b448ab3ed78d0520507", GitTreeState:"clean", BuildDate:"1970-01-01T00:00:00Z", GoVersion:"go1.7.1", Compiler:"gc", Platform:"linux/amd64"}
Run Code Online (Sandbox Code Playgroud)
如果有人可以帮助我找到一个使用docker-compose来做这个的解决方案,那就太棒了.谢谢.
编辑:
加载的图片eval $(minikube docker-env:
REPOSITORY TAG IMAGE ID CREATED SIZE
fluxcapacitor/jupyterhub latest e5175fb26522 4 weeks ago 9.59 GB
fluxcapacitor/zeppelin latest …Run Code Online (Sandbox Code Playgroud) 有没有办法只使用Docker Compose在容器中启动交互式shell?我在docker-compose.yml中试过这样的东西:
myapp:
image: alpine:latest
entrypoint: /bin/sh
Run Code Online (Sandbox Code Playgroud)
当我使用docker-compose启动此容器时,它会立即退出.是否有任何可以添加到entrypoint命令的标志,或作为myapp的附加选项,以启动为交互式shell?
我知道有一些原生的docker命令选项来实现这一点,只是好奇,如果它也可以只使用Docker Compose.
docker-compose ×10
docker ×9
dockerfile ×2
kubernetes ×2
boot2docker ×1
interactive ×1
linux ×1
shell ×1
yaml ×1