inspect_unix.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // +build !windows
  2. package daemon
  3. import (
  4. "github.com/docker/docker/api/types"
  5. "github.com/docker/docker/api/types/versions/v1p19"
  6. "github.com/docker/docker/container"
  7. )
  8. // This sets platform-specific fields
  9. func setPlatformSpecificContainerFields(container *container.Container, contJSONBase *types.ContainerJSONBase) *types.ContainerJSONBase {
  10. contJSONBase.AppArmorProfile = container.AppArmorProfile
  11. contJSONBase.ResolvConfPath = container.ResolvConfPath
  12. contJSONBase.HostnamePath = container.HostnamePath
  13. contJSONBase.HostsPath = container.HostsPath
  14. return contJSONBase
  15. }
  16. // containerInspectPre120 gets containers for pre 1.20 APIs.
  17. func (daemon *Daemon) containerInspectPre120(name string) (*v1p19.ContainerJSON, error) {
  18. container, err := daemon.GetContainer(name)
  19. if err != nil {
  20. return nil, err
  21. }
  22. container.Lock()
  23. defer container.Unlock()
  24. base, err := daemon.getInspectData(container, false)
  25. if err != nil {
  26. return nil, err
  27. }
  28. volumes := make(map[string]string)
  29. volumesRW := make(map[string]bool)
  30. for _, m := range container.MountPoints {
  31. volumes[m.Destination] = m.Path()
  32. volumesRW[m.Destination] = m.RW
  33. }
  34. config := &v1p19.ContainerConfig{
  35. Config: container.Config,
  36. MacAddress: container.Config.MacAddress,
  37. NetworkDisabled: container.Config.NetworkDisabled,
  38. ExposedPorts: container.Config.ExposedPorts,
  39. VolumeDriver: container.HostConfig.VolumeDriver,
  40. Memory: container.HostConfig.Memory,
  41. MemorySwap: container.HostConfig.MemorySwap,
  42. CPUShares: container.HostConfig.CPUShares,
  43. CPUSet: container.HostConfig.CpusetCpus,
  44. }
  45. networkSettings := daemon.getBackwardsCompatibleNetworkSettings(container.NetworkSettings)
  46. return &v1p19.ContainerJSON{
  47. ContainerJSONBase: base,
  48. Volumes: volumes,
  49. VolumesRW: volumesRW,
  50. Config: config,
  51. NetworkSettings: networkSettings,
  52. }, nil
  53. }
  54. func addMountPoints(container *container.Container) []types.MountPoint {
  55. mountPoints := make([]types.MountPoint, 0, len(container.MountPoints))
  56. for _, m := range container.MountPoints {
  57. mountPoints = append(mountPoints, types.MountPoint{
  58. Name: m.Name,
  59. Source: m.Path(),
  60. Destination: m.Destination,
  61. Driver: m.Driver,
  62. Mode: m.Mode,
  63. RW: m.RW,
  64. Propagation: m.Propagation,
  65. })
  66. }
  67. return mountPoints
  68. }