public static async Task RestMssqlAsync(SqlConnectionFactory connectionFactory)
        {
            var containerName = "rfid-mssql";
            var imageName     = "rfid-mssql";

            using (var client = new DockerClientConfiguration(new Uri("http://192.168.0.105:2375")).CreateClient())
            {
                var containers = await client.Containers.ListContainersAsync(new ContainersListParameters { All = true });

                var mssqlContainer = containers.SingleOrDefault(x => x.Names.Contains($"/{containerName}"));
                if (mssqlContainer != null)
                {
                    await client.Containers.StopContainerAsync(containerName, new ContainerStopParameters());

                    await client.Containers.RemoveContainerAsync(containerName, new ContainerRemoveParameters());
                }

                await client.Containers.CreateContainerAsync(new CreateContainerParameters
                {
                    Name       = containerName,
                    Image      = imageName,
                    HostConfig = new HostConfig
                    {
                        PortBindings = new Dictionary <String, IList <PortBinding> >
                        {
                            ["1433/tcp"] = new List <PortBinding>
                            {
                                new PortBinding
                                {
                                    HostIP   = "0.0.0.0",
                                    HostPort = "1433/tcp"
                                }
                            }
                        }
                    },
                    NetworkingConfig = new NetworkingConfig
                    {
                        EndpointsConfig = new Dictionary <String, EndpointSettings>
                        {
                            ["rfid"] = new EndpointSettings
                            {
                                IPAddress = "172.18.0.3"
                            }
                        }
                    }
                });

                await client.Containers.StartContainerAsync(containerName, new ContainerStartParameters());

                // the sql server needs some time before the first connection to be open
                while (true)
                {
                    try
                    {
                        using (var connection = await connectionFactory.CreateConnectionAsync())
                        {
                            connection.Open();
                        }

                        break;
                    }
                    catch
                    {
                        await Task.Delay(4000);
                    }
                }
            }
        }