docker 3

[python] docker stack + nginx를 이용한 grpc inference 서버 구축

docker swarm 네트워크를 사용하면 각각의 분산된 PC를 하나로 묶을 수 있고, docker swarm의 ingress 네트워크를 사용하여 클러스터를 구축 가능하고, 이를 사용하여 각각 분산된 PC에 docker시스템을 관리 할 수 있다. 특히 ingress네트워크 상에서 docker 시스템 간 로드밸런싱이 가능하여 여러대의 PC에 손쉽게 Inferecne Docker를 구축이 가능하다. 그런데 모든 상황에서 이 로드밸런싱 기능을 사용할 수 있는 건 아니였다. 프로젝트 진행 중, 기존 https 방식의 REST호출을 사용할 때는 분산 로드 밸런싱이 됬지만, GRPC 통신 방식을 사용하면, 로드 밸런싱 기능을 사용할 수 없었다. GRPC 통신을 통해서 로드밸런싱을 하려면 NGINX 프록시 서버로 사..

[Docker] docker swarm gpu할당

단일 nvidia docker로 docker 내부에서 nvidia gpu 사용시 --gpus all(또는 번호) 명령어를 붙여주면 gpu 사용이 가능하다. docker run -it --gpus all {image}:{tag} nvidia-smi 그런데 docker swarm에는 --gpus all처럼 gpu를 할당하는 명령어가 없다. swarm에서 gpu할당하여 docker service를 올려야 했기 때문에 docker swarm에 gpu를 할당하는 방법들을 찾아보았다. OS : ubnutu 18.04 설치 : docker, nvidia-docker 두가지 설치 된 상태 https://gist.github.com/tomlankhorst/33da3c4b9edbde5c83fc1244f010815c Ins..

[Docker] Could not connect to any X display 오류 해결 (ROS_Docker)

요즘 ROS공부 개발 매진이다. 로컬에서 실행하지 않고 도커로 공부중이다. ROS 터틀심 노드를 실행하려고 했는데 해당오류가 발생했다. 환경은 Ubuntu 18.05 LTS 환경이다. 도커를 스타트하고, 접속하고 Roscore를 실행하였는데, 터틀심 노드를 실행할 수 없는 문제였다. 도커 실행 전, 해당 구문을 로컬에서 실행해줬다. sudo xhost + export DISPLAY=:1 그리고 컨테이너 접속 후, 해당 구문을 실행해 줬다. apt install libcanberra-gtk-module libcanberra-gtk3-module export NO_AT_BRIDGE=1 도커를 스탑하고 다시 실행해주고 접속해 보았다. 터틀심 노드를 켰더니 정상작동이 되었다. 참고 https://conserva..