docker 有关/etc/{hosts,hostname,resolv.conf}

1)为什么/etc/{hosts,hostname,resolv.conf}文件是从外面安装的?

我至少看到一个原因。

想象一下,如果容器引擎只是将这些文件写入容器的文件系统并且用户决定挂载/etc为卷(这是完全合法且非常有用的 - 安装/etc将允许用户为容器提供多个配置文件,会发生什么情况一个-v论点docker run):

  • 首先,卷安装到容器的/etc目录;
  • 然后它的内容由容器引擎改变(写入特定文件/etc)。

启动此容器后,用户尝试使用相同的/etc卷再启动一个(同样,这是完全合法且有用的 - 例如,用户扩展某些服务并/etc在实例之间共享配置文件),以及......第二个容器覆盖hostnamehostsresolv.conf在卷上的文件,影响了第一容器。

现在考虑使用bind-mount而不是直接写入时会发生什么:

  • 卷已安装到容器的/etc目录中;
  • 容器引擎/etc/{hosts,hostname,resolv.conf}从主机上的某个地方绑定到容器的文件系统;
  • bind-mounts会隐藏卷上这些文件的原始版本(如果有),因此可以保证在容器设置期间不会修改卷上的文件,也不会将其传播到其他容器。

2)为什么我认为/dev/sda1这些的来源?

检查findmnt(8)而不是df(1)

