娟丫 發表於 2026-1-5 09:51:26

docker 容器HostConfig 字段示例详解

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">一、具体字段</a></li><li><a href="#_label1">二、 示例</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_0">2.1、Binds</a></li><li><a href="#_lab2_1_1">2.2、ContainerIDFile</a></li><li><a href="#_lab2_1_2">2.3、LogConfig</a></li><ul class="third_class_ul"><li><a href="#_label3_1_2_0">2.3.1、日志驱动支持的通用选项</a></li><li><a href="#_label3_1_2_1">2.3.2、常见日志驱动及其配置示例</a></li></ul></ul><li><a href="#_label2">三、HostConfig 和Config 差异</a></li><ul class="second_class_ul"><li><a href="#_lab2_2_3">3.1、Config 字段</a></li><ul class="third_class_ul"><li><a href="#_label3_2_3_2">3.1.1、 作用</a></li><li><a href="#_label3_2_3_3">3.1.2、特点</a></li><li><a href="#_label3_2_3_4">3.1.3、 使用场景</a></li></ul><li><a href="#_lab2_2_4">3.2、 HostConfig 字段</a></li><ul class="third_class_ul"><li><a href="#_label3_2_4_5">3.2.1、 作用</a></li><li><a href="#_label3_2_4_6">3.2.2、特点</a></li><li><a href="#_label3_2_4_7">3.2.3、 使用场景</a></li></ul><li><a href="#_lab2_2_5">3.3、 核心差异对比</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_2_6">3.4、 关键区别总结</a></li><ul class="third_class_ul"></ul><li><a href="#_lab2_2_7">3.5、 典型使用场景</a></li><ul class="third_class_ul"></ul></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2>一、具体字段</h2>
<table><thead><tr><th>字段名称</th><th>含义</th><th>作用</th></tr></thead><tbody><tr><td>Binds</td><td>绑定挂载列表(-v 或 --mount)</td><td>将主机目录/文件挂载到容器内</td></tr><tr><td>ContainerIDFile</td><td>存储容器 ID 的文件路径</td><td>将容器 ID 写入指定文件</td></tr><tr><td>LogConfig</td><td>日志驱动和选项配置(如 json-file、syslog)</td><td>定义容器日志的存储方式</td></tr><tr><td>NetworkMode</td><td>网络模式(如 <code>host、bridge、none</code>)</td><td>控制容器的网络隔离级别</td></tr><tr><td>PortBindings</td><td>端口映射配置(-p 参数)</td><td>将容器端口绑定到主机端口</td></tr><tr><td>RestartPolicy</td><td>重启策略(如 always、on-failure)</td><td>定义容器异常退出后的重启行为</td></tr><tr><td>AutoRemove</td><td>容器退出后自动删除</td><td>避免残留容器占用磁盘空间</td></tr><tr><td>VolumeDriver</td><td>卷驱动(如 local、nfs)</td><td>定义卷的存储后端</td></tr><tr><td>VolumesFrom</td><td>从其他容器挂载卷</td><td>共享另一个容器的卷</td></tr><tr><td>CapAdd/CapDrop</td><td>添加/移除 Linux 内核能力(如 CAP_NET_ADMIN)</td><td>控制容器的权限范围</td></tr><tr><td>CgroupnsMode</td><td>Cgroup 命名空间模式(如 host、private)</td><td>控制容器的资源隔离级别</td></tr><tr><td>Dns/DnsOptions/DnsSearch</td><td>自定义 DNS 配置</td><td>覆盖容器的 DNS 设置</td></tr><tr><td>ExtraHosts</td><td>自定义主机名解析</td><td>绕过 DNS 直接映射IP</td></tr><tr><td>IpcMode</td><td>IPC(进程间通信)模式(如 host、shareable)</td><td>控制容器的 IPC 资源隔离</td></tr><tr><td>Links</td><td>链接其他容器(&ndash;link 参数)</td><td>实现容器间的服务发现</td></tr><tr><td>OomScoreAdj</td><td>OOM(内存不足)优先级</td><td>控制容器在内存不足时被终止的顺序</td></tr><tr><td>PidMode</td><td>PID 命名空间模式(如 host、container)</td><td>控制容器的进程可见性</td></tr><tr><td>Privileged</td><td>是否赋予容器所有内核权限</td><td>允许执行特权操作(如加载内核模块)</td></tr><tr><td>PublishAllPorts</td><td>自动发布容器暴露的端口</td><td>将 EXPOSE 指令声明的端口映射到主机随机端口</td></tr><tr><td>ReadonlyRootfs</td><td>根文件系统是否只读</td><td>防止容器修改文件系统</td></tr><tr><td>SecurityOpt</td><td>安全选项(如 label:disable)</td><td>控制 <code>SELinux/AppArmor </code>策略</td></tr><tr><td>UTSMode</td><td>UTS(主机名和域名)命名空间模式(如 host)</td><td>控制容器的主机名设置</td></tr><tr><td>UsernsMode</td><td>用户命名空间模式(如 host、mapped)</td><td>控制用户 ID 映射</td></tr><tr><td>ShmSize</td><td>共享内存大小(/dev/shm)</td><td>限制容器的共享内存使用</td></tr><tr><td>Runtime</td><td>容器运行时(如 <code>runc、containerd</code>)</td><td>切换容器执行引擎</td></tr><tr><td>CpuShares</td><td>CPU 权重(相对值,非硬性限制)</td><td>控制 CPU 资源分配比例</td></tr><tr><td>Memory</td><td>内存硬限制(单位:字节)</td><td>限制容器的最大内存使用</td></tr><tr><td>NanoCpus</td><td>CPU 配额(纳秒,用于 CFS)</td><td>限制容器的 CPU 使用时间</td></tr><tr><td>BlkioWeight</td><td>块设备 I/O 权重</td><td>控制 I/O 资源分配比例</td></tr><tr><td>PidsLimit</td><td>最大进程数限制</td><td>限制容器的进程数量</td></tr><tr><td>CgroupParent</td><td>Cgroup 父命名空间</td><td>自定义资源分组</td></tr><tr><td>HugepageLimits</td><td>大页内存限制</td><td>限制大页内存使用</td></tr><tr><td>OomKillDisable</td><td>是否禁用 OOM Killer</td><td>控制容器在内存不足时是否被终止</td></tr><tr><td>CpuPeriod/CpuQuota</td><td>CPU 周期和配额(用于 CFS)</td><td>精细控制 CPU 使用</td></tr><tr><td>CpusetCpus/CpusetMems</td><td>CPU/Memory 分配</td><td>指定容器可用的 CPU 核心和内存节点</td></tr><tr><td>Devices</td><td>设备白名单</td><td>控制容器可访问的设备</td></tr><tr><td>ConsoleSize</td><td>控制台窗口大小(行数 x 列数)</td><td>设置容器的终端尺寸</td></tr><tr><td>Isolation</td><td>隔离模式(仅 Windows 容器)</td><td>控制容器的隔离级别</td></tr><tr><td>BlkioWeightDevice</td><td>块设备 I/O 权重(按设备区分)</td><td>控制不同设备的 I/O 权重</td></tr><tr><td>MemorySwap</td><td>内存交换空间大小</td><td>限制容器可使用的 swap 内存</td></tr><tr><td>MemorySwappiness</td><td>内存交换倾向(0-100)</td><td>控制内存页交换比例</td></tr><tr><td>Ulimits</td><td>用户资源限制(如 nofile)</td><td>限制容器的资源使用</td></tr><tr><td>CpuCount</td><td>CPU 核心数限制</td><td>限制容器可使用的 CPU 核心数</td></tr><tr><td>CpuPercent</td><td>CPU 百分比限制</td><td>限制容器的 CPU 使用百分比</td></tr><tr><td>IOMaximumIOps</td><td>最大 IOPS 限制</td><td>控制容器的 I/O 性能</td></tr><tr><td>IntelRdtL3Cbm</td><td>Intel RDT L3 缓存带宽管理</td><td>优化多租户场景的缓存使用</td></tr><tr><td>MaskedPaths</td><td>隐藏主机文件路径</td><td>提升安全性</td></tr><tr><td>ReadonlyPaths</td><td>只读挂载主机文件路径</td><td>提升安全性</td></tr></tbody></table>
<p class="maodian"><a name="_label1"></a></p><h2>二、 示例</h2>
<p class="maodian"><a name="_lab2_1_0"></a></p><h3>2.1、Binds</h3>
<p>使用 <code>docker run -v /host/path:/container/path</code> 生成</p>
<ul><li>宿主机和容器内目录存在</li></ul>
<div class="jb51code"><pre class="brush:bash;">$ docker run -itd -v /tmp/test:/tmpcentos:1.0 /bin/bash
d6cd7fec98616490b424aa864ac3ecfeeb48e88f08f030bff2c9eb3690fbe93e
$ docker inspect -f {{.HostConfig.Binds}} d6cd7fec986164

