<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>Docker - 分类 - vllbc02&#39;s blogs</title>
        <link>https://blog.vllbc.top/categories/docker/</link>
        <description>Docker - 分类 - vllbc02&#39;s blogs</description>
        <generator>Hugo -- gohugo.io</generator><language>zh-CN</language><copyright>This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.</copyright><lastBuildDate>Mon, 20 Oct 2025 00:00:00 &#43;0000</lastBuildDate><atom:link href="https://blog.vllbc.top/categories/docker/" rel="self" type="application/rss+xml" /><item>
    <title>自创容器</title>
    <link>https://blog.vllbc.top/%E8%87%AA%E5%88%9B%E5%AE%B9%E5%99%A8/</link>
    <pubDate>Mon, 20 Oct 2025 00:00:00 &#43;0000</pubDate>
    <author>vllbc</author>
    <guid>https://blog.vllbc.top/%E8%87%AA%E5%88%9B%E5%AE%B9%E5%99%A8/</guid>
    <description><![CDATA[<h1 id="构建">构建</h1>
<p>通过镜像源拉去镜像</p>
<div class="sourceCode" id="cb1"><pre
class="sourceCode sql"><code class="sourceCode sql"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a>docker pull docker.m.daocloud.io<span class="op">/</span>nvidia<span class="op">/</span>cuda<span class="ch">:11</span>.<span class="fl">8.0</span><span class="op">-</span>cudnn8<span class="op">-</span>devel<span class="op">-</span>ubuntu22.</span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="dv">04</span></span></code></pre></div>
<p>创建Dockerfile，基于拉去的镜像创建自定义的镜像</p>
<div class="sourceCode" id="cb2"><pre
class="sourceCode sql"><code class="sourceCode sql"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a>mkdir ~<span class="op">/</span>docker<span class="op">-</span>projects<span class="op">/</span>gpu<span class="op">-</span>experiment<span class="op">/</span></span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a>cd ~<span class="op">/</span>docker<span class="op">-</span>projects<span class="op">/</span>gpu<span class="op">-</span>experiment<span class="op">/</span></span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a>vim Dockerfile</span></code></pre></div>
<div class="sourceCode" id="cb3"><pre
class="sourceCode markdown"><code class="sourceCode markdown"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="fu"># 1. 基础镜像：CUDA 11.8 + CuDNN 8 + 开发工具（devel）+ Ubuntu 22.04</span></span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a><span class="fu"># 保留devel版本以支持后续可能的编译需求，但仅包含最核心组件</span></span>
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a>FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04</span>
<span id="cb3-4"><a href="#cb3-4" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb3-5"><a href="#cb3-5" aria-hidden="true" tabindex="-1"></a><span class="fu"># 2. 关闭交互模式，避免安装时弹窗</span></span>
<span id="cb3-6"><a href="#cb3-6" aria-hidden="true" tabindex="-1"></a>ENV DEBIAN_FRONTEND=noninteractive</span>
<span id="cb3-7"><a href="#cb3-7" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb3-8"><a href="#cb3-8" aria-hidden="true" tabindex="-1"></a><span class="fu"># 3. 安装基础系统工具并添加sudo支持</span></span>
<span id="cb3-9"><a href="#cb3-9" aria-hidden="true" tabindex="-1"></a>RUN apt-get update &amp;&amp; apt-get install -y --no-install-recommends \</span>
<span id="cb3-10"><a href="#cb3-10" aria-hidden="true" tabindex="-1"></a>    apt-utils \</span>
<span id="cb3-11"><a href="#cb3-11" aria-hidden="true" tabindex="-1"></a>    openssh-client \</span>
<span id="cb3-12"><a href="#cb3-12" aria-hidden="true" tabindex="-1"></a>    # 基础shell工具</span>
<span id="cb3-13"><a href="#cb3-13" aria-hidden="true" tabindex="-1"></a>    bash curl wget ca-certificates \</span>
<span id="cb3-14"><a href="#cb3-14" aria-hidden="true" tabindex="-1"></a>    # 文本编辑工具</span>
<span id="cb3-15"><a href="#cb3-15" aria-hidden="true" tabindex="-1"></a>    vim nano \</span>
<span id="cb3-16"><a href="#cb3-16" aria-hidden="true" tabindex="-1"></a>    # 版本控制工具（后续拉代码用）</span>
<span id="cb3-17"><a href="#cb3-17" aria-hidden="true" tabindex="-1"></a>    git \</span>
<span id="cb3-18"><a href="#cb3-18" aria-hidden="true" tabindex="-1"></a>    # 基础编译工具（devel已包含大部分，这里补充必要的）</span>
<span id="cb3-19"><a href="#cb3-19" aria-hidden="true" tabindex="-1"></a>    build-essential \</span>
<span id="cb3-20"><a href="#cb3-20" aria-hidden="true" tabindex="-1"></a>    # 添加sudo支持</span>
<span id="cb3-21"><a href="#cb3-21" aria-hidden="true" tabindex="-1"></a>    sudo \</span>
<span id="cb3-22"><a href="#cb3-22" aria-hidden="true" tabindex="-1"></a>    # 清理缓存，保持镜像精简</span>
<span id="cb3-23"><a href="#cb3-23" aria-hidden="true" tabindex="-1"></a>    &amp;&amp; rm -rf /var/lib/apt/lists/*</span>
<span id="cb3-24"><a href="#cb3-24" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb3-25"><a href="#cb3-25" aria-hidden="true" tabindex="-1"></a><span class="fu"># 4. 配置用户和权限（与主机UID/GID匹配）</span></span>
<span id="cb3-26"><a href="#cb3-26" aria-hidden="true" tabindex="-1"></a><span class="fu"># 创建与主机相同GID的用户组</span></span>
<span id="cb3-27"><a href="#cb3-27" aria-hidden="true" tabindex="-1"></a><span class="fu"># 红色的部分需要根据自己主机的UID/GID进行修改。查看方式：在终端输入 id 命令即可。</span></span>
<span id="cb3-28"><a href="#cb3-28" aria-hidden="true" tabindex="-1"></a>RUN groupadd -g gid username &amp;&amp; \</span>
<span id="cb3-29"><a href="#cb3-29" aria-hidden="true" tabindex="-1"></a>    # 创建与主机相同UID的用户并加入组</span>
<span id="cb3-30"><a href="#cb3-30" aria-hidden="true" tabindex="-1"></a>    useradd -u uid -g gid -m -s /bin/bash username &amp;&amp; \</span>
<span id="cb3-31"><a href="#cb3-31" aria-hidden="true" tabindex="-1"></a>    # 允许该用户使用sudo且无需密码</span>
<span id="cb3-32"><a href="#cb3-32" aria-hidden="true" tabindex="-1"></a>    echo &quot;username ALL=(ALL) NOPASSWD:ALL&quot; &gt;&gt; /etc/sudoers</span>
<span id="cb3-33"><a href="#cb3-33" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb3-34"><a href="#cb3-34" aria-hidden="true" tabindex="-1"></a><span class="fu"># 5. 配置CUDA环境变量（确保后续在容器内编译时能找到CUDA）</span></span>
<span id="cb3-35"><a href="#cb3-35" aria-hidden="true" tabindex="-1"></a>ENV CUDA_HOME=/usr/local/cuda</span>
<span id="cb3-36"><a href="#cb3-36" aria-hidden="true" tabindex="-1"></a>ENV PATH=$CUDA_HOME/bin:$PATH</span>
<span id="cb3-37"><a href="#cb3-37" aria-hidden="true" tabindex="-1"></a>ENV LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH</span>
<span id="cb3-38"><a href="#cb3-38" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb3-39"><a href="#cb3-39" aria-hidden="true" tabindex="-1"></a><span class="fu"># 6. 创建工作目录并设置权限</span></span>
<span id="cb3-40"><a href="#cb3-40" aria-hidden="true" tabindex="-1"></a>RUN mkdir -p /workspace &amp;&amp; \</span>
<span id="cb3-41"><a href="#cb3-41" aria-hidden="true" tabindex="-1"></a>    chown -R username:username /workspace</span>
<span id="cb3-42"><a href="#cb3-42" aria-hidden="true" tabindex="-1"></a>WORKDIR /workspace</span>
<span id="cb3-43"><a href="#cb3-43" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb3-44"><a href="#cb3-44" aria-hidden="true" tabindex="-1"></a><span class="fu"># 7. 切换到普通用户（与主机用户匹配）</span></span>
<span id="cb3-45"><a href="#cb3-45" aria-hidden="true" tabindex="-1"></a>USER username</span>
<span id="cb3-46"><a href="#cb3-46" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb3-47"><a href="#cb3-47" aria-hidden="true" tabindex="-1"></a><span class="fu"># 8. 启动容器时直接进入bash，等待手动配置环境</span></span>
<span id="cb3-48"><a href="#cb3-48" aria-hidden="true" tabindex="-1"></a>CMD <span class="co">[</span><span class="ot">&quot;/bin/bash&quot;</span><span class="co">]</span></span></code></pre></div>
<p>给拉取的镜像打标签（与 Dockerfile 中的 FROM 一致）： 因为 Dockerfile
中写的是
<code>nvidia/cuda:xxx</code>，需要将手动拉取的镜像重命名为该标签，否则构建时仍会去官方源拉取</p>]]></description>
</item>
</channel>
</rss>
