bash - 权限错误 - MacOS - 打开 /Users/username/.docker/.token_seed: 权限被拒绝
问题描述
我对Docker
和比较bash
陌生macOS
。
当我运行bash
正在执行某些自动化和运行的脚本时,出现权限被拒绝错误docker-compose
。如果我运行它,它可以工作,sudo
但我需要在没有sudo
工作任务的情况下运行它。最初,此bash
脚本会在较早的某个地方出现错误,copy
并出现权限被拒绝错误(没有sudo
),但我设法通过运行chown -R $USER:$USER /path/to/directory
where /path/to/directory
is where this bash
script 来解决此问题。
我需要在bash
没有sudo
. 从下图中可以看出,该命令与sudo
(绿色)一起使用。脚本在没有运行时失败,sudo
如红色所示。
我该怎么做才能摆脱红色下划线的权限被拒绝错误?提前致谢。
解决方案
在 docker compose 和 dockerfiles 中,默认用户是 root。使用与运行脚本相同的用户。您可以以您在容器主机上登录的用户身份运行容器。
您可以在主机上创建具有相同 ID 的相同用户,建议在使用 docker 卷时这样做。
例如,
运行 docker build 时
docker image build \
--build-arg USER_ID=$(id -u ${USER}) \
--build-arg GROUP_ID=$(id -g ${USER}) \
-t php_test \
.
如果您想以同一用户身份运行脚本,您在主机上使用的用户将传递到 docker 容器。
码头工人文件
FROM jtreminio/php:7.2
ARG USER_ID
ARG GROUP_ID
RUN if [ ${USER_ID:-0} -ne 0 ] && [ ${GROUP_ID:-0} -ne 0 ]; then \
userdel -f www-data &&\
if getent group www-data ; then groupdel www-data; fi &&\
groupadd -g ${GROUP_ID} www-data &&\
useradd -l -u ${USER_ID} -g www-data www-data &&\
install -d -m 0755 -o www-data -g www-data /home/www-data
和参数被传递,容器的用户和组被删除,并使用运行 docker build 命令时提供的参数再次创建USER_ID
。GROUP_ID
你的场景你可能不需要走这么远。以下文章中的代码示例https://jtreminio.com/blog/running-docker-containers-as-current-host-user/
推荐阅读
- python - python中不同模块的多个日志文件
- angular - Angular 5 - 两个不同组件中的异步服务调用(第一种方法不等待数据库响应)
- markdown - 带有图形参考的降价和 pandoc-citeproc 失败
- python - Django:将外键限制为仅具有相同ID的行
- mysql - 库存系统/任务系统的正确计数
- node.js - 我可以将一组对象发送到控制器中的视图,与 node/express/mongoose 中的 mongodb 对象相关联吗?
- sql - Comparing between two dates in Oracle DB is not giving proper result
- javascript - Dynamic YouTube Video page - Get current Video ID & Title
- ios - Xamarin application does not work in ad-hoc mode
- authentication - Xamarin.Auth 或 IdentityModel + IdentityServer4