public function denormalize($data, $class, $format = null, array $context = [])
 {
     if (empty($data)) {
         return null;
     }
     if (isset($data->{'$ref'})) {
         return new Reference($data->{'$ref'}, $context['rootSchema'] ?: null);
     }
     $object = new \Docker\API\Model\ContainerConfig();
     if (!isset($context['rootSchema'])) {
         $context['rootSchema'] = $object;
     }
     if (property_exists($data, 'Id')) {
         $object->setId($data->{'Id'});
     }
     if (property_exists($data, 'Names')) {
         $value = $data->{'Names'};
         if (is_array($data->{'Names'})) {
             $values = [];
             foreach ($data->{'Names'} as $value_1) {
                 $values[] = $value_1;
             }
             $value = $values;
         }
         if (is_null($data->{'Names'})) {
             $value = $data->{'Names'};
         }
         $object->setNames($value);
     }
     if (property_exists($data, 'Image')) {
         $object->setImage($data->{'Image'});
     }
     if (property_exists($data, 'ImageID')) {
         $object->setImageID($data->{'ImageID'});
     }
     if (property_exists($data, 'Command')) {
         $object->setCommand($data->{'Command'});
     }
     if (property_exists($data, 'Created')) {
         $object->setCreated($data->{'Created'});
     }
     if (property_exists($data, 'Status')) {
         $object->setStatus($data->{'Status'});
     }
     if (property_exists($data, 'Ports')) {
         $value_2 = $data->{'Ports'};
         if (is_array($data->{'Ports'})) {
             $values_1 = [];
             foreach ($data->{'Ports'} as $value_3) {
                 $values_1[] = $this->serializer->deserialize($value_3, 'Docker\\API\\Model\\Port', 'raw', $context);
             }
             $value_2 = $values_1;
         }
         if (is_null($data->{'Ports'})) {
             $value_2 = $data->{'Ports'};
         }
         $object->setPorts($value_2);
     }
     if (property_exists($data, 'Labels')) {
         $value_4 = $data->{'Labels'};
         if (is_object($data->{'Labels'})) {
             $values_2 = new \ArrayObject([], \ArrayObject::ARRAY_AS_PROPS);
             foreach ($data->{'Labels'} as $key => $value_5) {
                 $values_2[$key] = $value_5;
             }
             $value_4 = $values_2;
         }
         if (is_null($data->{'Labels'})) {
             $value_4 = $data->{'Labels'};
         }
         $object->setLabels($value_4);
     }
     if (property_exists($data, 'SizeRw')) {
         $object->setSizeRw($data->{'SizeRw'});
     }
     if (property_exists($data, 'SizeRootFs')) {
         $object->setSizeRootFs($data->{'SizeRootFs'});
     }
     if (property_exists($data, 'Hostname')) {
         $object->setHostname($data->{'Hostname'});
     }
     if (property_exists($data, 'Domainname')) {
         $object->setDomainname($data->{'Domainname'});
     }
     if (property_exists($data, 'User')) {
         $object->setUser($data->{'User'});
     }
     if (property_exists($data, 'AttachStdin')) {
         $object->setAttachStdin($data->{'AttachStdin'});
     }
     if (property_exists($data, 'AttachStdout')) {
         $object->setAttachStdout($data->{'AttachStdout'});
     }
     if (property_exists($data, 'AttachStderr')) {
         $object->setAttachStderr($data->{'AttachStderr'});
     }
     if (property_exists($data, 'Tty')) {
         $object->setTty($data->{'Tty'});
     }
     if (property_exists($data, 'OpenStdin')) {
         $object->setOpenStdin($data->{'OpenStdin'});
     }
     if (property_exists($data, 'StdinOnce')) {
         $object->setStdinOnce($data->{'StdinOnce'});
     }
     if (property_exists($data, 'Env')) {
         $value_6 = $data->{'Env'};
         if (is_array($data->{'Env'})) {
             $values_3 = [];
             foreach ($data->{'Env'} as $value_7) {
                 $values_3[] = $value_7;
             }
             $value_6 = $values_3;
         }
         if (is_null($data->{'Env'})) {
             $value_6 = $data->{'Env'};
         }
         $object->setEnv($value_6);
     }
     if (property_exists($data, 'Cmd')) {
         $value_8 = $data->{'Cmd'};
         if (is_array($data->{'Cmd'})) {
             $values_4 = [];
             foreach ($data->{'Cmd'} as $value_9) {
                 $values_4[] = $value_9;
             }
             $value_8 = $values_4;
         }
         if (is_string($data->{'Cmd'})) {
             $value_8 = $data->{'Cmd'};
         }
         $object->setCmd($value_8);
     }
     if (property_exists($data, 'Entrypoint')) {
         $value_10 = $data->{'Entrypoint'};
         if (is_array($data->{'Entrypoint'})) {
             $values_5 = [];
             foreach ($data->{'Entrypoint'} as $value_11) {
                 $values_5[] = $value_11;
             }
             $value_10 = $values_5;
         }
         if (is_string($data->{'Entrypoint'})) {
             $value_10 = $data->{'Entrypoint'};
         }
         $object->setEntrypoint($value_10);
     }
     if (property_exists($data, 'Mounts')) {
         $value_12 = $data->{'Mounts'};
         if (is_array($data->{'Mounts'})) {
             $values_6 = [];
             foreach ($data->{'Mounts'} as $value_13) {
                 $values_6[] = $this->serializer->deserialize($value_13, 'Docker\\API\\Model\\Mount', 'raw', $context);
             }
             $value_12 = $values_6;
         }
         if (is_null($data->{'Mounts'})) {
             $value_12 = $data->{'Mounts'};
         }
         $object->setMounts($value_12);
     }
     if (property_exists($data, 'WorkingDir')) {
         $object->setWorkingDir($data->{'WorkingDir'});
     }
     if (property_exists($data, 'NetworkDisabled')) {
         $object->setNetworkDisabled($data->{'NetworkDisabled'});
     }
     if (property_exists($data, 'MacAddress')) {
         $object->setMacAddress($data->{'MacAddress'});
     }
     if (property_exists($data, 'ExposedPorts')) {
         $value_14 = $data->{'ExposedPorts'};
         if (is_object($data->{'ExposedPorts'})) {
             $values_7 = new \ArrayObject([], \ArrayObject::ARRAY_AS_PROPS);
             foreach ($data->{'ExposedPorts'} as $key_1 => $value_15) {
                 $values_7[$key_1] = $value_15;
             }
             $value_14 = $values_7;
         }
         if (is_null($data->{'ExposedPorts'})) {
             $value_14 = $data->{'ExposedPorts'};
         }
         $object->setExposedPorts($value_14);
     }
     if (property_exists($data, 'NetworkSettings')) {
         $object->setNetworkSettings($this->serializer->deserialize($data->{'NetworkSettings'}, 'Docker\\API\\Model\\NetworkConfig', 'raw', $context));
     }
     if (property_exists($data, 'HostConfig')) {
         $object->setHostConfig($this->serializer->deserialize($data->{'HostConfig'}, 'Docker\\API\\Model\\HostConfig', 'raw', $context));
     }
     return $object;
 }
 /**
  * Run the container.
  */
 public function run($command)
 {
     $this->start_buffer();
     if (!$this->built) {
         if (!$this->build_container()) {
             return false;
         }
     }
     // Create the runtime environment.
     $manager = $this->docker->getContainerManager();
     $config = new \Docker\API\Model\ContainerConfig();
     $config->setImage($this->containerid);
     $config->setCmd($command);
     $config->setAttachStdin(true);
     $config->setAttachStdout(true);
     $config->setAttachStderr(true);
     $createresult = $manager->create($config);
     $id = $createresult->getId();
     $container = $manager->find($id);
     // Attach to the container.
     $response = $manager->attach($id, ['stream' => true, 'stdin' => true, 'stdout' => true, 'stderr' => true]);
     $manager->start($id);
     $response->onStdout(function ($stdout) {
         echo "\n{$stdout}\n";
     });
     $response->onStderr(function ($stderr) {
         echo "\n{$stderr}\n";
     });
     $response->wait();
     // Finish up.
     $manager->stop($id);
     $this->end_buffer();
     return $container->getState()->getExitCode();
 }
 public function denormalize($data, $class, $format = null, array $context = [])
 {
     if (empty($data)) {
         return null;
     }
     if (isset($data->{'$ref'})) {
         return new Reference($data->{'$ref'}, $context['rootSchema'] ?: null);
     }
     $object = new \Docker\API\Model\ContainerConfig();
     if (!isset($context['rootSchema'])) {
         $context['rootSchema'] = $object;
     }
     if (isset($data->{'Id'})) {
         $object->setId($data->{'Id'});
     }
     if (isset($data->{'Names'})) {
         $values_59 = [];
         foreach ($data->{'Names'} as $value_60) {
             $values_59[] = $value_60;
         }
         $object->setNames($values_59);
     }
     if (isset($data->{'Image'})) {
         $object->setImage($data->{'Image'});
     }
     if (isset($data->{'Command'})) {
         $object->setCommand($data->{'Command'});
     }
     if (isset($data->{'Created'})) {
         $object->setCreated($data->{'Created'});
     }
     if (isset($data->{'Status'})) {
         $object->setStatus($data->{'Status'});
     }
     if (isset($data->{'Ports'})) {
         $values_61 = [];
         foreach ($data->{'Ports'} as $value_62) {
             $values_61[] = $this->serializer->deserialize($value_62, 'Docker\\API\\Model\\Port', 'raw', $context);
         }
         $object->setPorts($values_61);
     }
     if (isset($data->{'Labels'})) {
         $values_63 = new \ArrayObject([], \ArrayObject::ARRAY_AS_PROPS);
         foreach ($data->{'Labels'} as $key_65 => $value_64) {
             $values_63[$key_65] = $value_64;
         }
         $object->setLabels($values_63);
     }
     if (isset($data->{'SizeRw'})) {
         $object->setSizeRw($data->{'SizeRw'});
     }
     if (isset($data->{'SizeRootFs'})) {
         $object->setSizeRootFs($data->{'SizeRootFs'});
     }
     if (isset($data->{'Hostname'})) {
         $object->setHostname($data->{'Hostname'});
     }
     if (isset($data->{'Domainname'})) {
         $object->setDomainname($data->{'Domainname'});
     }
     if (isset($data->{'User'})) {
         $object->setUser($data->{'User'});
     }
     if (isset($data->{'AttachStdin'})) {
         $object->setAttachStdin($data->{'AttachStdin'});
     }
     if (isset($data->{'AttachStdout'})) {
         $object->setAttachStdout($data->{'AttachStdout'});
     }
     if (isset($data->{'AttachStderr'})) {
         $object->setAttachStderr($data->{'AttachStderr'});
     }
     if (isset($data->{'Tty'})) {
         $object->setTty($data->{'Tty'});
     }
     if (isset($data->{'OpenStdin'})) {
         $object->setOpenStdin($data->{'OpenStdin'});
     }
     if (isset($data->{'StdinOnce'})) {
         $object->setStdinOnce($data->{'StdinOnce'});
     }
     if (isset($data->{'Env'})) {
         $values_66 = [];
         foreach ($data->{'Env'} as $value_67) {
             $values_66[] = $value_67;
         }
         $object->setEnv($values_66);
     }
     if (isset($data->{'Cmd'})) {
         $value_68 = $data->{'Cmd'};
         if (is_array($data->{'Cmd'})) {
             $values_69 = [];
             foreach ($data->{'Cmd'} as $value_70) {
                 $values_69[] = $value_70;
             }
             $value_68 = $values_69;
         }
         if (is_string($data->{'Cmd'})) {
             $value_68 = $data->{'Cmd'};
         }
         $object->setCmd($value_68);
     }
     if (isset($data->{'Entrypoint'})) {
         $value_71 = $data->{'Entrypoint'};
         if (is_array($data->{'Entrypoint'})) {
             $values_72 = [];
             foreach ($data->{'Entrypoint'} as $value_73) {
                 $values_72[] = $value_73;
             }
             $value_71 = $values_72;
         }
         if (is_string($data->{'Entrypoint'})) {
             $value_71 = $data->{'Entrypoint'};
         }
         $object->setEntrypoint($value_71);
     }
     if (isset($data->{'Mounts'})) {
         $values_74 = [];
         foreach ($data->{'Mounts'} as $value_75) {
             $values_74[] = $this->serializer->deserialize($value_75, 'Docker\\API\\Model\\Mount', 'raw', $context);
         }
         $object->setMounts($values_74);
     }
     if (isset($data->{'WorkingDir'})) {
         $object->setWorkingDir($data->{'WorkingDir'});
     }
     if (isset($data->{'NetworkDisabled'})) {
         $object->setNetworkDisabled($data->{'NetworkDisabled'});
     }
     if (isset($data->{'MacAddress'})) {
         $object->setMacAddress($data->{'MacAddress'});
     }
     if (isset($data->{'ExposedPorts'})) {
         $values_76 = new \ArrayObject([], \ArrayObject::ARRAY_AS_PROPS);
         foreach ($data->{'ExposedPorts'} as $key_78 => $value_77) {
             $values_76[$key_78] = $value_77;
         }
         $object->setExposedPorts($values_76);
     }
     if (isset($data->{'HostConfig'})) {
         $object->setHostConfig($this->serializer->deserialize($data->{'HostConfig'}, 'Docker\\API\\Model\\HostConfig', 'raw', $context));
     }
     return $object;
 }
 public function denormalize($data, $class, $format = null, array $context = [])
 {
     if (empty($data)) {
         return null;
     }
     if (isset($data->{'$ref'})) {
         return new Reference($data->{'$ref'}, $context['rootSchema'] ?: null);
     }
     $object = new \Docker\API\Model\ContainerConfig();
     if (!isset($context['rootSchema'])) {
         $context['rootSchema'] = $object;
     }
     if (isset($data->{'Id'})) {
         $object->setId($data->{'Id'});
     }
     if (isset($data->{'Names'})) {
         $values_81 = [];
         foreach ($data->{'Names'} as $value_82) {
             $values_81[] = $value_82;
         }
         $object->setNames($values_81);
     }
     if (isset($data->{'Image'})) {
         $object->setImage($data->{'Image'});
     }
     if (isset($data->{'Command'})) {
         $object->setCommand($data->{'Command'});
     }
     if (isset($data->{'Created'})) {
         $object->setCreated($data->{'Created'});
     }
     if (isset($data->{'Status'})) {
         $object->setStatus($data->{'Status'});
     }
     if (isset($data->{'Ports'})) {
         $values_83 = [];
         foreach ($data->{'Ports'} as $value_84) {
             $values_83[] = $this->serializer->deserialize($value_84, 'Docker\\API\\Model\\Port', 'raw', $context);
         }
         $object->setPorts($values_83);
     }
     if (isset($data->{'Labels'})) {
         $values_85 = new \ArrayObject([], \ArrayObject::ARRAY_AS_PROPS);
         foreach ($data->{'Labels'} as $key_87 => $value_86) {
             $values_85[$key_87] = $value_86;
         }
         $object->setLabels($values_85);
     }
     if (isset($data->{'SizeRw'})) {
         $object->setSizeRw($data->{'SizeRw'});
     }
     if (isset($data->{'SizeRootFs'})) {
         $object->setSizeRootFs($data->{'SizeRootFs'});
     }
     if (isset($data->{'Hostname'})) {
         $object->setHostname($data->{'Hostname'});
     }
     if (isset($data->{'Domainname'})) {
         $object->setDomainname($data->{'Domainname'});
     }
     if (isset($data->{'User'})) {
         $object->setUser($data->{'User'});
     }
     if (isset($data->{'AttachStdin'})) {
         $object->setAttachStdin($data->{'AttachStdin'});
     }
     if (isset($data->{'AttachStdout'})) {
         $object->setAttachStdout($data->{'AttachStdout'});
     }
     if (isset($data->{'AttachStderr'})) {
         $object->setAttachStderr($data->{'AttachStderr'});
     }
     if (isset($data->{'Tty'})) {
         $object->setTty($data->{'Tty'});
     }
     if (isset($data->{'OpenStdin'})) {
         $object->setOpenStdin($data->{'OpenStdin'});
     }
     if (isset($data->{'StdinOnce'})) {
         $object->setStdinOnce($data->{'StdinOnce'});
     }
     if (isset($data->{'Env'})) {
         $values_88 = [];
         foreach ($data->{'Env'} as $value_89) {
             $values_88[] = $value_89;
         }
         $object->setEnv($values_88);
     }
     if (isset($data->{'Cmd'})) {
         $value_90 = $data->{'Cmd'};
         if (is_array($data->{'Cmd'})) {
             $values_91 = [];
             foreach ($data->{'Cmd'} as $value_92) {
                 $values_91[] = $value_92;
             }
             $value_90 = $values_91;
         }
         if (is_string($data->{'Cmd'})) {
             $value_90 = $data->{'Cmd'};
         }
         $object->setCmd($value_90);
     }
     if (isset($data->{'Entrypoint'})) {
         $value_93 = $data->{'Entrypoint'};
         if (is_array($data->{'Entrypoint'})) {
             $values_94 = [];
             foreach ($data->{'Entrypoint'} as $value_95) {
                 $values_94[] = $value_95;
             }
             $value_93 = $values_94;
         }
         if (is_string($data->{'Entrypoint'})) {
             $value_93 = $data->{'Entrypoint'};
         }
         $object->setEntrypoint($value_93);
     }
     if (isset($data->{'Mounts'})) {
         $values_96 = [];
         foreach ($data->{'Mounts'} as $value_97) {
             $values_96[] = $this->serializer->deserialize($value_97, 'Docker\\API\\Model\\Mount', 'raw', $context);
         }
         $object->setMounts($values_96);
     }
     if (isset($data->{'WorkingDir'})) {
         $object->setWorkingDir($data->{'WorkingDir'});
     }
     if (isset($data->{'NetworkDisabled'})) {
         $object->setNetworkDisabled($data->{'NetworkDisabled'});
     }
     if (isset($data->{'MacAddress'})) {
         $object->setMacAddress($data->{'MacAddress'});
     }
     if (isset($data->{'ExposedPorts'})) {
         $values_98 = new \ArrayObject([], \ArrayObject::ARRAY_AS_PROPS);
         foreach ($data->{'ExposedPorts'} as $key_100 => $value_99) {
             $values_98[$key_100] = $value_99;
         }
         $object->setExposedPorts($values_98);
     }
     if (isset($data->{'NetworkSettings'})) {
         $object->setNetworkSettings($this->serializer->deserialize($data->{'NetworkSettings'}, 'Docker\\API\\Model\\NetworkConfig', 'raw', $context));
     }
     if (isset($data->{'HostConfig'})) {
         $object->setHostConfig($this->serializer->deserialize($data->{'HostConfig'}, 'Docker\\API\\Model\\HostConfig', 'raw', $context));
     }
     return $object;
 }