보통 도커 컨테이너 내부에서 다른 컨테이너에 대한 정보를 제어할 일이 없을테지만
저는 컨테이너 내부에 있는 컨테이너에서 웹 플랫폼을 구축하여
웹상에서 모든 컨테이너를 제어하려다 보니 위와 같은 문제가 생겼습니다.
많은 해결책들이 있었지만 생각보다 간단하게 해결되는 문제였기에 짧게 정리해 보겠습니다.
시작!
도커 컴포즈, ssh 연결 등 다양한 방법들 중에 가장 쉬운 방법은
Docker socket을 이용하는것 이였습니다.
먼저
아래와 같은 명령어를 입력하
systemctl status docker
아래처럼 뜨게되는데
여기서 도커의 기본구조에 대해서 알아보자면
도커의 구조는 크게 클라이언트/서버 두가지로 나뉩니다
command 명령어로 docker ps 등을 사용하는건 도커 클라이언트를 이용하는것으로
이 명령어를 소켓을 통해 도커 데몬 (= 서버)에 명령어를 전달하여 실행합니다.
이렇게 실행한 결과는 도커 데몬에서 다시 클라이언트에 결과를 반환합니다.
그림으로 그려보면 아래와 같은 형태인것 같습니다.
여기서 알 수있는 사실은 컨테이너 내부에서 도커 소켓에만 연결하면 도커데몬에 명령어를 전달하는 구조를 만들 수 있다!
연결하는 방법은 간단합니다.
기본적으로 docker.socket은 /var/run 위치에 있는데
컨테이너 생성시
아래처럼 /var/run/docker.sock을 볼륨 마운트 해주면 됩니다 (공유)
sudo docker run -d -it --name container -v /var/run/docker.sock:/var/run/docker.sock cuda:base /bin/bash
그리고 컨테이너 내부에 도커를 설치해주면
컨테이너 내부에서도 모든 컨테이너에 대해 제어가 가능해 집니다!
여기까지가 끝인데 만약 안된다면 아래 블로그참고!
(저는 오류가 안생겨서 여기까지만 진행했습니다.)
<참고블로그>
틀린점이 있다면 댓 달아주세요!
'공부공부 > 2023 쌓여가는 나의 지식~' 카테고리의 다른 글
Detectron2(Centernet) 이미지 인식기 만들기(Linux)(2) (0) | 2023.09.26 |
---|---|
Detectron2(Centernet) 이미지 인식기 만들기(Linux)(1) (1) | 2023.09.21 |
ffmpeg를 이용한 영상 전송/ 변환 (windows/Linux) (0) | 2023.09.18 |
Ubuntu20.04에서 Docker 시작 및 사용법(2) [명령어] (0) | 2023.09.13 |
Docker container ssh로 연결해보기 (0) | 2023.09.12 |
댓글