Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker 컨테이너 user별 볼륨 path 격리 문제 #24

Open
Yanghyeondong opened this issue Nov 12, 2023 · 0 comments
Open

Docker 컨테이너 user별 볼륨 path 격리 문제 #24

Yanghyeondong opened this issue Nov 12, 2023 · 0 comments
Assignees
Labels
bug Something isn't working enhancement New feature or request

Comments

@Yanghyeondong
Copy link
Collaborator

Yanghyeondong commented Nov 12, 2023

현재 user 마다 임의로 uid를 주고 해당 uid를 바탕으로 개별 도커 컨테이너를 구성하는 작업을 하고있습니다.
하지만 여기에서 한 가지 문제가 발생하는데, 바로 사용자 별 컨테이너 볼륨 격리가 어렵다는 점입니다.
현재 저희 프로젝트의 상황과 해당 문제가 발생하는 원인을 나열하면 다음과 같습니다.

1. 저희 프로젝트는 docker out of docker 구조를 사용합니다.
로컬 머신 Host(이하 H)에서 벡엔드를 돌리고 있는 컨테이너 backend-api_server-1(이하 C1) 이 있는 상황에서,
C1 이 다시 H 속에 자바 실행용 유저 컨테이너 user-{uid}-container(이하 C2) 를 실행합니다. C1 속에 C2를 실행 시키는 것은 보안상 도커에서 권장하지 않습니다. 따라서 docker out of docker 구조가 됩니다.

2. docker out of docker 에서는 마운트 할 당시 H의 프로젝트 경로를 잊어버리게 됩니다.
저희가 처음에 C1을 구동할 때는 H속 저희 프로젝트 폴더에 가서 docker-compose를 시키기 때문에 docker 에서 상대경로인 ./app을 처리할 수 있습니다. 하지만 C2를 구동할 당시에는 H의 경로를 잊어버린 채로 진행되기 때문에, 정상적인 마운트가 어렵습니다.

3. 잊어버린 H의 경로를 환경변수로 등록하려 했으나, 호환성 등의 문제가 있습니다
실행 당시의 H의 절대 경로를 docker-compose의 환경 변수에 pwd 등으로 등록해서 사용하려 했으나, 윈도우인지 맥인지 리눅스인지에 따라 작동이 조금씩 다르고 특히 윈도우의 경우 현재 잘 작동하지 않는 것으로 확인됩니다.

4. 따라서, H의 폴더를 마운트하지 말고 named volume 을 사용하려 했으나, 이럴 경우 subpath를 설정할 수 없습니다.
https://stackoverflow.com/questions/38164939/can-we-mount-sub-directories-of-a-named-volume-in-docker
이 기능을 적용시키고 싶으면 쿠버네티스가 필요합니다. 😓

5. subpath를 사용할 수 없기에, user별 볼륨 path 격리 문제가 생깁니다.

6. user 별 named 볼륨을 만들경우, 격리는 되지만 C1이 구동 중인 상황에서 가변적인 user 추가 볼륨을 다루지 못합니다

추후 변동사항이 생기면 추가 코멘트를 올리겠습니다.

@Yanghyeondong Yanghyeondong added bug Something isn't working enhancement New feature or request labels Nov 12, 2023
@Yanghyeondong Yanghyeondong self-assigned this Nov 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant