SW 개발

docker cotainer 내 host 장치 접근

. . . 2022. 8. 24. 16:48
반응형

docker container 에서 usb drive 를 접근할 일이 있어 내용을 정리한다.

docker container 에서 장치접근

일단, docker container 를 다음의 아티클대로 privileged 로 만들었는데도 usb drive 접근이 안됐다.

docker container 를 만드는 시점에서 원하는 dev 장치가 있다면 container 네에서 해당 장치를 접근 할수있었다.

하지만, conatiner 동작 중에 usb 연결을 할 경우, 새로 생성된 dev node 는 보이지 않았다. (새로생성된 /dev/xxx는 container 내에서 보이지 않는다.)

usb 장치들의 경우 container 를 새로 만드는시점에 모두 연결해놓으고 container 동작시키면 되긴하나.. 혹시나 node 가 바뀌기라도 하면 낭패라 해당방법은 유효하지 않다.

장치접근을 위한 dev 폴더연결

보안상 위험한 생각이긴하나.. 이미 privileged를 줬다는것은 보안과 관련없이 컨테이너를 동작시키려고 했다고 생각한다.

  • 필자의 경우 docker container 를 플랫폼개발용 크로스 컴파일세팅용으로 쓰고있기때문에 보안과 관계없이 어떤상황에서건 동작시키고싶었다.
  • usb drive 는 크로스컴파일된 이미지를 sd card 에 쓰는 동작이 필요했기때문에 해당방법을 사용하였다.

간단하게... 다음과같이 host 의 dev 폴더를 container 쪽으로 연결하면된다.

    volumes:
      - /dev:/dev

컨테이너를 재시작하면, usb 처럼 중간에 생성되는 /dev/xxx 에 대해서도 접근가능하다.

  • 보안상의 이슈로 ro 속성으로 하려다가도... rw 동작이 안되면 어차피 의미없기때문에 그냥 위험을 감수하고 쓰도록한다.
  • docker container 내에 user 를 추가하고 해당 user 별 권한을 지정하는 방법도있는것같지만, 대부분의 /dev/xxx 장치들은 어차피 root 권한이 필요할것이라, 그냥 맘편히? 사용하자.

...

반응형