modified | Thursday 1 May 2025 |
---|
在 Docker 中 的 “ 完 整 “Ubuntu 开 发 环 境 容 器
尽 管 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)
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/WuSiyY…
522
FROM ubuntu: Latest
LABEL maintainer=“5iYu Nu <wu.58iyuehotmail .com>“
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 文 件 即 可