visual-studio-code - VS Code 远程容器:无法创建目录“/home/appuser”:
问题描述
我正在尝试使用 Visual Studio Code 的Remote - Containers 扩展,但是当我“在容器中打开文件夹”时,我收到此错误:
Run: docker exec 0d0c1eac6f38b81566757786f853d6f6a4f3a836c15ca7ed3a3aaf29b9faab14 /bin/sh -c set -o noclobber ; mkdir -p '/home/appuser/.vscode-server/data/Machine' && { > '/home/appuser/.vscode-server/data/Machine/.writeMachineSettingsMarker' ; } 2> /dev/null
mkdir: cannot create directory ‘/home/appuser’: Permission denied
我的 Dockerfile 使用:
FROM python:3.7-slim
...
RUN useradd -ms /bin/bash appuser
USER appuser
我也试过:
RUN adduser -D appuser
RUN groupadd -g 999 appuser && \
useradd -r -u 999 -g appuser appuser
USER appuser
如果我直接构建它们,这两种方法都有效。我怎样才能让它工作?
解决方案
进入您的 WSL2 并使用命令 id 检查您的本地 uid(非 root)是什么。就我而言,它是 UID=1000(ubuntu)。将您的 dockerfile 更改为以下内容:
# For more information, please refer to https://aka.ms/vscode-docker-python
FROM python:3.8-slim-buster
# Keeps Python from generating .pyc files in the container
ENV PYTHONDONTWRITEBYTECODE=1
# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1
# Install pip requirements
COPY requirements.txt .
RUN python -m pip install -r requirements.txt
WORKDIR /home/ubuntu
COPY . /home/ubuntu
# Creates a non-root user and adds permission to access the /app folder
# For more info, please refer to https://aka.ms/vscode-docker-python-configure-containers
RUN useradd -u 1000 ubuntu && chown -R ubuntu /home/ubuntu
USER ubuntu
# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug
CMD ["python", "app.py"]
推荐阅读
- dataframe - 如何根据其他列的条件用另一列的值填充 pyspark 数据框中的列
- java - 如何正确同步两个线程
- python-3.x - 使用递归进行网络抓取 - 将返回函数放在哪里
- android-layout - 当其他文本视图垂直扩展时,如何使文本视图始终显示在屏幕上?
- c# - xml 子元素节点或属性值
- kubernetes - Pod 内网 HTTPS 请求失败
- vue.js - 如何解决 Vue.js 中的“相邻 JSX 元素必须包含在封闭标记中”问题
- jhipster - 如何在 jHipster 中获取当前用户?
- xamarin - 我可以仅使用 Xamarin 创建 Android 应用吗
- android - 如何在相机预览打开时(以编程方式)保持手电筒开启