我正在与docker撰写工作。当试图在后台运行docker compose,但它显示错误未知的速记标志:'d' in -d
我被试过了
docker compose -d up
docker-compose.yml
version: '3'
networks:
loki:
services:
loki:
image: grafana/loki:2.5.0
# volumes:
# - ./loki:/loki
ports:
- 3100:3100
networks:
- loki
promtail:
image: grafana/promtail
volumes:
- ./promtail:/etc/promtail
- /var/log/nginx/:/var/log/nginx/
command: -config.file=/etc/promtail/promtail-config.yml
ports:
- 9080:9080
networks:
- loki
grafana:
image: grafana/grafana
ports:
- 3000:3000
networks:
- loki
-d
是子命令up
的一个选项。如果你运行docker compose up --help
,你会得到更多的信息。
解决问题运行docker compose up -d
接受的答案是对提问者的正确答案,其他人把-d
放在错误的地方。但这是错误消息的顶部,我确信我不是唯一一个在运行后得到这个错误的人:
docker-compose up -d
接受的答案告诉我要完全按照我所跑的去跑,这很令人困惑。我终于算出来了:
docker-compose
是一个独立于docker
的包,至少在Arch Linux上是这样,在其他地方也是如此,如果
docker-compose
没有安装,Docker认为这是有意义的:$ docker compose up -d unknown shorthand flag: 'd' in -d
我认为这样回答会更加明智:
docker: 'compose' is not a docker command.
如果你不使用-d
而没有安装docker-compose
,它会说什么。我现在已经安装了docker-compose
,事情正在工作,但我认为这是值得的时间,希望为其他人节省一些麻烦,如果他们最终在这里,因为他们有docker
,但没有docker-compose
。
出于兼容性的考虑,我们使用了Docker的旧版本;在旧版本中是docker-compose
而不是docker compose
。将其更改为连字符解决了此错误。