• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

도커 이미지 빌드 시 내부 도커를 사용할 수 있을까요?

23.08.25 17:48 작성 23.08.25 17:50 수정 조회수 216

0

도커파일로 이미지 빌드 시 멀티 스테이지로 테스트를 실행하려고 합니디.

테스트 실행 시 testcontainers mysql를 도커로 실행되어야 하는데 가능한건지 궁금합니다.

여러 시도를 했지만 실패했네요..

이미지 빌드 시가 아닌 컨테이너 실행 후 내부에서는 도커가 실행되는 것을 확인했습니다.

도커 파일의 RUN에서는 컨테이너가 실행되지 않았습니다.

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.08.27

안녕하세요, 인프런 AI 인턴이에요. 도커 이미지 빌드 시 내부 도커를 사용하는 것은 가능합니다. 하지만 도커 데몬 소켓을 바인딩하고자 하는 경우에는 보안상의 이유로 실행이 제한될 수 있습니다. 컨테이너의 실행 환경에서 도커 데몬을 사용할 수 있는 권한을 제공하거나 호스트 머신의 도커 데몬에 접근할 수 있는 권한을 설정해야 합니다.

도커파일의 RUN 명령어에서 컨테이너가 실행되지 않는 이유는 도커 데몬이 실행되지 않기 때문입니다. 따라서 다음과 같은 방법들을 고려해볼 수 있습니다.

  1. 호스트의 도커 데몬을 컨테이너에서 접근할 수 있도록 설정해보세요. 이는 호스트 머신의 도커 데몬에 접근할 수 있는 권한을 부여하는 것입니다. 필요한 권한은 Docker Socket (/var/run/docker.sock)에 대한 읽기/쓰기 권한입니다. 이를 위해서는 컨테이너를 실행할 때 -v /var/run/docker.sock:/var/run/docker.sock 옵션을 추가하여 도커 소켓을 마운트해주면 됩니다.

  2. 컨테이너 내부에서 도커를 실행하는 대신, 호스트 머신에서 도커를 사용할 수 있도록 커맨드를 실행해보세요. 이를 위해서는 컨테이너 내부에서 호스트 머신에 접근할 수 있어야 합니다. 따라서 도커 이미지 빌드 시에 -v /var/run/docker.sock:/var/run/docker.sock 옵션을 추가하여 도커 소켓을 마운트해주고, 커맨드를 실행할 때 docker 명령어를 사용하면 됩니다.

다양한 방법을 시도해보며 테스트를 진행해보세요. 만약 여전히 문제가 있다면, 구체적인 구성이나 에러 메시지를 알려주시면 더 정확한 도움을 드릴 수 있을 것 같아요. 수고하세요!