- 我有一个Dockerfile
Dockerfile.foo
- 我使用
docker run -p 8000:8000 --cap-add=IPC_LOCK johndoe/repo:latest
运行Dockerfile.foo
到目前为止一切都很好。
我的问题是,运行Dockerfile.foo
需要--cap-add=IPC_LOCK
(据我所知,这是不可能的(。
但是,我希望将Dockerfile.foo
作为dockercompose.yaml
的一部分运行,因为我还有一些其他服务使用Dockerfile.foo
生成的容器。问题是,我不知道如何(1(使用johndoe/repo:latest
映像,或(2(在dockercompose.yaml
中使用Dockerfile.foo
,并将--cap-add=IPC_LOCK
标志传递给映像或Dockerfile(取决于允许我使用的那个(。
我想做的事情有可能吗?如果没有,是否有建议/推荐的方法来实现我的目标?
您可以在docker compose文件中使用cap_add
子句:
cap_add:
- IPC_LOCK
所以你的dockercompose.yaml
看起来像:
version: "3.9"
services:
johndoe:
build: /path/to/dir
cap_add:
- IPC_LOCK
当您运行docker compose up
时,johndoe
服务将使用从Dockerfile构建的映像,并运行带有--cap-add
标志的容器。
还要注意,Dockerfile没有扩展名。