首页 > 解决方案 > 尝试在 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

解决方案


事实上,您得到的错误告诉您 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.

推荐阅读