如何创建无根Docker容器
我试图避免docker容器在创建新文件时出现大量权限错误。因此,我遵循了这篇文章: 它只是建议将当前用户和组ID传递给docker构建过程。我正试图用如何创建无根Docker容器,docker,Docker,我试图避免docker容器在创建新文件时出现大量权限错误。因此,我遵循了这篇文章: 它只是建议将当前用户和组ID传递给docker构建过程。我正试图用docker-compose来实现这一点,但是有很多问题,因为它不喜欢美元符号 下面是顶部我的docker compose.yml文件的外观: services: app: build: context: . dockerfile: Dockerfile.dev args: - RED
docker-compose
来实现这一点,但是有很多问题,因为它不喜欢美元符号
下面是顶部我的docker compose.yml
文件的外观:
services:
app:
build:
context: .
dockerfile: Dockerfile.dev
args:
- REDIS_URL=redis://redis:6379/0
- USER_ID=${id -u}
- GROUP_ID=${id -g}
但是,当我运行此操作时,会出现以下错误:
ubuntu@ip-10-20-38-52:~/goku$ docker-compose build app
ERROR: Invalid interpolation format for "build" option in service "app": "USER_ID=${id -u}"
我尝试过各种方法,包括$$(id-u)
,$(id-u)
,对于id-g
,我也尝试过同样的方法。两者都有相同的错误
我甚至尝试过使用环境
而不是args,例如:
services:
app:
build:
context: .
dockerfile: Dockerfile.dev
environment:
- REDIS_URL=redis://redis:6379/0
- USER_ID=$$(id -u)
- GROUP_ID=$$(id -g)
我还尝试了以下方法:
services:
app:
build:
context: .
dockerfile: Dockerfile.dev
args:
- REDIS_URL=redis://redis:6379/0
- USER_ID=$${id -u}
- GROUP_ID=$${id -g}
这就变成了这个错误:
Step 1/16 : FROM ruby:2.5.8-buster
---> fc5e02c64ca4
Step 2/16 : ARG USER_ID
---> Using cache
---> 6dcd7b5124a2
Step 3/16 : ARG GROUP_ID
---> Using cache
---> cf8d3e88a3a2
Step 4/16 : RUN groupadd --gid $GROUP_ID ubuntu
---> Running in ab3496006746
groupadd: invalid group ID '${id'
The command '/bin/sh -c groupadd --gid $GROUP_ID ubuntu' returned a non-zero code: 3
ERROR: Service 'app' failed to build
还是不走运。我认为你应该使用语音标记,因为有空格,当你的变量被扩展时,
REDIS\u URL
变量没有空格,也不会破坏你的脚本。简单地说一下,LewlSauce:一般来说,社区更喜欢没有闲聊或对话内容的贡献。Stack Overflow的编辑模式更接近维基百科,比如社交媒体网站或聊天室。问答作品打算保存数年,甚至数十年,因此不需要记录感谢、问候等。我有时会发布这样的建议:注意,我们更喜欢这里的技术写作风格。我们轻轻地劝阻问候,希望你能帮助,谢谢,提前感谢,感谢信,问候,亲切的问候,签名,请你能帮助,闲聊的材料和缩写的txtspk,恳求,你被困多久了,投票建议,元评论等。只需解释你的问题,并展示你已经尝试了什么,你期望什么,实际上发生了什么。