Open MartinCanto opened 5 months ago
IIRC we use the results from container inspect to determine the IP to connect to. Can you do docker inspect <containerID>
and paste the full output?
Sure here is the output of the docker inspect on the container.
[ { "Id": "406b692a272b815b18c3a5612de0ab3706e6d1e5467af77acce7b9228d9ea314", "Created": "2024-02-01T18:44:36.288836309Z", "Path": "/docker-entrypoint.sh", "Args": [ "nginx", "-g", "daemon off;" ], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 10164, "ExitCode": 0, "Error": "", "StartedAt": "2024-02-01T18:45:00.518925269Z", "FinishedAt": "2024-02-01T18:44:51.567637109Z" }, "Image": "sha256:d22981564c8b7e55050183d58ff987203e550e9707b39b7a2474412ba13552ec", "ResolvConfPath": "/var/lib/docker/containers/406b692a272b815b18c3a5612de0ab3706e6d1e5467af77acce7b9228d9ea314/resolv.conf", "HostnamePath": "/var/lib/docker/containers/406b692a272b815b18c3a5612de0ab3706e6d1e5467af77acce7b9228d9ea314/hostname", "HostsPath": "/var/lib/docker/containers/406b692a272b815b18c3a5612de0ab3706e6d1e5467af77acce7b9228d9ea314/hosts", "LogPath": "/var/lib/docker/containers/406b692a272b815b18c3a5612de0ab3706e6d1e5467af77acce7b9228d9ea314/406b692a272b815b18c3a5612de0ab3706e6d1e5467af77acce7b9228d9ea314-json.log", "Name": "/priceless_bell", "RestartCount": 0, "Driver": "overlay2", "Platform": "linux", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "", "ExecIDs": null, "HostConfig": { "Binds": null, "ContainerIDFile": "", "LogConfig": { "Type": "json-file", "Config": {} }, "NetworkMode": "default", "PortBindings": { "80/tcp": [ { "HostIp": "", "HostPort": "8080" } ] }, "RestartPolicy": { "Name": "no", "MaximumRetryCount": 0 }, "AutoRemove": false, "VolumeDriver": "", "VolumesFrom": null, "ConsoleSize": [ 25, 201 ], "CapAdd": null, "CapDrop": null, "CgroupnsMode": "host", "Dns": [], "DnsOptions": [], "DnsSearch": [], "ExtraHosts": null, "GroupAdd": null, "IpcMode": "private", "Cgroup": "", "Links": null, "OomScoreAdj": 0, "PidMode": "", "Privileged": false, "PublishAllPorts": false, "ReadonlyRootfs": false, "SecurityOpt": null, "UTSMode": "", "UsernsMode": "", "ShmSize": 67108864, "Runtime": "runc", "Isolation": "", "CpuShares": 0, "Memory": 0, "NanoCpus": 0, "CgroupParent": "", "BlkioWeight": 0, "BlkioWeightDevice": [], "BlkioDeviceReadBps": [], "BlkioDeviceWriteBps": [], "BlkioDeviceReadIOps": [], "BlkioDeviceWriteIOps": [], "CpuPeriod": 0, "CpuQuota": 0, "CpuRealtimePeriod": 0, "CpuRealtimeRuntime": 0, "CpusetCpus": "", "CpusetMems": "", "Devices": [], "DeviceCgroupRules": null, "DeviceRequests": null, "MemoryReservation": 0, "MemorySwap": 0, "MemorySwappiness": null, "OomKillDisable": false, "PidsLimit": null, "Ulimits": [], "CpuCount": 0, "CpuPercent": 0, "IOMaximumIOps": 0, "IOMaximumBandwidth": 0, "MaskedPaths": [ "/proc/asound", "/proc/acpi", "/proc/kcore", "/proc/keys", "/proc/latency_stats", "/proc/timer_list", "/proc/timer_stats", "/proc/sched_debug", "/proc/scsi", "/sys/firmware", "/sys/devices/virtual/powercap" ], "ReadonlyPaths": [ "/proc/bus", "/proc/fs", "/proc/irq", "/proc/sys", "/proc/sysrq-trigger" ] }, "GraphDriver": { "Data": { "LowerDir": "/var/lib/docker/overlay2/b01bd1e2644489b801fd93c9d64bd7508f879aff38d42da823d0941494cfe9c0-init/diff:/var/lib/docker/overlay2/c3tc8hdm07vj05iaf7f2j4s02/diff:/var/lib/docker/overlay2/k2pecepv1z6upos23sn55vghd/diff:/var/lib/docker/overlay2/0d6463669791a67ae525d49b5e4ff68f7cd3b801725723db1e997d663865f8ba/diff:/var/lib/docker/overlay2/9925525861feb27cab23e2c9a7f56b5428585899608f6f59fb739efc503092b1/diff:/var/lib/docker/overlay2/2c4778a5d369ae9d0bbff753c949a7e6de12c8d6d23782ce2195a94fddba979c/diff:/var/lib/docker/overlay2/08ebf6f5f28f288b1b2c2c12e10e3622afad25cd3caad564fa09087680e1532e/diff:/var/lib/docker/overlay2/87c66e0217d3b9dbff67885b2810bc135187500ce471fba7e8faaa23d0231a43/diff:/var/lib/docker/overlay2/486af9f03524bfbdcf16e4ff2acbd6824386571c4a6357f11f74a83c2e51009d/diff:/var/lib/docker/overlay2/bef31e75e2a3c8695259409b1d3b5f6e8990d81402f7936682a396b722add6af/diff", "MergedDir": "/var/lib/docker/overlay2/b01bd1e2644489b801fd93c9d64bd7508f879aff38d42da823d0941494cfe9c0/merged", "UpperDir": "/var/lib/docker/overlay2/b01bd1e2644489b801fd93c9d64bd7508f879aff38d42da823d0941494cfe9c0/diff", "WorkDir": "/var/lib/docker/overlay2/b01bd1e2644489b801fd93c9d64bd7508f879aff38d42da823d0941494cfe9c0/work" }, "Name": "overlay2" }, "Mounts": [], "Config": { "Hostname": "406b692a272b", "Domainname": "", "User": "", "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "ExposedPorts": { "80/tcp": {}, "8080/tcp": {} }, "Tty": false, "OpenStdin": false, "StdinOnce": false, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "NGINX_VERSION=1.25.3", "NJS_VERSION=0.8.2", "PKG_RELEASE=1~bookworm" ], "Cmd": [ "nginx", "-g", "daemon off;" ], "Image": "workspace:latest", "Volumes": null, "WorkingDir": "", "Entrypoint": [ "/docker-entrypoint.sh" ], "OnBuild": null, "Labels": { "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>" }, "StopSignal": "SIGQUIT" }, "NetworkSettings": { "Bridge": "", "SandboxID": "6e514824825eb9ab440007260473f397ac047430d4ba9d041786e1d4b8972cdc", "SandboxKey": "/var/run/docker/netns/6e514824825e", "Ports": { "80/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "8080" } ], "8080/tcp": null }, "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "3361f8a7f6f953aa774f69affc39e83c8128460a92c45d5959b5be47829c00f5", "Gateway": "172.17.0.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "172.17.0.3", "IPPrefixLen": 16, "IPv6Gateway": "", "MacAddress": "02:42:ac:11:00:03", "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": [ "406b692a272b" ], "MacAddress": "02:42:ac:11:00:03", "NetworkID": "73f9891cc4465b85987b1f367c09eaa4ea4d479eb557339e7a404c2fd9c315b6", "EndpointID": "3361f8a7f6f953aa774f69affc39e83c8128460a92c45d5959b5be47829c00f5", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.3", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "DriverOpts": null, "DNSNames": null } } } } ]
What address do you get if you do nslookup dind
?
nslookup dind Server: 127.0.0.11 Address: 127.0.0.11#53
Non-authoritative answer: Name: dind Address: 10.0.7.17
It may not be possible to make the Open in Browser command open the right URL, since neither the hostname (dind
) nor the IP address (10.0.7.17
) appear in the docker inspect
result. However, it still shouldn't be opening 0.0.0.0
, it's supposed to open localhost
in that case...
Thank you for looking into it. I was hoping for some way to just pass the info into it maybe through an env variable or maybe add a label to the container itself that would show up. I appreciate your thorough review.
Bottom Line Up Front (BLUF): Is there a way to configure the ‘Open in Browser’ option to direct to a specific IP address or hostname, instead of defaulting to 0.0.0.0?
I have a setup where a Visual Studio Code (VSCode) server is running within my Docker swarm, alongside a Docker-in-Docker (dind) container. Both are interconnected via a Docker network. I’ve configured the Docker context within the VSCode server, enabling me to execute Docker commands and spawn new containers within the dind container from the VSCode server without any issues.
Additionally, I’ve installed the Docker extension in my VSCode server environment. When I initiate a container and select the ‘Open in Browser’ option from the Docker extension for VSCode, it launches a new browser window. However, it returns an error: “connect ECONNREFUSED 0.0.0.0:8080”.
My question is: How can I configure the system so that when I select ‘Open in Browser’ for a container, it establishes a connection to the dind container over the Docker network, rather than attempting to connect using 0.0.0.0:8080?
For reference, I can successfully curl the dind container from the terminal inside VSCode using the command: curl http://dind:8080.