실행 중인 도커 컨테이너에 원격으로 연결



조금 전 $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


그리고 당신은 당신의 껍질을 얻습니다 :

/ #


짜잔!

좋은 웹페이지 즐겨찾기