$ docker inspect d6cd7fec986164 | grep -A 3 Binds
            "Binds": [
                "/tmp/test:/tmp"
            ],
            "ContainerIDFile": "",</pre></div>
<ul><li>宿主机目录不存在,容器引擎会创建这个目录</li></ul>
<div class="jb51code"><pre class="brush:bash;">$ ll /tmp/ | grep test
drwxr-xr-x 3 rootroot4096 Jul 28 19:06 busyboxtest
drwxr-xr-x 2 rootroot4096 Jan4 13:53 test
$ docker run -itd -v /tmp/test02:/tmpcentos:1.0 /bin/bash
da13bd92f79305476d9ada242347aa098ee5c3c981169131326db9ad07c43c32
$ ll /tmp/ | grep test
drwxr-xr-x 3 rootroot4096 Jul 28 19:06 busyboxtest
drwxr-xr-x 2 rootroot4096 Jan4 13:53 test
drwxr-xr-x 2 rootroot4096 Jan4 13:59 test02</pre></div>
<ul><li>容器目录不存在,容器引擎也会创建这个目录</li></ul>
<div class="jb51code"><pre class="brush:bash;">$ docker run -itd -v /tmp/test02:/tmp/test03centos:1.0 /bin/bash
29db9a19a835325df6be4645b855dfd579cb7bbcde578e7b33b019d69c79ff22
$ docker exec -it 29db9a19a ls -l /tmp
total 4
drwxr-xr-x 2 root root 4096 Jan4 13:59 test03</pre></div>
<ul><li>总结</li></ul>
<table><thead><tr><th>情况</th><th>宿主机目录</th><th>容器目录</th><th>挂载结果</th><th>注意事项</th></tr></thead><tbody><tr><td>宿主机目录存在,容器目录不存在</td><td>✅</td><td>❌</td><td>容器目录自动创建,挂载成功</td><td>容器目录内容被宿主机目录覆盖</td></tr><tr><td>宿主机目录不存在,容器目录存在</td><td>❌</td><td>✅</td><td>宿主机目录自动创建(权限允许时)</td><td>可能因权限问题挂载失败</td></tr><tr><td>宿主机和容器目录都不存在</td><td>❌</td><td>❌</td><td>两者自动创建(权限允许时</td><td>) 宿主机目录权限不足时挂载失败</td></tr><tr><td>宿主机和容器目录都存在</td><td>✅</td><td>✅</td><td>容器目录内容被宿主机目录覆盖</td><td>宿主机目录内容优先级更高</td></tr></tbody></table>
<p class="maodian"><a name="_lab2_1_1"></a></p><h3>2.2、ContainerIDFile</h3>
<p>使用 <code>--cidfile=/path/to/cidfile</code> 生成</p>
<div class="jb51code"><pre class="brush:bash;">$ docker run -itd --cidfile=/tmp/cid.txtcentos:1.0 /bin/bash
0a7cb18828951e3ed53b546dbef840c141503cae479113caa7e35ece18b25ce1
$ cat /tmp/cid.txt
0a7cb18828951e3ed53b546dbef840c141503cae479113caa7e35ece18b25ce1
$ docker inspect -f {{.HostConfig.ContainerIDFile}} 0a7cb188289
/tmp/cid.txt</pre></div>
<p class="maodian"><a name="_lab2_1_2"></a></p><h3>2.3、LogConfig</h3>
<p>使用 <code>--log-driver=json-file --log-opt max-size=10m</code> 生成</p>
<div class="jb51code"><pre class="brush:bash;">$ docker run -itd --log-driver=json-file --log-opt max-size=10mcentos:1.0 /bin/bash
b12b7ebd0566af9121e780e92c78a26d95bb2fac608fdf1c4f19f72845351639
$ docker inspect -f {{.HostConfig.LogConfig}} 0a7cb188289
{json-file map[]}
$ docker inspect b12b7ebd0566a | grep -A 5 LogConfig
            "LogConfig": {
                "Type": "json-file",
                "Config": {
                  "max-size": "10m"
                }
            },</pre></div>
