zoukankan      html  css  js  c++  java
  • Docker每次启动容器,IP及hosts指定

    原文链接:https://blog.csdn.net/u012834750/article/details/80508464

    前言

        每次在使用Docker启动Hadoop集群的时候,都需要重新绑定下网卡,固定IP,同时修改/etc/hosts文件,非常麻烦,于是想探寻下原因及优化。

    一、原因

    /etc/hosts, /etc/resolv.conf和/etc/hostname,容器中的这三个文件不存在于镜像,在启动容器的时候,通过mount的形式将这些文件挂载到容器内部。因此,如果在容器中修改这些文件的话,修改部分不会存在于容器的top layer,而是直接写入这三个物理文件中。

    为什么重启后修改内容不存在了?原因是:每次Docker在启动容器的时候,通过重新构建新的/etc/hosts文件,这又是为什么呢?原因是:容器重启,IP地址为改变,hosts文件中原来的IP地址无效,因此理应修改hosts文件,否则会产生脏数据。
    二、解决办法

    在每次启动容器的时候指定IP、hostname、往/etc/hosts里添加hosts,命令如下:


    docker run -itd --name hadoop0 --hostname hadoop0 --net network_my --ip 192.168.10.30 --add-host hadoop1:192.168.10.31 --add-host hadoop2:192.168.10.32  -d -P -p 50070:50070 -p 8088:8088 hadoop:master

    Docker系列(四)Docker 网络模式及配置

    --hostname :指定hostname;
    --net : 指定网络模式
    --ip:指定IP
    --add-host :指定往/etc/hosts添加的host

    以上命令需要docker1.9以上版本才行;

    启动完容器后,进入容器查看 /etc/hosts

    [root@centos-linux-7 /]# docker exec -it hadoop0 bash

    [root@hadoop0 /]# cat /etc/hosts
    127.0.0.1   localhost
    ::1 localhost ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    192.168.10.31   hadoop1
    192.168.10.32   hadoop2
    192.168.10.30   hadoop0
    [root@hadoop0 /]#

     
  • 相关阅读:
    vue登录
    登录vue
    FoolWeb Logo
    无限极下拉列表管理
    qtip2 扩展.net mvc 默认验证样式
    编辑器上传提交不能过.net 安全验证的解决方案
    FoolWeb 各层代码实例
    iis7 上传大文件那点事
    js制作 电子杂志(附源代码)
    FoolWeb (二) 数据库设计
  • 原文地址:https://www.cnblogs.com/smlie/p/12081650.html
Copyright © 2011-2022 走看看