실행 중인 도커 컨테이너에 원격으로 연결
조금 전
$work
에서 Jenkins를 사용할 때 실행 중인 도커 컨테이너에 원격으로 연결할 수 있다는 것을 발견했습니다.매우 편리합니다! 덕분에 연속 통합 실행에서 무엇이 잘못되었는지 깊이 디버깅할 수 있습니다. 심지어 "일시 중지"버튼(Jenkins에 있음)이 있어 특정 단계를 검사하거나 빠른 실행에서 서두르지 않도록 할 수 있습니다.
그리고 솔직히 처음 실험했을 때 약간 "마법"이라는 것을 알았습니다! 😁
아래는 마법을 일으키는 방법에 대한 자세한 설명입니다 😃
dockerd 측에서 tcp 연결 노출
원격으로 연결할 수 있으려면
-H tcp://0.0.0.0:2375
옵션으로 dockerd를 시작하여 tcp 소켓을 노출해야 합니다.docker systemd 서비스를 편집하여 tcp 소켓을 추가하십시오.
dockerd -H fd:// -H tcp://0.0.0.0:2375 --containerd=/run/containerd/containerd.sock
서비스 구성 다시 로드:
$ systemctl daemon-reload
그리고 다시 시작합니다
dockerd
.$ systemctl restart docker
샘플 컨테이너 실행
나는 작은
alpine
을 가지고 내부에서 "끝나지 않는 스크립트"를 실행할 것입니다.Dockerfile 작성:
FROM alpine
COPY w.sh w.sh
CMD ["./w.sh"]
그리고 이를 유지하기 위한 while/sleep 루프
w.sh
:#!/bin/sh
while true; do sleep 2 ; echo "alive"; done
이미지 빌드:
$ docker build . -t persist
마지막으로 컨테이너를 시작합니다.
$ docker run -itd persist
f70b46b77105700d3420b88323d07edff9146f435a13c73029efd92197ef9030
클라이언트에서 연결
이제 노트북에서(예를 들어) 이제 다음과 같이 간단하게 도커 컨테이너에 연결할 수 있습니다.
$ docker -H tcp://the-url-or-ip exec -ti f70b46b77105700d3420b88323d07edff9146f435a13c73029efd92197ef9030 /bin/sh
그리고 당신은 당신의 껍질을 얻습니다 :
/ #
짜잔!
Reference
이 문제에 관하여(실행 중인 도커 컨테이너에 원격으로 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/thibaultduponchelle/remotely-connect-to-a-running-docker-12id텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)