docker - 尝试在 docker 容器中运行 GUI 时为什么出现“无效的参考格式”?
问题描述
我是 docker 新手,正在尝试启动并运行 firefox GUI。我拥有的 Dockerfile 是:
FROM ubuntu:21.10
RUN apt-get update
RUN apt-get install -y firefox
RUN groupadd -g GID <USERNAME>
RUN useradd -d /home/<USERNAME> -s /bin/bash \
-m <USERNAME> -u UID -g GID
USER <USERNAME>
ENV HOME /home/<USERNAME>
CMD /usr/bin/firefox
...其中 UID 是 userID 而 GID 是 groupID
然后我构建:
$> docker build -t gui .
映像构建成功完成。然后我做:
$> docker run -v /tmp/.X11-unix:/tmp/.X11-unix \
-h $HOSTNAME -v $HOME/.Xauthority:/home/$USER/.Xauthority \
-e DISPLAY=$DISPLAY gui
此时我收到错误:“docker:无效的引用格式:存储库名称必须为小写。”
就好像 docker 试图解释 X 服务器目录绑定并将变量设置显示为存储库名称一样。
我做错了什么?提前致谢...
解决方案
事实上,您得到的错误告诉您 docker 无法理解引用,即您尝试运行的图像的名称。正如David Maze所解释的那样。他提议通过echo
命令对其进行调试。
如果您遵循他的建议,例如在您的命令中如果$HOSTNAME
未定义,您将看到带有变量扩展的命令,并且能够看到如果启动它将导致观察到的错误。要修复它,您可以引用您的变量(始终是防止错误的好建议)并检查每个变量是否已定义。在你的情况下,失踪$HOSTNAME
是我最好的猜测。
docker run -v /tmp/.X11-unix:/tmp/.X11-unix -h -v /Users/xxx/.Xauthority:/home/xxx/.Xauthority -e DISPLAY=/mydisplay gui
# docker: invalid reference format: repository name must be lowercase.
推荐阅读
- r - 显示和动画谷歌热图?
- debugging - 尝试通过 gdb 设置断点时无法访问地址 0x10084 处的内存
- r - 修剪空格后R无法修复变音符号编码
- azure - 如何通过 Azure DevOps 部署逻辑应用代码?
- git - 如何在保留文件历史记录的同时合并两个分支的目录(下的文件)?
- python - 非阻塞命令进程
- sql-server - T-SQL:选择最大年份,然后使用 CTE 选择最大序列
- angular - 将组件订阅到服务的 observable 时的最佳实践是什么?[角度 2+]
- sql - SQL Developer - 带有显示多个平均值的 AVG 计算的 SELECT 语句?
- php - PHPInfo / Valet - 两个不同的 PHP 版本