2023. 6. 20. 09:06ㆍCloud Native
- 목차
docker file 생성 시 구동 시키고자 하는 program이 특정 동적 library에 의존하는 경우가 있습니다.
이때 docker file 생성 때 의존하는 library를 모두 포함시켜 줍니다.
그런데, 의존하는 library가 어떤 설치에 의해 생성되는 library일 수도 있습니다.
예를들어 nVidia가 제공하는 video SDK에 포함된 libnvcuvid.so가 대표적 경우 입니다.
libnvcuvid.so의 본체는 보통 /usr/lib64/libnvcuvid.so.530.30.02와 같이 설치되어 있습니다.
이후 libnvcuvid.so를 사용해 빌드할 때는 libnvcuvid.so.530.30.02로 빌드가 됩니다.
이렇게 빌드한 docker image를 어떤 환경에 deploy 할 때 여기서 다시 해당 docker image를 가지고 새로운 docker image를 만들 수 있습니다. 이 과정에서 deploy 될 H/W에 맞는 nVidia video SDK를 설치할 수 있습니다.
이때 설치되는 video SDK가 libnvcuvid.so.530.30.02가 아니라 다른 version을 설치하게 될 수도 있습니다.
ldd로 program이 의존하는 libnvcuvid 정보를 살펴보면,
libnvcuvid.so.1 => /lib64/libnvcuvid.so.1 (0x00007f63046c8000) 와 같이 되어 있습니다.
(libnvcuvid.so는 libnvcuvid.so.1에 대한 symbolic link이므로 이를 사용하는 program은 libnvcuvid.so.1을 link 합니다)
그런데, libnvcuvid.so.1에 대해서 확인해보면, 이 파일도 link 파일이며, 이는 본체인 libnvcuvid.so.530.30.02에 대한 link 입니다.
즉, 이 프로그램을 deploy하는 docker image에서는 자신이 구동될 H/W에 맞는 nVidia SDK를 설치 했을 수 있으며, /usr/lib64에는 libnvcuvid.so.530.30.02가 아닌 libnvcuvid.so.510.73.08과 같은 다른 version의 library가 설치 되어 있을 수도 있습니다.
그래서 하위호환성이 보장되는 library의 경우 libnvcuvid.so.1과 같은 symbolic link를 사용해 program을 build하면 deploy 시 도움이 됩니다.
'Cloud Native' 카테고리의 다른 글
REST client on vscode (0) | 2023.06.27 |
---|---|
Jaeger (예거) (0) | 2023.06.26 |
RabbitMQ, AMQP (0) | 2023.06.07 |
CSR (Certificate Signing Request), SSC (Self Signed Certificate) (0) | 2023.01.19 |
카나리 (Canary) 배포 (Release) (0) | 2023.01.19 |