<p>常见的日志驱动包括json-file、local、syslog、journald、gelf等。每个驱动支持的选项不同:</p>
<div class="jb51code"><pre class="brush:bash;">$ docker run -itd --log-driver=local --log-opt max-size=10mcentos:1.0 /bin/bash
de4561e95b46f68bae0bf892f6f582a5e2c6ec1cb00f114792c35ca7a469fa08
$ docker inspect de4561e95b46 | grep -A 5 LogConfig
            "LogConfig": {
                "Type": "local",
                "Config": {
                  "max-size": "10m"
                }
            },</pre></div>
<p class="maodian"><a name="_label3_1_2_0"></a></p><h4>2.3.1、日志驱动支持的通用选项</h4>
<table><thead><tr><th>选项名称</th><th>作用</th><th>适用驱动</th></tr></thead><tbody><tr><td>max-size</td><td>单个日志文件的最大大小(单位:b, k, m, g)</td><td>json-file, local</td></tr><tr><td>max-file</td><td>保留的最大日志文件数量</td><td>json-file, local</td></tr><tr><td>tag</td><td>为日志添加标识符(用于区分来源)</td><td>所有驱动</td></tr><tr><td>env</td><td>包含指定环境变量到日志中</td><td>json-file, syslog</td></tr><tr><td>env-regex</td><td>使用正则表达式匹配环境变量</td><td>json-file, syslog</td></tr><tr><td>labels</td><td>包含指定标签到日志中</td><td>json-file, syslog</td></tr><tr><td>label-regex</td><td>使用正则表达式匹配标签</td><td>json-file, syslog</td></tr><tr><td>compress</td><td>是否压缩旧日志文件(仅 json-file)</td><td>json-file</td></tr><tr><td>format</td><td>定义日志格式(如 json, text)</td><td>json-file</td></tr><tr><td>mode</td><td>日志文件权限模式(如 0640)</td><td>json-file</td></tr><tr><td>path</td><td>自定义日志文件路径(需与 json-file 驱动配合)</td><td>json-file</td></tr><tr><td>tag-field</td><td>指定日志中的标签字段名</td><td>json-file</td></tr><tr><td>timestamp-format</td><td>自定义日志时间戳格式(如 iso8601)</td><td>json-file</td></tr><tr><td>syslog-address</td><td>指定 syslog 服务器地址(如 udp://192.168.1.100:514)</td><td>syslog</td></tr><tr><td>syslog-facility</td><td>设置 syslog 的 facility(如 daemon)</td><td>syslog</td></tr><tr><td>gelf-address</td><td>GELF 日志服务器地址(如 udp://graylog.example.com:12201)</td><td>gelf</td></tr><tr><td>gelf-programs</td><td>映射容器命令到 GELF 的 program 字段</td><td>gelf</td></tr><tr><td>gelf-tls</td><td>启用 TLS 加密(如 on, off)</td><td>gelf</td></tr><tr><td>aws-region</td><td>AWS Lambda 日志区域</td><td>awslogs</td></tr><tr><td>aws-logs-group</td><td>AWS CloudWatch 日志组名称</td><td>awslogs</td></tr><tr><td>aws-logs-stream</td><td>AWS CloudWatch 日志流名称</td><td>awslogs</td></tr><tr><td>aws-logs-create-group</td><td>是否自动创建日志组(true/false)</td><td>awslogs</td></tr><tr><td>fluentd-address</td><td>Fluentd 服务器地址(如 localhost:24224)</td><td>fluentd</td></tr><tr><td>fluentd-async</td><td>是否异步发送日志(true/false)</td><td>fluentd</td></tr><tr><td>fluentd-connection-limit</td><td>最大并发连接数(如 5)</td><td>fluentd</td></tr><tr><td>fluentd-timeout</td><td>Fluentd 超时时间(单位:秒)</td><td>fluentd</td></tr><tr><td>gcp-project</td><td>Google Cloud Project ID</td><td>gcplogs</td></tr><tr><td>gcp-log-project</td><td>日志项目(如 my-project)</td><td>gcplogs</td></tr><tr><td>gcp-log</td><td>日志名称(如 my-container)</td><td>gcplogs</td></tr></tbody></table>
<p class="maodian"><a name="_label3_1_2_1"></a></p><h4>2.3.2、常见日志驱动及其配置示例</h4>
<h6>2.3.2.1、 json-file 驱动(默认驱动)</h6>
<ul><li>用途:本地存储 JSON 格式的日志文件。</li><li>常用选项:<ul><li>max-size:限制单个日志文件大小。</li><li>max-file:保留日志文件数量。</li><li>compress:压缩旧日志文件。</li><li>tag:为日志添加标识符。</li></ul></li><li>示例:</li></ul>
<div class="jb51code"><pre class="brush:bash;">docker run --log-driver=json-file \
--log-opt max-size=10m \
--log-opt max-file=3 \
--log-opt tag=my-container \
my_image</pre></div>
<p>限制日志文件最大 10MB,保留 3 个文件,并添加 my-container 标签。</p>
<h6>2.3.2.2、syslog 驱动</h6>
<ul><li>用途:将日志发送到系统 syslog 服务。</li><li>常用选项:<ul><li>syslog-address:syslog 服务器地址。</li><li>syslog-facility:日志设施(如 daemon)。</li><li>tag:日志标签。</li></ul></li><li>示例:</li></ul>
<div class="jb51code"><pre class="brush:bash;">docker run --log-driver=syslog \
--log-opt syslog-address=udp://192.168.1.100:514 \
--log-opt syslog-facility=daemon \
--log-opt tag=my-container \
my_image
</pre></div>
<h6>2.3.2.3、 gelf 驱动</h6>
<ul><li>用途:将日志发送到 Graylog(GELF 格式)。</li><li>常用选项:<ul><li>gelf-address:Graylog 服务器地址。</li><li>gelf-programs:映射容器命令到 program 字段(格式:command=program)。</li></ul></li><li>示例:</li></ul>
<div class="jb51code"><pre class="brush:bash;">docker run --log-driver=gelf \
--log-opt gelf-address=udp://graylog.example.com:12201 \
--log-opt gelf-programs="my_container=my-app" \
my_image
</pre></div>
<h6>2.3.2.4、awslogs 驱动</h6>
<ul><li>用途:将日志发送到 AWS CloudWatch。</li><li>常用选项:<ul><li>aws-logs-group:日志组名称。</li><li>aws-logs-stream:日志流名称。</li><li>aws-logs-create-group:是否自动创建日志组。</li></ul></li><li>示例:</li></ul>
<div class="jb51code"><pre class="brush:bash;">docker run --log-driver=awslogs \
--log-opt aws-logs-group=my-group \
--log-opt aws-logs-stream=my-stream \
--log-opt aws-logs-create-group=true \
my_image
</pre></div>
<h6>2.3.2.5、fluentd 驱动</h6>
<ul><li>用途:将日志发送到 Fluentd。</li><li>常用选项:<ul><li>fluentd-address:Fluentd 服务器地址。</li><li>fluentd-async:是否异步发送日志。</li></ul></li><li>示例:</li></ul>
<div class="jb51code"><pre class="brush:bash;">docker run --log-driver=fluentd \
--log-opt fluentd-address=localhost:24224 \
--log-opt fluentd-async=true \
my_image
</pre></div>
<table><thead><tr><th>驱动</th><th>常用场景</th><th>适用场景</th></tr></thead><tbody><tr><td>json-file</td><td>本地日志存储</td><td>开发、调试、简单部署</td></tr><tr><td>syslog</td><td>系统日志集成</td><td>传统系统日志集中管理</td></tr><tr><td>gelf</td><td>Graylog 集成</td><td>日志分析平台(如 Graylog)</td></tr><tr><td>awslogs</td><td>AWS CloudWatch</td><td>AWS 云环境</td></tr><tr><td>fluentd</td><td>Fluentd 日志聚合</td><td>微服务日志统一处理</td></tr><tr><td>gcplogs</td><td>Google Cloud Platform</td><td>GCP 云环境</td></tr></tbody></table>
<p class="maodian"><a name="_label2"></a></p><h2>三、HostConfig 和Config 差异</h2>
<p>Docker 容器的 HostConfig 和 Config 是两个核心配置字段,分别描述容器的<strong>运行时配置</strong>和<strong>镜像/容器自身配置</strong>。Config 是容器的 &ldquo;DNA&rdquo;,由镜像决定,定义容器的核心行为。HostConfig 是容器的 &ldquo;运行时环境&rdquo;,由主机参数决定,控制容器如何与主机资源交互。两者共同作用于容器的运行,但 Config 更偏向静态属性,HostConfig 更偏向动态策略。</p>
<p class="maodian"><a name="_lab2_2_3"></a></p><h3>3.1、Config 字段</h3>
<p class="maodian"><a name="_label3_2_3_2"></a></p><h4>3.1.1、 作用</h4>
<p>容器自身配置:定义容器的基础属性,与镜像和容器运行时行为直接相关。内容范围:</p>
<ul><li>镜像信息(如 Image)</li><li>容器启动命令(如 Cmd、Entrypoint)</li><li>环境变量(Env)</li><li>工作目录(WorkingDir)</li><li>用户权限(User)</li><li>暂存层(Hostname、Domainname)</li></ul>
<p class="maodian"><a name="_label3_2_3_3"></a></p><h4>3.1.2、特点</h4>
<ul><li>来源于镜像:大部分字段由 Dockerfile 中的指令(如 CMD、ENV、WORKDIR)生成。</li><li>静态配置:通常在容器创建时固定,运行时不可修改。</li><li>与镜像强相关:Config 是容器的基础模板,继承自镜像的元数据。</li></ul>
<p class="maodian"><a name="_label3_2_3_4"></a></p><h4>3.1.3、 使用场景</h4>
<ul><li>定义容器的默认行为(如启动命令、环境变量)。</li><li>调试容器的镜像配置(如通过 docker inspect 查看 Config)。</li></ul>
<p class="maodian"><a name="_lab2_2_4"></a></p><h3>3.2、 HostConfig 字段</h3>
<p class="maodian"><a name="_label3_2_4_5"></a></p><h4>3.2.1、 作用</h4>
<p>主机级配置:定义容器与主机环境的交互方式,控制资源分配和隔离策略。内容范围:</p>
<ul><li>网络模式(NetworkMode)</li><li>端口映射(PortBindings)</li><li>资源限制(Memory、CpuShares)</li><li>卷挂载(Binds、VolumesFrom)</li><li>安全策略(Privileged、SecurityOpt)</li></ul>
<p class="maodian"><a name="_label3_2_4_6"></a></p><h4>3.2.2、特点</h4>
<ul><li>来源于运行时参数:由 docker run 命令的选项(如 -p、-v、&ndash;network)生成。</li><li>动态配置:部分字段在容器运行时可调整(如通过 docker update 修改资源限制)。</li><li>与主机环境强相关:直接控制容器如何与主机资源(CPU、内存、网络)交互。</li></ul>
<p class="maodian"><a name="_label3_2_4_7"></a></p><h4>3.2.3、 使用场景</h4>
<ul><li>管理容器的资源分配(如限制内存、CPU)。</li><li>配置网络和存储(如绑定挂载、端口映射)。</li><li>定义安全策略(如启用特权模式、SELinux/AppArmor 策略)。</li></ul>
<p class="maodian"><a name="_lab2_2_5"></a></p><h3>3.3、 核心差异对比</h3>
<table><thead><tr><th>维度</th><th>Config 字段</th><th>HostConfig 字段</th></tr></thead><tbody><tr><td>作用范围</td><td>容器自身行为(与镜像强相关)</td><td>容器与主机的交互(与运行时强相关)</td></tr><tr><td>配置来源</td><td>来自 Dockerfile 或镜像元数据</td><td>来自 docker run 命令的运行时参数</td></tr><tr><td>可修改性</td><td>大部分字段不可修改(运行时固定)</td><td>部分字段可动态调整(如资源限制)</td></tr><tr><td>生命周期</td><td>容器创建时确定,运行时不可变</td><td>容器运行时可动态更新(如通过 docker update)</td></tr><tr><td>关联对象</td><td>与容器和镜像直接关联</td><td>与主机环境和运行时参数直接关联</td></tr></tbody></table>
<p class="maodian"><a name="_lab2_2_6"></a></p><h3>3.4、 关键区别总结</h3>
<table><thead><tr><th>Config</th><th>HostConfig</th></tr></thead><tbody><tr><td>定义容器的 默认行为(如启动命令、环境变量)</td><td>定义容器的 资源限制和隔离策略(如内存、CPU、网络)</td></tr><tr><td>由 Dockerfile 构建镜像时生成,不可通过运行时参数修改</td><td>由 docker run 命令指定,支持运行时动态调整(如 docker update)</td></tr><tr><td>包含镜像元数据(如 Image、Cmd),与容器的 身份和功能 直接相关</td><td>包含主机环境配置(如 PortBindings、Memory),与容器的 资源和安全 相关</td></tr><tr><td>用于 镜像构建和容器初始化</td><td>用于 容器运行时管理</td></tr></tbody></table>
<p class="maodian"><a name="_lab2_2_7"></a></p><h3>3.5、 典型使用场景</h3>
<ul><li>Config:<ul><li>镜像构建时设置默认命令(如 CMD [&ldquo;nginx&rdquo;, &ldquo;-g&rdquo;, &ldquo;daemon off;&rdquo;])</li><li>调试容器时查看默认环境变量(Env)和工作目录(WorkingDir)</li></ul></li><li>HostConfig:<ul><li>运行容器时限制内存(&ndash;memory=2g)和 CPU(&ndash;cpus=0.5)</li><li>挂载卷(-v)或设置网络模式(&ndash;network=host)</li></ul></li></ul>
<p>到此这篇关于docker 容器HostConfig 字段示例详解的文章就介绍到这了,更多相关docker 容器HostConfig内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!</p>
頁: [1]
查看完整版本: docker 容器HostConfig 字段示例详解