In Docker können wir durch Auswahl verschiedener Netzwerke Netzwerkkonnektivität zum Container bereitstellen. Überraschenderweise weist Docker dem Container immer noch ein Standardnetzwerk zu, obwohl wir nie explizit ein Netzwerk festgelegt haben. Dieses Problem stört viele Entwickler, da sie möglicherweise auf Probleme im Zusammenhang mit der Netzwerkkonfiguration stoßen. In diesem Artikel erklären wir ausführlich, warum Docker-Container über Standardnetzwerke verfügen und wie Sie mithilfe des PHP-Editors Youzi zwischen verschiedenen Netzwerken wählen können.
Ich habe Probleme beim Einrichten der Docker-Konfiguration für den Go-Dienst. Nachfolgend finden Sie eine Übersicht über mein Setup
go_binary( name = "main_arm64", embed = [":server_lib"], goarch = "arm64", goos = "linux", visibility = ["//visibility:public"], ) container_image( name = "ww_server_image", base = "@go_image_static_arm64//image", entrypoint = ["/main_arm64"], files = [":main_arm64"], ports = [ "8080", "3306", ], )
Auf mir läuft ein GraphQL Playgroud (http) http://localhost:8080
und obwohl der Port angeblich öffentlich ist, kann ich nicht auf die Playground-Benutzeroberfläche zugreifen.
Was ich tun möchte ist:
rules_docker
stellen soll). docker exec -it ... /bin/bash
in meinen Docker-Container (das funktioniert nicht, weil Bash nicht installiert ist, aber ich weiß nicht, wie ich Bash über diesen Befehl „container_image“ installieren soll)
Der Fehler ist wie folgt: oci runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $path: unknown
Wenn ich die generierte Docker-Image-ID erhalte und ausführe docker run -p 8080:8080 image_id
, kann ich auf den Graphql-Playground zugreifen, aber nicht mit dem MySQL-Container kommunizieren
Wenn ich das Netzwerk wie folgt ändere: docker run --network=host -p 8080:8080 image_id
dockerized go 应用程序可以成功与 mysql 容器通信,但随后 graphql playground 变得无法访问。仅当我维护 --network=bridge
时,graphql 游乐场才可访问。我不确定为什么 mysql 也不使用 bridge
weil ich beim Starten nie das Netzwerk angebe. So habe ich den MySQL-Container bekommen
docker run -p 3306:3306 --name my-db -e MYSQL_ROOT_PASSWORD=testing -d mysql:8.0.31
Die Antwort ist hier: Verbindung zum MySQL-Server mit Go und Docker nicht möglich – Einwahl-TCP 127.0.0.1:3306: Verbindung: Verbindung abgelehnt
Es stellt sich heraus, dass ich tatsächlich über die folgende Adresse auf MySQL zugreifen muss, da Docker auf dem Mac eine Linux-VM verwendet:
docker.for.mac.localhost:3306
Das obige ist der detaillierte Inhalt vonDer Docker-Container wählt ein anderes Netzwerk aus, obwohl er nie ein Netzwerk festlegt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!