
도커(Docker)는 컨테이너 기반의 가상화 기술로, 전세계 개발자들로부터 큰 사랑을 받고 있습니다. 대부분의 개발자나 운영팀에서는 docker를 필수로 사용하고 있다고 해도 과언이 아닐 것입니다.
불과 몇년 전 어느 기사에서는 구글에서는 모든것이 도커 컨테이너로 돌아간다는 이야기도 있었을 정도로 도커는 현대 소프트웨어 개발 및 배포에 있어 핵심적인 역할을 하고 있습니다.
저는 도커를 꽤 오랫동안 사용하면서 여러 사람들의 권장 설정과 달리 sudo 명령어를 사용하여 도커를 실행해 왔습니다. 주변 개발자들이나 운영팀에서는 편의성을 위해 보통 도커 그룹에 사용자를 추가하여 sudo 없이 도커를 실행하는 방식을 권장하곤 했습니다.
도커 데몬은 기본적으로 root 사용자 소유의 유닉스 소켓에 바인딩되기 때문에, 일반 사용자 계정은 sudo를 통해서만 접근할 수 있습니다. 즉, 도커 데몬은 항상 (일반적으로) root 사용자로 실행되어야 합니다.
최근 돌풍을 일으키고 있는 OpenClaw를 도커 컨테이너에 격리시켜 설치해보았습니다. 그런데, 꽤 많은 사람들이 도커 권한과 관련되어 문제를 겪고 있는 것을 알게되었고, 상당수의 개발자 분들조차 도커가 특별한 설정을 하지 않았다면 root 권한으로 동작하고 있는 것을 모르고 있다는 것을 알게되었습니다.
이번 기회에 제가 왜 sudo를 사용하여 도커를 실행하는지, 그리고 일반적인 권장 설정을 따르지 않는 이유에 대해 설명해보고자 합니다.
많은 사람들이 도커를 실행할 때마다 sudo를 사용하는 것이 번거롭다고 느낍니다. 그래서 일반적으로 도커 그룹에 사용자를 추가하여 sudo 없이 도커를 실행할 수 있도록 설정하는 것을 권장하고 있으며, 공식 도커 문서에서도 이러한 방법을 안내하고 있습니다.
하지만, 이 방법은 보안상 심각한 위험을 초래할 수 있습니다. 도커 그룹에 속한 사용자는 도커 데몬에 대한 완전한 접근 권한을 가지게 되며, 이는 곧 시스템 전체에 대한 root 권한을 의미합니다.
저희는 일반적으로 보안을 위해 root 사용자를 피하고, 일반 사용자로 시스템에 접근하여 꼭 필요한 작업을 할 때만 sudo를 사용합니다. 일반적으로 권장하는 도커 그룹에 사용자를 추가하는 행위는 일반 사용자 계정을 root 권한과 동등하게 만들어 버리는 것과 같습니다.
Dan Walsh라는 리눅스 보안 전문가가 작성한 글에서 이 문제를 아주 명확하게 설명하고 있습니다. 도커 그룹에 속한 사용자는 도커 데몬을 통해 호스트 시스템의 파일 시스템에 접근할 수 있으며, 심지어 호스트의 root 권한을 획득할 수도 있습니다.
이 글이 10년전에 작성된 글임에도 불구하고, 여전히 도커 권한 설정과 관련된 문제는 현재진행형이라는 점이 놀랍습니다.
전통적으로 sudo 명령어는 특정 명령어에 대해 일시적으로 root 권한을 부여하는 안전한 방법으로 사용되어 왔습니다. 또한, sudo는 명령어 실행 로그를 남기기 때문에, 누가 언제 어떤 명령어를 실행했는지 추적할 수 있습니다.
반면, 도커 그룹에 사용자를 추가하는 것은 이러한 추적 기능을 제공하지 않으며, 도커 데몬에 대한 무제한 접근 권한을 부여합니다. 이는 보안 사고 발생 시 책임 소재를 명확히 하기 어렵게 만듭니다.
도커 공식 문서에서도 도커 그룹에 사용자를 추가하는 것이 보안 위험을 초래할 수 있음을 경고하고 있습니다.
저와 같은 입장을 가진 사람들이 많아서, 도커 커뮤니티에서는 최근에 Rootless Docker라는 기능을 도입했습니다. Rootless Docker는 도커 데몬과 컨테이너를 비루트(non-root) 사용자로 실행할 수 있도록 지원합니다. 이는 도커 데몬과 컨테이너가 호스트 시스템의 root 권한을 필요로 하지 않도록 하여 보안성을 크게 향상시킵니다.
하지만 실용적인 차원에서 보면, 네트워킹/포트 바인딩이나 일부 기능(특권 컨테이너 등)에서 제약이 생길 수 있고, 환경에 따라 세팅/운영 난이도가 급격하게 올라가기도 합니다.
Docker보다 사실 더 깔끔한 대안으로, Podman을 사용하는 것도 고려해 볼만 합니다. Podman은 도커와 유사한 컨테이너 관리 도구이지만, 기본적으로 비루트(non-root) 사용자로 실행되도록 설계되었습니다. Podman은 도커와 호환되는 CLI를 제공하며, 대부분의 도커 명령어를 동일하게 사용할 수 있습니다.
Podman은 도커 데몬이 필요 없기 때문에, 도커 데몬이 가지는 보안 취약점에서 자유로울 수 있습니다. 또한, Podman은 루트 권한 없이 컨테이너를 실행할 수 있기 때문에, 도커 그룹에 사용자를 추가하는 것과 같은 보안 위험을 피할 수 있습니다.
하지만 Podman 생태계가 도커만큼 크지 않고, 일부 도커 전용 툴링이나 오케스트레이션 솔루션과의 호환성 문제가 있을 수 있다는 점은 고려해야 합니다.
편의를 위해 도커 그룹에 사용자를 추가하여 sudo 없이 도커를 실행하는 것은 심각한 보안 위험을 초래할 수 있습니다. 도커 그룹에 속한 사용자는 도커 데몬을 통해 호스트 시스템의 root 권한을 획득할 수 있기 때문에, 이는 일반 사용자 계정을 사실상 root 권한과 동등하게 만들어 버리는 것과 같습니다.
저는 개인적으로 도커를 실행할 때마다 sudo를 사용하는 것을 추천합니다. 이는 보안성을 유지하면서도 필요한 경우에만 root 권한을 부여하는 안전한 방법이기 때문입니다.
멀티유저 서버/업무 서버 상에서 도커를 설치하여 운용한다면, 도커 그룹에 사용자를 추가하지 말고 sudo로만 실행하는 것이 안전합니다. 혹은 Rootless Docker나 Podman과 같은 대안을 고려해 보는 것도 좋습니다.
다만, 현실적으로는 개인 PC에 혼자만 사용하는 용도로 도커를 사용한다면 상관이 없겠지요.
이상 도커의 root 권한과 관련된 최근의 이슈들을 보면서 제가 생각하는 바를 정리해 보았습니다. 모두 안전한 도커 사용하시기 바랍니다.





