/// <summary>
        /// imageName must be on server already otherwise expect a 404
        /// </summary>
        /// <param name="imageName">name of the image, ex: redis</param>
        /// <returns></returns>
        public async Task<string> DockerRun(string imageName)
        {
            //            docker create
            // if miss - 404 on API
            //    docker pull imagename
            //docker create
            //docker start


            var runParams = new DotNet.Models.CreateContainerParameters();
            
            Config y = new Config();
            runParams.Config = y;

            runParams.Config.Tty = true;
            runParams.Config.AttachStderr = true;
            runParams.Config.AttachStdout = true;
            
            
            runParams.Config.Image = imageName;
            

            var result =  await client.Containers.CreateContainerAsync(runParams);
            var hostconfig = new HostConfig();

            await client.Containers.StartContainerAsync(result.Id, hostconfig);
            return result.Id; 

        }
        /// <summary>
        /// imageName must be on server already otherwise expect a 404
        /// </summary>
        /// <param name="imageName">name of the image, ex: redis</param>
        /// <returns></returns>
        public async Task <string> DockerRun(string imageName)
        {
            //            docker create
            // if miss - 404 on API
            //    docker pull imagename
            //docker create
            //docker start


            var runParams = new DotNet.Models.CreateContainerParameters();

            Config y = new Config();

            runParams.Config = y;

            runParams.Config.Tty          = true;
            runParams.Config.AttachStderr = true;
            runParams.Config.AttachStdout = true;


            runParams.Config.Image = imageName;


            var result = await client.Containers.CreateContainerAsync(runParams);

            var hostconfig = new HostConfig();

            await client.Containers.StartContainerAsync(result.Id, hostconfig);

            return(result.Id);
        }
        public async Task <CreateContainerResponse> DockerRun(string imageName, int hostPort, int containerPort)
        {
            var runParams = new DotNet.Models.CreateContainerParameters();

            runParams.Config.AttachStderr = true;
            runParams.Config.AttachStdout = true;
            //runParams.Config.ExposedPorts =

            var    ports      = new Dictionary <string, object>();
            string portString = @"{
                                'HostIp': '0.0.0.0',
                                'HostPort': '49153'
                            }";


            ports.Add(hostPort.ToString() + "/tcp", portString);



            //"80/tcp": [
            //                {
            //                    "HostIp": "0.0.0.0",
            //                    "HostPort": "49153"
            //                }

            runParams.Config.Tty = true;
            return(await client.Containers.CreateContainerAsync(runParams));
        }
        public async Task<CreateContainerResponse> DockerRun(string imageName, int hostPort, int containerPort)
        {
            var runParams = new DotNet.Models.CreateContainerParameters();

            runParams.Config.AttachStderr = true;
            runParams.Config.AttachStdout = true;
            //runParams.Config.ExposedPorts = 

                var ports = new Dictionary<string, object>();
             string portString = @"{
                                'HostIp': '0.0.0.0',
                                'HostPort': '49153'
                            }";


            ports.Add(hostPort.ToString() + "/tcp", portString); 



            //"80/tcp": [
            //                {
            //                    "HostIp": "0.0.0.0",
            //                    "HostPort": "49153"
            //                }

            runParams.Config.Tty = true;
            return await client.Containers.CreateContainerAsync(runParams);

        }