inspect_unix.go 2.7 KB

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