inspect_unix.go 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. // +build !windows,!solaris
  2. package daemon
  3. import (
  4. "github.com/docker/docker/api/types/backend"
  5. "github.com/docker/docker/container"
  6. "github.com/docker/docker/daemon/exec"
  7. "github.com/docker/engine-api/types"
  8. "github.com/docker/engine-api/types/versions/v1p19"
  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, false)
  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. Name: m.Name,
  61. Source: m.Path(),
  62. Destination: m.Destination,
  63. Driver: m.Driver,
  64. Mode: m.Mode,
  65. RW: m.RW,
  66. Propagation: m.Propagation,
  67. })
  68. }
  69. return mountPoints
  70. }
  71. func inspectExecProcessConfig(e *exec.Config) *backend.ExecProcessConfig {
  72. return &backend.ExecProcessConfig{
  73. Tty: e.Tty,
  74. Entrypoint: e.Entrypoint,
  75. Arguments: e.Args,
  76. Privileged: &e.Privileged,
  77. User: e.User,
  78. }
  79. }