各位大神,最近刚玩docker,遇到一个问题:     在容器里把/etc/hosts修改,保存成功后,将该容器commit成新的image。但是再用新的image创建的容器里/etc/hosts还是初始状态,并没有我做的修改。这是为什么?(在容器中修改hosts是确定生效的。)

解决方案 »

  1.   

    这个问题不错,容器创建时,这三个文件/etc/hosts、/etc/resolv.conf、/etc/hostname是映射挂载的宿主机的,容器里的没有用起来,你可以umount掉,然后用容器里的,但是打镜像时是不会打进去的,会被忽略掉,你可以写两个脚本,一个在打镜像之前执行,把这几个文件保存到另外的目录下,另外一个脚本,是在创建容器后umount+把这些文件恢复到它应该在的位置,写的脚本要保证重入性,因为容器会经常挂掉重启
      

  2.   

    容器中的/etc/hosts每次启动都会被初始化,可以在docker run时加入--add-host name:ip