1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

replace 127.0.0.1 by the assigned IP address in the container's /etc/hosts file.

This commit is contained in:
Zilin Du 2013-10-08 14:29:22 -07:00
parent 2d425af1b1
commit 7d95d300ab
2 changed files with 29 additions and 26 deletions

View file

@ -579,10 +579,12 @@ func (container *Container) Start(hostConfig *HostConfig) error {
} }
if container.runtime.networkManager.disabled { if container.runtime.networkManager.disabled {
container.Config.NetworkDisabled = true container.Config.NetworkDisabled = true
container.buildHostnameAndHostsFiles("127.0.0.1")
} else { } else {
if err := container.allocateNetwork(); err != nil { if err := container.allocateNetwork(); err != nil {
return err return err
} }
container.buildHostnameAndHostsFiles(container.NetworkSettings.IPAddress)
} }
// Make sure the config is compatible with the current kernel // Make sure the config is compatible with the current kernel
@ -868,6 +870,32 @@ func (container *Container) StderrPipe() (io.ReadCloser, error) {
return utils.NewBufReader(reader), nil return utils.NewBufReader(reader), nil
} }
func (container *Container) buildHostnameAndHostsFiles(IP string) {
container.HostnamePath = path.Join(container.root, "hostname")
ioutil.WriteFile(container.HostnamePath, []byte(container.Config.Hostname+"\n"), 0644)
hostsContent := []byte(`
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
`)
container.HostsPath = path.Join(container.root, "hosts")
if container.Config.Domainname != "" {
hostsContent = append([]byte(fmt.Sprintf("::1\t\t%s.%s %s\n", container.Config.Hostname, container.Config.Domainname, container.Config.Hostname)), hostsContent...)
hostsContent = append([]byte(fmt.Sprintf("%s\t%s.%s %s\n", IP, container.Config.Hostname, container.Config.Domainname, container.Config.Hostname)), hostsContent...)
} else {
hostsContent = append([]byte(fmt.Sprintf("::1\t\t%s\n", container.Config.Hostname)), hostsContent...)
hostsContent = append([]byte(fmt.Sprintf("%s\t%s\n", IP, container.Config.Hostname)), hostsContent...)
}
ioutil.WriteFile(container.HostsPath, hostsContent, 0644)
}
func (container *Container) allocateNetwork() error { func (container *Container) allocateNetwork() error {
if container.Config.NetworkDisabled { if container.Config.NetworkDisabled {
return nil return nil

View file

@ -368,32 +368,7 @@ func (runtime *Runtime) Create(config *Config) (*Container, error) {
return nil, err return nil, err
} }
// Step 3: if hostname, build hostname and hosts files // Step 3: register the container
container.HostnamePath = path.Join(container.root, "hostname")
ioutil.WriteFile(container.HostnamePath, []byte(container.Config.Hostname+"\n"), 0644)
hostsContent := []byte(`
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
`)
container.HostsPath = path.Join(container.root, "hosts")
if container.Config.Domainname != "" {
hostsContent = append([]byte(fmt.Sprintf("::1\t\t%s.%s %s\n", container.Config.Hostname, container.Config.Domainname, container.Config.Hostname)), hostsContent...)
hostsContent = append([]byte(fmt.Sprintf("127.0.0.1\t%s.%s %s\n", container.Config.Hostname, container.Config.Domainname, container.Config.Hostname)), hostsContent...)
} else {
hostsContent = append([]byte(fmt.Sprintf("::1\t\t%s\n", container.Config.Hostname)), hostsContent...)
hostsContent = append([]byte(fmt.Sprintf("127.0.0.1\t%s\n", container.Config.Hostname)), hostsContent...)
}
ioutil.WriteFile(container.HostsPath, hostsContent, 0644)
// Step 4: register the container
if err := runtime.Register(container); err != nil { if err := runtime.Register(container); err != nil {
return nil, err return nil, err
} }