Sign inSign up

wtyyy/ubuntu

By wtyyy

•Updated 3 days ago

Image
0

2.0K

wtyyy/ubuntu repository overview

English | 中文⁠

⁠Ubuntu Docker Image

⁠Contents

⁠Overview

Minimal Ubuntu Docker image (supports 24.04 and 22.04) with:

  • zsh with powerlevel10k and common plugins
  • tmux with the repo's .tmux configuration
  • vim with gruvbox
  • timezone with Asia/Shanghai
  • running by user specified DEFAULT_UID and DEFAULT_GID, which make created files owned by the host user, especially when mounting volumes

⁠Run

⁠Basic Example

Run Ubuntu 24.04 with host UID/GID alignment:

docker run -it --rm \
  --name "${USER}-ubuntu" \
  -e DEFAULT_UID="$(id -u)" \
  -e DEFAULT_GID="$(id -g)" \
  wtyyy/ubuntu:24.04
  • -it: interactive terminal
  • --rm: remove container after exit
  • --name: container name
  • -e DEFAULT_UID and -e DEFAULT_GID: pass host user UID and GID for file permission alignment

Or run with root:

docker run -it --rm \
  --name "${USER}-ubuntu-root" \
  -u 0 \
  wtyyy/ubuntu:24.04
⁠Render Example

Install nvidia-container-toolkit⁠ first to enable NVIDIA GPU support in Docker.

Run xhost +local:docker on host first to allow accessing X11 from Docker container.

Example USER with X11 GUI support + NVIDIA GPU + Vulkan + host network + input devices:

docker run -it --name "${USER}-ubuntu" \
  -e DEFAULT_UID="$(id -u)" \
  -e DEFAULT_GID="$(id -g)" \
  -e DISPLAY \
  --gpus all \
  -v "/tmp/.X11-unix:/tmp/.X11-unix" \
  -e NVIDIA_DRIVER_CAPABILITIES=all \
  -e "__NV_PRIME_RENDER_OFFLOAD=1" \
  -e "__GLX_VENDOR_LIBRARY_NAME=nvidia" \
  -v /etc/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json:ro \
  --device /dev/input \
  -e EXTRA_GIDS="$(getent group input | cut -d: -f3)" \
  --net=host \
  wtyyy/ubuntu:24.04 zsh
  • X11:
    • -e DISPLAY: specify display for X11 forwarding
    • -v "/tmp/.X11-unix:/tmp/.X11-unix": mount X11 socket for GUI
  • --gpus all: enable all GPUs
  • NVIDIA environment variables for GPU rendering and Vulkan support
    • -e NVIDIA_DRIVER_CAPABILITIES=all: enable all NVIDIA driver capabilities
    • -e "__NV_PRIME_RENDER_OFFLOAD=1": for NVIDIA PRIME render offload
    • -e "__GLX_VENDOR_LIBRARY_NAME=nvidia": use NVIDIA GLX library
    • -v /etc/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json:ro: mount NVIDIA Vulkan ICD for Vulkan support
  • --device /dev/input and -e EXTRA_GIDS="$(getent group input | cut -d: -f3)": allow access to input devices and add input group for permissions
  • --net=host: use host network

If needed, add -v /path/to/Coding/:/home/user/Coding to mount a local directory into the container.

If you exit the container and want to enter it again later:

docker start ${USER}-ubuntu
docker exec -it ${USER}-ubuntu zsh

⁠中文

⁠Ubuntu Docker Image

⁠目录

⁠概览

精简版 Ubuntu Docker 镜像,支持 24.04 和 22.04,包含:

  • zsh,预装 powerlevel10k 和常用插件
  • tmux,使用仓库里的 .tmux 配置
  • vim,使用 gruvbox
  • 时区为 Asia/Shanghai
  • 支持通过 DEFAULT_UID 和 DEFAULT_GID 指定运行用户,尤其在挂载宿主机目录时,可让新建文件保持宿主机用户权限

⁠运行

⁠基础示例

按宿主机 UID/GID 对齐运行 Ubuntu 24.04:

docker run -it --rm \
  --name "${USER}-ubuntu" \
  -e DEFAULT_UID="$(id -u)" \
  -e DEFAULT_GID="$(id -g)" \
  wtyyy/ubuntu:24.04
  • -it:交互终端
  • --rm:退出后自动删除容器
  • --name:容器名称
  • -e DEFAULT_UID 和 -e DEFAULT_GID:传入宿主机用户 UID/GID,用于文件权限对齐

以 root 运行:

docker run -it --rm \
  --name "${USER}-ubuntu-root" \
  -u 0 \
  wtyyy/ubuntu:24.04
⁠渲染示例

先安装 nvidia-container-toolkit⁠,才能在 Docker 中启用 NVIDIA GPU 支持。

带 X11 图形界面、NVIDIA GPU、Vulkan、host 网络和输入设备的普通用户示例:

docker run -it --name "${USER}-ubuntu" \
  -e DEFAULT_UID="$(id -u)" \
  -e DEFAULT_GID="$(id -g)" \
  -e DISPLAY \
  --gpus all \
  -e NVIDIA_DRIVER_CAPABILITIES=all \
  -e "__NV_PRIME_RENDER_OFFLOAD=1" \
  -e "__GLX_VENDOR_LIBRARY_NAME=nvidia" \
  -v /etc/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json:ro \
  -v "/tmp/.X11-unix:/tmp/.X11-unix" \
  --device /dev/input \
  -e EXTRA_GIDS="$(getent group input | cut -d: -f3)" \
  --net=host \
  wtyyy/ubuntu:24.04 zsh
  • -e DISPLAY:指定 X11 转发显示
  • --gpus all:启用全部 GPU
  • NVIDIA 环境变量用于 GPU 渲染和 Vulkan 支持
    • -e NVIDIA_DRIVER_CAPABILITIES=all:启用全部 NVIDIA 驱动能力
    • -e "__NV_PRIME_RENDER_OFFLOAD=1":用于 NVIDIA PRIME render offload
    • -e "__GLX_VENDOR_LIBRARY_NAME=nvidia":使用 NVIDIA GLX 库
    • -v /etc/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json:ro:挂载 NVIDIA Vulkan ICD 以支持 Vulkan
  • -v "/tmp/.X11-unix:/tmp/.X11-unix":挂载 X11 socket 以支持 GUI
  • --device /dev/input 和 -e EXTRA_GIDS="$(getent group input | cut -d: -f3)":允许访问输入设备并将用户加入 input 组以获取权限
  • --net=host:使用宿主机网络

如果需要挂载本地工作目录,可追加:

-v /path/to/Coding/:/home/user/Coding

退出后重新进入已有容器:

docker start ${USER}-ubuntu
docker exec -it ${USER}-ubuntu zsh

Tag summary

Content type

Image

Digest

sha256:3c184cf77…

Size

91.6 MB

Last updated

3 days ago

docker pull wtyyy/ubuntu:24.04