>  기사  >  백엔드 개발  >  도커 컨테이너는 네트워크를 설정하지 않았음에도 불구하고 다른 네트워크를 선택합니다.

도커 컨테이너는 네트워크를 설정하지 않았음에도 불구하고 다른 네트워크를 선택합니다.

PHPz
PHPz앞으로
2024-02-09 11:51:17537검색

도커 컨테이너는 네트워크를 설정하지 않았음에도 불구하고 다른 네트워크를 선택합니다.

Docker에서는 다른 네트워크를 선택하여 컨테이너에 네트워크 연결을 제공할 수 있습니다. 놀랍게도 Docker는 명시적으로 네트워크를 설정하지 않았음에도 불구하고 여전히 기본 네트워크를 컨테이너에 할당합니다. 이 문제는 네트워크 구성과 관련된 몇 가지 문제에 직면할 수 있으므로 많은 개발자를 괴롭힙니다. 이 기사에서는 Docker 컨테이너에 기본 네트워크가 있는 이유와 PHP 편집기 Youzi의 도움을 받아 다양한 네트워크 중에서 선택하는 방법을 자세히 설명합니다.

질문 내용

go 서비스를 위한 docker 구성을 설정하는 데 문제가 있습니다. 다음은 내 설정 개요입니다

으아악

Graphql Playgroud(http)가 http://localhost:8080에서 실행되고 있는데 포트가 공개된 것으로 추정되지만 놀이터 UI에 액세스할 수 없습니다.

내가 하고 싶은 일은:

  1. graphql 플레이그라운드 및 컨테이너 내의 다른 포트에서 실행되는 기타 API에 액세스하는 기능
  2. 내 고정된 Go 앱에서 mysql 컨테이너를 분리하도록 요청할 수 있습니다(이를 rules_docker와 동일한 네트워크에 배치하는 방법을 모르겠습니다).
  3. docker exec -it ... /bin/bash 내 docker 컨테이너에 추가합니다. (bash가 설치되지 않았기 때문에 작동하지 않지만 이 Container_image 명령을 통해 bash를 설치하는 방법을 모르겠습니다.) 오류는 다음과 같습니다:
으아악

생성된 도커 이미지 ID를 가져와 실행하면 docker run -p 8080:8080 image_id graphql 플레이그라운드에 액세스할 수 있지만 mysql 컨테이너와 통신할 수 없습니다

다음과 같이 네트워크를 변경하는 경우: docker run --network=host -p 8080:8080 image_id dockerized go 应用程序可以成功与 mysql 容器通信,但随后 graphql playground 变得无法访问。仅当我维护 --network=bridge 时,graphql 游乐场才可访问。我不确定为什么 mysql 也不使用 bridge 시작할 때 네트워크를 지정하지 않기 때문입니다. 이것이 내가 mysql 컨테이너를 얻은 방법입니다

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",
    ],
)

Solution

답은 여기에 있습니다: go 및 docker를 사용하여 mysql 서버에 연결할 수 없습니다. - 전화 접속 tcp 127.0.0.1:3306: 연결: 연결이 거부되었습니다

Mac의 docker는 Linux VM을 사용하기 때문에 실제로 다음 주소를 사용하여 mysql에 액세스해야 하는 것으로 나타났습니다.

으아악

위 내용은 도커 컨테이너는 네트워크를 설정하지 않았음에도 불구하고 다른 네트워크를 선택합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제