도커 컨테이너가 시작되거나 중지될 때 호스트 시스템에서 스크립트를 실행할 수 있습니까?

도커 컨테이너가 시작되거나 중지될 때 호스트 시스템에서 스크립트를 실행할 수 있습니까?

Docker 컨테이너를 시작하고 docker run -itd --restart=always --name=<container> --net=br6 --ip6=2001:db8:8:2::100 <image>. 그러나 ip neigh replace proxy "2001:db8:8:2::100" dev ens3해당 주소에 액세스하려면 ndp 프록시를 사용해야 합니다 . Docker 컨테이너가 시작될 때마다 호스트에서 이 명령을 실행할 수 있습니까?

답변1

물론 가장 쉬운 방법은 이 두 명령을 프로세스의 일부로 bash 스크립트에 넣는 것입니다.

스크립트 생성 run.sh:

#!/bin/bash

docker run -itd --restart=always --name=<container> --net=br6 \          
--ip6=2001:db8:8:2::100 <image> . \
&& ip neigh replace proxy "2001:db8:8:2::100" dev ens3

이제 컨테이너를 실행하려는 모든 분들은 ./run.sh해당 컨테이너에 실행 권한을 부여한 후 실행하셔야 합니다.

환경을 실행하기 전에 스크립트를 사용하여 환경을 설정하는 것이 일반적입니다.

그러나 드문 경우(귀하의 경우는 아니지만 전적으로 귀하에게 달려 있음) 컨테이너가 시작될 때 호스트가 자동으로 스크립트를 실행하도록 하려고 합니다.

이는 서버-클라이언트 모드를 사용하여 수행할 수 있습니다. 호스트는 서버 측 역할을 하며 특정 포트를 수신하고 요청 시 명령을 실행할 준비가 되어 있습니다.

컨테이너는 클라이언트 역할을 합니다. 컨테이너 진입점에서는 특정 포트와 URI를 통해 서버에 http 요청을 보내 서버에 필요한 명령을 실행하도록 요청합니다.

Docker와 함께 이 모드를 사용하는 예는 서버 코드를 디버깅할 때입니다. 컨테이너가 디버그 로그를 IDE가 허용하는 머신의 특정 포트로 보내도록 하려는 경우입니다.

관련 정보