func (daemon *Daemon) initializeNetworking(container *container.Container) error { var err error if container.HostConfig.NetworkMode.IsContainer() { // we need to get the hosts files from the container to join nc, err := daemon.getNetworkedContainer(container.ID, container.HostConfig.NetworkMode.ConnectedContainer()) if err != nil { return err } container.HostnamePath = nc.HostnamePath container.HostsPath = nc.HostsPath container.ResolvConfPath = nc.ResolvConfPath container.Config.Hostname = nc.Config.Hostname container.Config.Domainname = nc.Config.Domainname return nil } if container.HostConfig.NetworkMode.IsHost() { container.Config.Hostname, err = os.Hostname() if err != nil { return err } } if err := daemon.allocateNetwork(container); err != nil { return err } return container.BuildHostnameFile() }
func (daemon *Daemon) initializeNetworking(container *container.Container) error { var err error // TODO Windows: Remove this once TP4 builds are not supported // Windows TP4 build don't support libnetwork and in that case // daemon.netController will be nil if daemon.netController == nil { return nil } if container.HostConfig.NetworkMode.IsContainer() { // we need to get the hosts files from the container to join nc, err := daemon.getNetworkedContainer(container.ID, container.HostConfig.NetworkMode.ConnectedContainer()) if err != nil { return err } container.HostnamePath = nc.HostnamePath container.HostsPath = nc.HostsPath container.ResolvConfPath = nc.ResolvConfPath container.Config.Hostname = nc.Config.Hostname container.Config.Domainname = nc.Config.Domainname return nil } if container.HostConfig.NetworkMode.IsHost() { container.Config.Hostname, err = os.Hostname() if err != nil { return err } parts := strings.SplitN(container.Config.Hostname, ".", 2) if len(parts) > 1 { container.Config.Hostname = parts[0] container.Config.Domainname = parts[1] } } if err := daemon.allocateNetwork(container); err != nil { return err } return container.BuildHostnameFile() }
//网络初始化的相关操作。 func (daemon *Daemon) initializeNetworking(container *container.Container) error { var err error // TODO Windows: Remove this once TP4 builds are not supported // Windows TP4 build don't support libnetwork and in that case // daemon.netController will be nil if daemon.netController == nil { return nil } //网络模式是非主机模式下的设置,需要设置hostname文件,resove文件等。 if container.HostConfig.NetworkMode.IsContainer() { // we need to get the hosts files from the container to join nc, err := daemon.getNetworkedContainer(container.ID, container.HostConfig.NetworkMode.ConnectedContainer()) if err != nil { return err } container.HostnamePath = nc.HostnamePath container.HostsPath = nc.HostsPath container.ResolvConfPath = nc.ResolvConfPath container.Config.Hostname = nc.Config.Hostname container.Config.Domainname = nc.Config.Domainname return nil } //如果是主机模式,就是共享主机,不需要很多处理。 if container.HostConfig.NetworkMode.IsHost() { container.Config.Hostname, err = os.Hostname() if err != nil { return err } } //分配网络的核心代码。就在本页。 if err := daemon.allocateNetwork(container); err != nil { return err } //将主机名写入文件。主机名是随机生成的。 return container.BuildHostnameFile() }
func initializeNetworkingPaths(container *container.Container, nc *container.Container) { container.HostnamePath = nc.HostnamePath container.HostsPath = nc.HostsPath container.ResolvConfPath = nc.ResolvConfPath }