You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何基于ubuntu镜像的不同Docker容器内部环境存在差异?

容器环境差异原因

Docker 镜像属于只读模板,容器运行过程中产生的所有改动(包括创建testfolder目录、安装依赖、修改配置等)都只会存储在当前容器独有的可写层,不会反向写入到基础ubuntu镜像中。你之前的c120809b91b5容器运行期间产生的所有自定义改动都仅属于该容器,直接用原始ubuntu镜像启动的新容器不会继承这些改动,因此环境完全不同。

为原有容器添加--add-host配置的方案

方案1:提交容器为自定义镜像后启动新容器(操作更稳妥,兼容性高)

  • 停止原有容器(避免运行状态提交出现数据不一致):
    docker stop c120809b91b5
  • 将原有容器的可写层和基础镜像打包为自定义镜像:
    docker commit c120809b91b5 custom-ubuntu:v1
  • 用新镜像启动带目标参数的容器,可同步原有容器的端口映射、卷挂载等其他配置:
    docker run -it --add-host=host.docker.internal:host-gateway --name ubuntuContainer-new custom-ubuntu:v1 bash
  • 进入新容器后可验证testfolder目录存在,且/etc/hosts中有对应host记录即可。

方案2:直接修改原有容器配置(无需新建容器)

注意:操作前需停止Docker daemon,避免配置被动态覆盖

  • 停止目标容器:
    docker stop c120809b91b5
  • 停止Docker服务(不同操作系统命令可对应调整):
    systemctl stop docker
  • 执行命令获取容器完整64位ID:
    docker inspect c120809b91b5 | grep Id
  • 进入对应容器配置目录,默认路径为/var/lib/docker/containers/<完整容器ID>/,编辑hostconfig.json文件,找到ExtraHosts字段,将值修改为["host.docker.internal:host-gateway"]
  • 保存文件后重启Docker服务:
    systemctl start docker
  • 启动原有容器:
    docker start c120809b91b5,进入容器验证配置生效即可。

内容的提问来源于stack exchange,提问作者PDD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:36:03