$ docker run -it ubuntu
root@5a8ab4d6e716:/# findmnt
TARGET                           SOURCE
...
|-/etc/resolv.conf               /dev/sda1[/var/lib/docker/containers/5a8ab4d6e71691f279cbbcf5a295b5fa90fd138f10418c996ad7ea4440452816/resolv.conf]
|-/etc/hostname                  /dev/sda1[/var/lib/docker/containers/5a8ab4d6e71691f279cbbcf5a295b5fa90fd138f10418c996ad7ea4440452816/hostname]
`-/etc/hosts                     /dev/sda1[/var/lib/docker/containers/5a8ab4d6e71691f279cbbcf5a295b5fa90fd138f10418c996ad7ea4440452816/hosts]

实际上,这里的每行输出显示三个字段(安装目标/etc/hosts,安装源/dev/sda1和FS根/var/lib/<...>/hosts),第三个字段未显示df(1)

根据man procfs关于/proc/PID/mountinfo文件的段落(这是关于实用程序的安装的信息的来源):

(4)  root: the pathname of the directory in the filesystem which forms the root of this mount.
(5)  mount point: the pathname of the mount point relative to the process's root directory.
...
(10) mount source: filesystem-specific information or "none".

对于大多数安装,FS root是/(因为你挂载了整个文件系统),因此在查看df(1)输出时不会丢失太多信息。但是,对于特定文件的绑定挂载不是这种情况。

ISPSRV (UOS) mount /dev/sr0 /mnt vim /etc/apt/sources.list [trusted=yes] file:///mnt fou main apt update nmtui hostname -f vim /etc/hosts apt install -y isc-dhcp-server bind9 vim /etc/default/isc-dhcp-server INERFACEv4="ens33" vim /etc/dhcp/dhcpd.conf subnet 81.6.63.0 netmask 255.255.255.0{ range 81.6.63.110 81.6.63.190; option domain-name-servers 81.6.63.100; option domain -name "chinaskills.cn"; option routers 81.6.63.254; } systemctl restart isc-dhcp-server.service systemctl status isc-dhcp-server.service cd /etc/bind/ ls cp -ap db.local db.root vim named.conf zone"."{ type master; file "/etc/bind/db.root"; }; zone "chinaskills.cn" { type slave; masters { 81.6.63.254; }; file "/etc/bind/db.chinaskills.cn"; }; ls vim named.conf.optins dnssec-validation no; dnssec-enable no; systemctl restart bind9 systemctl status bind9 chmod 777 -R /etc/bind ls vim db.root @ IN MS localhost * IN A 81.6.63.100 systemctl restart bind9 systemctl status bind9 vim /etc/default/isc-dhcp-server AppSrv(Centos) mount /dev/sr0 /mnt rm -rf /etc/yum.repos.d/* cat <<EOF > /etc/yum.repos.d/1.repo [1] name=1 baseurl=file:///mnt enabled=1 gpgcheck=0 EOF systemctl disable firewalld systemctl stop firewalld nmtui yum install -y vim bath-completion yum install -y dhcp bind vim /etc/dhcp/dhcp.conf cp -ap /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf y vim /etc/dhcp/dhcpd.conf v G I # default-lease-time 600; max-lease-time 7200; ddns-update-style none; subnet 192.168.0.0 netmask 255.255.255.0{ range 192.168.0.110 192.168.0.190; option domian-name-servers 192.168.100.100; option domain-name "chinaskills.cn"; interface ens33; option routers 192.168.0.254; } host insidecli{ hardware ethernet 00:0c:29:ce:e8:45; fixed-addrewss 192.168.0.190; } ip ad systemctl restart dhcpd nmtui systemctl status dhcpd systemctl restart dhcpd vim /etc/dhcp/dhcp.conf listen-on port 53 { any; }; allow-query { any; }; forward first; forwarders { 81.6.63.100; }; dnssec-enable on; dnssec-validation on; #zone vim /etc/named.rfc1912.zones viem in{ mathch-clients { 192.168.100.0/24;192.168.0.0/24;127.0.0.1/32;}; zone "chinaskills.cn"{ type master; file "in.chinaskills.cn"; }; }; viem out { match-client { any; }; zone "chinaskills.cn"{ type master; file "out.chinaskills.cn"; allow-transfer { 81.6.63.100; }; }; }; cd /var/named/ ll cp -ad named.localhost in.chinaskills.cn vim in.chinaskills.cn A 192.168.100.100 @ IN MAX 10 mail.chinaskills.cn www IN A 192.168.100.100 download IN a 192.168.100.100 mail IN A 192.168.100.100 ispweb IN A 81.6.63.100 cp -ad in.chinaskills.cn out.chinaskills.cn vim out.chinaskills.cn :%s/192.168.100.100/81.6.63.254 systemctl restart named systemctl status named vim /etc/name.rfc1912.zones systemctl restart named systemctl status named nslookup yum install bind-utils y nslookup www.chinaskills.cn download.chinaskillscn ispweb.chinaskills.cn yum install -y nfs-utils mkdir /webdata echo 192.168.100.200:/webdata /webdate nfs defaults 0 0 >> /etc/fstab mount -a ^c ll STORAGERV(Centos) mount /dev/sr0 /mnt rm -rf /etc/yum.repos.d/* cat <<EOF >etc/yum.repos.d/1.repo [1] name=1 baseurl=file:///mnt enabled=1 gpgcheck=0 EOF systemctl disable firewalld systemctl stop firewalld setemforce 0 nmtui yum install -y vim bath-completion lsblk echo "- - -" >> /sys/class/scsi_host/host echo "- - -" >> /sys/class/scsi_host/host0/scan echo "- - -" >> /sys/class/scsi_host/host1/scan echo "- - -" >> /sys/class/scsi_host/host2/scan yum install -y mdadm lvm2 mdadm -C /dev/md0 -1 5 -n 3 -x 1 /dev/sd[b-e] pvcreate /dev/md0 Vgcreate Vg01 /dev/md0 lvcreate -L 5G -n lv01 vg01 mkfs.ext4 -K /dev/vg01/lv01 mkdir /webdate echo /dev/vg01/lv01 /webdate ext4 0 0 >> /etc/fstab mount -a df -Th cd /webdate/ touth disk.txt cd yum install -y nfs-utils vim /etc/exports /webdata 192.168.100.100(rw,sync,no_root_squash,no_subtree_check) exportfs -av systemctl restart nfs-server ll cd yum install -y samba mkdir -p /data/{share,public} chmod o*rw /data/{share1,public} vim /etc/samba/sma.conf map to guest = bad user [share1] path= /data/share1 write list = zsuser valid users =zsuer,lsusr,wuusr [public] path = /date/public writeble = yes public = yes guest ok = yes systemctl restart smb systemctl status smb useradd -m zsuser useradd -m lsusr useradd -m wuusr pdbedit -a zsuser 1234 pdbedit -a lsusr 1234 pdbedit -a wuusr 1234 systemctl restart smb systemctl status smb cd /data/share1/ ll ROUTESRV(Centos) mount /dev/sr0 /mnt rm -rf /etc/yum.repos.d/* cat <<EOF > /etc/yum.repos.d/1.repo [1] name=1 baseurl=file:///mnt enabled=1 gpgcheck=0 EOF systemctl disable firewalld systemctl stop firewalld setenforce 0 nmtui yum install -y dhcp dhcrelay 192.168.100.100 echo net.ipv4.ip_forward=1 >> /etc/systcl.conf sysctl -p chcrelay 192.168.100.100 dhclient -r dhclient -v INSIDECLI(Centos) mount /dev/sr0 /mnt rm -rf /etc/yum.repos.d/* cat <<EOF > /etc/yum.repos.d/1.repo [1] name=1 baseurl=file:///mnt enabled=1 gpgcheck=0 EOF systemctl disable firewalld ststemctl stop firewalld setenforce 0 nmtui ip ad dhclient -r dhclient -v yum install -y sambd-client sabclient //192.168.100.200/share1 -U zsuser 1234 ls ^c touch 1 touch 2 ls ^c touch 1 touch 2 ls put 1 e^c sabclient //192.168.100.200/share1 -U zsuser 1234 ls put 2 ls q sabclient //192.168.100.200/public 1234 ls put 2 exit OUTSIDE(UOS) mount /dev/sr0 /mnt vim /etc/apt/sources.list [trusted=yes] file:///mnt fou main apt update nmtui dhclient -r dhclient -v ip ad ip route cat /etc/resolv.conf nslookup 将以上linux代码分析并讲述操作思路
最新发布
06-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值