在 Docker 中 的 “ 完 整 “Ubuntu 开 发 环 境 容 器

Wed 24 September 2025

尽 管 Docker/Podman 容 器 的 使 用 方 式 与 虚 拟 机 不 同 , 但 对 于 . 开 发 环 境 “, 我 们 还 是 倾 向 于 将 其 当 作 虚 拟 机 来 使 用 , 就 如 同 物 理 机 器 一 样 。 但 全 虚 拟 化 的 虚 拟 机 ( 如 kvm) 还 是 会 对 性 能 有 影 响 , 尤 其 是 对 于 /O 宿 集 型 应 用 ,LXC/LXD 应 当 是 不 错 的 选 择 , 但 实 际 上 在 装 机 必 备 “ 的 Docker 上 , 也 是 能 实 现 这 样 的 功 能 。

@ @ @ wusiyu@9dab0b085b97: ~ [ 】 Reached target MuLti-User System. [ ]】 Reached target Graphtcal Interface.

Starting Update UTMP about System Runlevel Changes … [ ] Finished Update UTMP about System RunlLevel Changes.

Ubuntu 28.84.2 LTS 9dab8b885b97 console

9dab8b885b97 login: wusiyu Passmord : Welcome to Ubuntu 28.84.2 LTS CGNU/Linux 5.13.9-2880.fc34.x86_64 x86_64)

  • Documentation: “https://help.ubuntu.com
  • Management : https://Landscape.canonical .com
  • Support: httpS://ubuntu.com/advantage

The programs included with the Ubuntu System are free software ; the exact distribution terms for each program are described in the inditvidual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO MARRANTY,to the extent permitted by applicable law. WuStyuG9dab8b885b97:~$

F 98

这 是 个 Docker 容 器

下 方 的 Dockerfile 就 描 述 了 一 个 这 样 的 . 完 整 “Ubuntu 容 器 , 其 像 标 准 Ubuntu 一 样 由 systemd 作 为 init, 并 运 行 SSH 服 务 器 , 以 更 方 便 的 远 程 访 问 , 或 远 程 使 用 vscode remote。 其 还 创 建 了 一 个 普 通 用 广 , 用 户 名 、UID 和 GID 可 以 与 你 宿 主 机 上 保 持 一 致 , 以 更 方 便 的 共 享 文 件 。

Github Gist: https://gist.github.com/WuSiyYu/bbee5788242bcb99b9acbe5257aae 522

FROM ubuntu: Latest LABEL maintainer=“5iYu Nu

ENV DEV_USER=user

ENV UID=1000

ENV GID=1000

ENV DEF _PASSNWD=password ENV TZ=Asia/Shanghai ENV LANG=en_US .UTF-8

RUN L1n -snf /usr/share/zoneinfo/$7Z /etc/Localtime && echo $T2Z

/etc/timezone && 飞

yes | unminimize && 飞

apt install -Yy systemd sudo openssh-server bash-completion ZzSh git _ curl Vim && 飞

addgroup --gid $GID $DEV_USER &&

adduser --uid $UID --gid $GID --gecos ““ --disabled- password $DEV_USER && 飞

usermod -aG Sudo $DEV_USER &&

echo “$DEV_USER:$DEF_PASSNWD“ | chpasswd && \

systemctl mask systemd-resolved.serVice && 飞

echo“LANG=SLANG“> /etc/defauLt/Locale &&

cp _/usr/share/doc/util-Linux/examples/securetty /etc/securetty

CMD _[“systemd“ ]

在 标 准 Ubuntu Docker 镜 像 基 础 上 , 执 行 了 以 下 操 作 :

。 设 置 时 区 。 去 . 精 简 化 “ 。 安 装 systemd、sudo、SSH 服 务 器 、bash 自 动 补 全 和 一 些 其 他 工

。 新 建 用 户 并 赋 予 sudo 权 限

。 禁 用 systemd-resolved.service, 因 为 Docker 已 经 为 我 们 配 置 好 了 容 器 的 DNS

。 设 置 语 言

。 补 全 /etc/securetty

使 用 示 例

为 保 证 镜 像 的 安 全 性 ( 更 新 及 时 ) , 未 维 护 Docker Hub 上 维 护 镜 像 , 请 自 行 构 建 构 建 镜 像

Sudo docker build -t devbox:V0 .1 。

启 动 镜 像 ( 非 特 权 模 式 )

需 要 赋 予 容 器 audit ( 审 计 信 息 ) 写 入 权 限 , 否 则 容 器 的 ssh、sudo 等 软 件 会 工 作 不 正 常

sudo docker run -d -it --cap-add AUDIT_NWRITB --name devbox -- publish 8022:22 --hostname devbox -V ./data: /data: Z devbox

启 动 镜 像 ( 特 权 模 式 )

sudo podman run -it --name devbox --publish 8022 :22 --hostname devbox -V ./data: /data --PriviLeged devbox 请 自 构 建 镜 像

Sudo docker build -t devbox:V0 .1 。

启 动 镜 像 ( 非 特 权 模 式 )

需 要 赋 予 容 器 audit ( 审 计 信 息 ) 写 入 权 限 , 否 则 容 器 的 ssh、sudo 等 软 件 会 工 作 不 正 常

sudo docker run -d -it --cap-add AUDIT_NWRITB --name devbox -- publish 8022:22 --hostname devbox -V ./data: /data: z devbox

启 动 镜 像 ( 特 权 模 式 )

sudo podman run -it --name devbox --publish 8022 :22 --hostname devbox -V ./data: /data --PriviLeged devbox

限 制 与 可 选 操 作

首 先 此 方 法 的 隔 离 型 「 不 如 Ixc/Ixd 方 式 , 哪 怕 是 非 特 权 模 式 , 容 器 的 audit 信 息 也 会 被 写 入 到 host ( 若 禁 止 则 会 导 致 容 器 工 作 不 正 常 ) , 大 概 是 因 为 Docker 本 身 就 没 有 对 此 进 行 隔 离 。

仪 这 是 因 为 ubuntu 的 官 方 docker 镜 像 中 禁 用 了 apt 的 一 些 缓 存 功 能 , 以 避 免 在 构 建 镜 像 时 产 生 一 些 无 用 的 缓 存 。 考 虑 到 容 器 巳 伟 此 处 保 留 了 这 个 特 性 。 如 果 你 希 望 能 正 常 使 用 软 件 包 名 自 动 补 全 0 删

除 /etc/apt/apt.conf.d/docker-clean 文 件 即 可

Category: 杂物