English | 中文
Minimal Ubuntu Docker image (supports 24.04 and 22.04) with:
zsh with powerlevel10k and common pluginstmux with the repo's .tmux configurationvim with gruvboxAsia/ShanghaiDEFAULT_UID and DEFAULT_GID, which make created files owned by the host user, especially when mounting volumesRun 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 alignmentOr run with root:
docker run -it --rm \
--name "${USER}-ubuntu-root" \
-u 0 \
wtyyy/ubuntu:24.04
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
-e DISPLAY: specify display for X11 forwarding-v "/tmp/.X11-unix:/tmp/.X11-unix": mount X11 socket for GUI--gpus all: enable all GPUs-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 networkIf 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 镜像,支持 24.04 和 22.04,包含:
zsh,预装 powerlevel10k 和常用插件tmux,使用仓库里的 .tmux 配置vim,使用 gruvboxAsia/ShanghaiDEFAULT_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-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
Content type
Image
Digest
sha256:3c184cf77…
Size
91.6 MB
Last updated
3 days ago
docker pull wtyyy/ubuntu:24.04