컴퓨터 지식 네트워크 - 컴퓨터 백과사전 - Docker 컨테이너에서 Docker 작동(dind)

Docker 컨테이너에서 Docker 작동(dind)

Docker 컨테이너에서 Docker 서비스를 다시 실행하는 것입니다.

컨테이너에서 Docker를 작동시키는 것은 Docker 이미지 구축과 같은 CI 도구에서 매우 일반적입니다.

그러나 이미지 파일 저장 등 컨테이너에서 Docker 서비스를 실행할 때 발생하는 다양한 문제와 중첩된 컨테이너는 유지 관리가 쉽지 않기 때문에 나중에 더 실용적인 또 다른 솔루션이 도출되었습니다. 즉, 호스트 Docker 서비스 양말에 마운트하는 것입니다.

이렇게 하면 중첩된 부작용이 발생하지 않으며 빌드 캐시가 여러 호출에서 공유됩니다.

ps: 더 자세한 내용은 docker가 공식적으로 언급한 do-not-use-docker-in-docker-for-ci 기사를 읽어보세요.

다음에는 어떻게 작성하겠습니다. 이를 사용하고 사용 시나리오를 기록합니다.

다음과 같은 요구 사항이 있습니다.

특정 이미지가 업데이트되면 docker에 다시 가져와 배포하도록 알립니다. , 컨테이너가 업데이트되면 업데이트 배포를 위해 자동으로 실행됩니다.

제가 작성한 프로그램은 호스트가 아닌 Docker에서도 실행되므로 방법이 없습니다. 직접 위 명령을 실행하려면 Docker가 필요합니다.

간단히 말해서 다음만 수행하면 됩니다.

그러면 docker ps는 호스트의 모든 컨테이너를 볼 수 있습니다. /p>

p>

예를 들어, 내 것은

물론 이 컨테이너를 구축할 때 여기에 있는 stack.yaml 파일을 추가하거나 마운트해야 하는데 이는 전혀 문제가 되지 않습니다.

프로그램에서 이 CMD를 실행하려는 경우 매우 간단합니다.

프로그램을 작성한 후 이 Dockfile을 사용하여 이미지를 빌드할 수 있습니다.

이 이미지의 스택을 실행합니다. .yaml 파일을 구성하고 마운트해야 합니다.

.docker 폴더를 다시 마운트한 것을 볼 수 있습니다. 이 문제는 나중에 다루겠습니다.

이 매개변수는 버전 17.9 이후에 새로 추가되었으며 최신 이미지를 가져오지 않는 배포 문제를 해결하는 데 사용됩니다.

force docker. 새 이미지를 가져오려면 배포

비공개 웨어하우스에 로그인해야 액세스 권한이 있으므로 먼저 호스트 컴퓨터에 로그인해야 합니다. 로그인에 성공하면 ~에서 새로 생성된 구성 파일을 찾을 수 있습니다. /.docker

, 인증에 필요한 정보가 저장되어 있습니다. 하지만 이 정보는 Docker 컨테이너에서 얻을 수 없으므로 오류가 보고됩니다.

해결 방법은 다음과 같습니다. 구성 파일을 컨테이너에 넣습니다.

문제 설명:

네트워크 구조는 다음과 같습니다.

클라이언트 -> 서버의 Nginx 컨테이너(역방향 생성) -> 애플리케이션

Nginx에서 구성됨

애플리케이션에서 얻은 "HTTP_X_FORWARDED_FOR" 헤더는 클라이언트의 실제 IP가 아닌 10.255.0.2입니다.

해결 방법:

google: docker 10.255.0.2

Get 정보가 꽤 많은데, 그 중 대부분이 Docker가 3~4년 동안 닫지 않은 ISSUE입니다....

현재 사용 가능한 솔루션은

上篇: 대련에서 바오터우까지 K55 열차가 연결되어 있나요? 下篇: 대푸풍경구 입장권은 얼마인가요?
관련 내용