로컬 데이터베이스와 작동하도록 Docker 컨테이너 설정

로컬 데이터베이스와 작동하도록 Docker 컨테이너 설정

로컬 데이터베이스와 작동하도록 Docker 컨테이너를 설정하려고 합니다.

이미지는 이거다https://hub.docker.com/r/tuxgasy/dolibarr/mariadb그리고 컨테이너를 만들고 거기에 연결하는 것도 제안합니다 .

mariadb대신 내 배포판의 기본 저장소에서 설치된 기본 시스템에 이미 있는 데이터베이스를 사용하도록 Dolibarr 컨테이너를 구성하고 싶습니다 .

작동하는 Docker 애플리케이션을 설정하려고 시도하는 것은 이번이 처음이고 데이터베이스 유지 관리에 대한 전문가가 아니기 때문에 약간 당황스럽습니다.

어떻게 해야 하나요? 지침 광고를 가능한 한 명확하고 상세하게 유지하십시오.

내 시스템은 완전히 업데이트된 openSUSE Tumbleweed입니다.

답변1

세 가지 방법이 있습니다:

  1. --net=host 옵션을 사용하십시오. 이 네트워크 모드는 기본적으로 컨테이너가 localhost에 직접 액세스할 수 있으며 이제 localhost:3306에 액세스할 수 있음을 의미합니다. 명령은 다음과 같습니다

    docker run --net=host ... tuxgasy/dolibarr

    그런 다음 mariadb에 연결하십시오.localhost:3306

  2. mariadb 소켓을 도커 컨테이너에 마운트하고 소켓을 통해 mariadb에 연결합니다. 예를 들어 소켓 위치를 /var/run/mysqld/mysqld.sock로 구성하면 이를 마운트하여 연결 지점으로 사용할 수 있습니다.

    docker run -v /var/run/mysqld:/mariadb_socket ... tuxgasy/dolibarr

    /mariadb_socket/mysqld.sock그런 다음 앱의 소켓을 통해 mariadb에 연결합니다.

  3. Docker 호스트의 IP를 사용하십시오. 먼저 docker 네트워크에서 호스트 IP 주소를 가져옵니다(Linux 유형에서 ip addr show다음을 찾습니다.docker0 ip). 이것은 일반적으로 다음과 같습니다.172.17.0.1(귀하의 마일리지가 다를 수 있습니다). 그런 다음 해당 IP 주소를 사용하여 예를 들어 mariadb에 연결할 수 있어야 합니다.172.17.0.1:3306

메모:... 이미 사용하고 있는 다른 옵션을 의미합니다.

답변2

Docker v18.03+부터는 다음을 사용할 수 있습니다.호스트.docker.내부Docker 호스트에 연결하기 위한 호스트 이름입니다.

이는 개발용이며 Docker Desktop 외부의 프로덕션 환경에서는 작동하지 않습니다.

링크

답변3

나는 정확히 그 일을 하기 위해 도커 컨테이너를 만들었습니다.https://github.com/qoomon/docker-host

그런 다음 컨테이너 이름 dns를 사용하여 컨테이너 내부에서 호스트 시스템에 액세스할 수 있습니다(예: 컬).http://dockerhost:9200

답변4

qoomon/docker-host는 다른 방법보다 나을 것이 없다는 점을 명심하세요. Docker 브리지에 액세스하기 전에 바인딩하고 수신 대기하도록 Docker 호스트에서 애플리케이션을 구성해야 합니다. 제 생각에는 qoomon/docker-host는 단지 네트워크 패킷에 추가 레이어를 추가하는 것일 뿐이며, 이는 실질적인 이점을 제공하지 않습니다.

이것은 사람들이 놓치고 있는 qoomon/docker-host에 대한 README 사본입니다. "Linux 시스템에서 docker-host 컨테이너를 통해 연결하려면 호스트 애플리케이션을 localhost(127.0.0.1) 외에도 브리지 네트워크 게이트웨이에 바인딩해야 합니다. 브리지 네트워크 게이트웨이 IP 주소를 얻으려면 다음 docker 명령을 사용하십시오."

관련 정보