我正在使用 docker compose 进行工作。当尝试在后台运行 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
放在错误位置的人的正确答案。但这是错误消息的最高命中,我确信我不是唯一一个在运行后遇到此错误的人:
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
,这就是它所说的,我的观点是添加 -d
不应改变这一点。
我现在已经安装了
docker-compose
并且一切正常,但我认为值得花时间希望为其他人避免一些麻烦,如果他们最终来到这里,因为他们有 docker
但没有 docker-compose
。
-d
是子命令 up
的选项。
如果您运行 docker compose up --help
,您将获得更多信息。
要解决问题,请运行
docker compose up -d
出于兼容性目的,我们使用了旧版本的 Docker;在旧版本中,它是
docker-compose
而不是 docker compose
。将其更改为连字符解决了此错误。