Description
Testcontainers version
3.2.0
Using the latest Testcontainers version?
Yes
Host OS
MacOS with Parallels-VM running Windows
Host arch
x64
.NET version
6.0.400 (also tried 7.0.400 und .NET Framework 4.8)
Docker version
Client:
Cloud integration: v1.0.35-desktop+001
Version: 24.0.5
API version: 1.43
Go version: go1.20.6
Git commit: ced0996
Built: Fri Jul 21 20:32:30 2023
OS/Arch: darwin/amd64
Context: desktop-linux
Server: Docker Desktop 4.22.1 (118664)
Engine:
Version: 24.0.5
API version: 1.43 (minimum version 1.12)
Go version: go1.20.6
Git commit: a61e2b4
Built: Fri Jul 21 20:35:45 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.21
GitCommit: 3dce8eb055cbb6872793272b4f20ed16117344f8
runc:
Version: 1.1.7
GitCommit: v1.1.7-0-g860f061
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Docker info
Client:
Version: 24.0.5
Context: desktop-linux
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.11.2-desktop.1
Path: /Users/lernmoment/.docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.20.2-desktop.1
Path: /Users/lernmoment/.docker/cli-plugins/docker-compose
dev: Docker Dev Environments (Docker Inc.)
Version: v0.1.0
Path: /Users/lernmoment/.docker/cli-plugins/docker-dev
extension: Manages Docker extensions (Docker Inc.)
Version: v0.2.20
Path: /Users/lernmoment/.docker/cli-plugins/docker-extension
init: Creates Docker-related starter files for your project (Docker Inc.)
Version: v0.1.0-beta.6
Path: /Users/lernmoment/.docker/cli-plugins/docker-init
sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
Version: 0.6.0
Path: /Users/lernmoment/.docker/cli-plugins/docker-sbom
scan: Docker Scan (Docker Inc.)
Version: v0.26.0
Path: /Users/lernmoment/.docker/cli-plugins/docker-scan
scout: Command line tool for Docker Scout (Docker Inc.)
Version: 0.20.0
Path: /Users/lernmoment/.docker/cli-plugins/docker-scout
Server:
Containers: 2
Running: 2
Paused: 0
Stopped: 0
Images: 12
Server Version: 24.0.5
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc io.containerd.runc.v2
Default Runtime: runc
Init Binary: docker-init
containerd version: 3dce8eb055cbb6872793272b4f20ed16117344f8
runc version: v1.1.7-0-g860f061
init version: de40ad0
Security Options:
seccomp
Profile: unconfined
cgroupns
Kernel Version: 5.15.49-linuxkit-pr
Operating System: Docker Desktop
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.773GiB
Name: docker-desktop
ID: 88bc9875-20c6-4947-9ca5-c64ddce2510c
Docker Root Dir: /var/lib/docker
Debug Mode: false
HTTP Proxy: http.docker.internal:3128
HTTPS Proxy: http.docker.internal:3128
No Proxy: hubproxy.docker.internal
Experimental: false
Insecure Registries:
hubproxy.docker.internal:5555
127.0.0.0/8
Live Restore Enabled: false
WARNING: daemon is not using the default seccomp profile
What happened?
I wanted to follow a simple Testcontainers Tutorial in my environment. I'm running an Intel Mac with Ventura 13.5.1. This runs Docker Desktop as well as Windows 11 Pro in a Parallels VM. As I don't want to run Docker inside the Parallels-VM, I thought it would be great to simply use the Docker Engine on my Mac as a remote Docker Host. I already had SSH configured so I updated my .testcontainers.properties
file as follows:
docker.client.strategy=org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy
docker.host=ssh://username@hostname
Running the example (see below) results in Exception: Unknown URL scheme ssh
. There is no additional information what this means and where it comes from.
Relevant log output
No response
Additional information
After several hours of searching and trying different configurations, I came across dotnet/Docker.DotNet#540 . Which sounds to me like this is causing the problem I have.
As my use case seems to be rare (at least I didn't find further reports), I accept that there will be no change. However, it would be really awesome, if the documentation could give a hint about this. For example a simple note like SSH is not supported for connecting to remote host. at this paragraph, would be really good.
Here is the example I've used (yes, it is VB.Net, but C# would be the same):
Module Module1
Sub Main()
Dim guid = TestContainer().GetAwaiter().GetResult()
Console.WriteLine(guid)
Console.ReadLine()
End Sub
Private Async Function TestContainer() As Task(Of String)
Dim helloContainer = New ContainerBuilder().
WithImage("testcontainers/helloworld:1.1.0").
WithPortBinding(8080, True).
WithWaitStrategy(Wait.ForUnixContainer().UntilHttpRequestIsSucceeded(Function(r) r.ForPort(8080))).
Build()
Await helloContainer.StartAsync().ConfigureAwait(False)
Dim http As New HttpClient()
Dim requestUriBuilder As New UriBuilder(Uri.UriSchemeHttp,
helloContainer.Hostname,
helloContainer.GetMappedPublicPort(8080),
"uuid")
Dim guid = Await http.GetStringAsync(requestUriBuilder.Uri).ConfigureAwait(False)
Return guid
End Function
End Module