programing

도커 exec으로 2개의 명령어를 실행하는 방법

lastcode 2023. 7. 31. 21:24
반응형

도커 exec으로 2개의 명령어를 실행하는 방법

나는 도커 exec과 함께 두 개의 명령을 실행해야 합니다.저는 도커 컨테이너에서 파일을 복사하고 있으며 ssh와 같은 것을 사용하기 위해 자격 증명을 처리할 필요가 없습니다.이 명령은 파일을 복사합니다.

sudo docker exec boring_hawking tar -cv /var/log/file.log | tar -x

그러나 하위 디렉토리 var/log가 생성됩니다. 따라서 도커 컨테이너에서 이러한 작업을 수행할 수 있다면 다음과 같은 작업을 수행할 수 있습니다.

cd /var/log ; tar -cv ./file.log

도커 exec이 2개의 명령을 실행하도록 하려면 어떻게 해야 합니까?

이것은 다음과 같은 대답으로 이어졌습니다: 도커 명령줄의 이스케이프 문자 I은 결국 다음과 같이 했습니다.

sudo docker exec boring_hawking bash -c 'cd /var/log ; tar -cv ./file.log' | tar -x

그래서 제가 실행하고자 하는 2개의 명령어인 파라미터를 사용하여 하나의 bash 명령어를 실행함으로써 작동합니다.

이 문제를 해결하지 못하고 좀 더 복잡한 스크립트를 실행하기 위해 여러 명령을 지정하는 다른 방법을 원하는 사용자:

cat <<EOF | docker exec --interactive boring_hawking sh
cd /var/log
tar -cv ./file.log
EOF

OP의 질문처럼 작업 디렉터리를 변경하는 것이 여러 명령의 필요성을 나타내는 경우가 많습니다.

이를 위해 도커는 이제-w작업 디렉터리를 지정하는 옵션입니다.예를 들어 이 경우에는

docker exec -w /var/log boring_hawking tar -cv ./file.log

다른 누군가가 멋진 대답을 위해 여기에 왔지만 OP의 원래 문제를 해결하기 위한 더 나은 방법을 원한다면 (OP의 OP..?) 도커 컨테이너에서 파일을 복사하려면 다음이 있습니다.docker cp다음을 수행하는 명령: https://docs.docker.com/engine/reference/commandline/cp/

언급URL : https://stackoverflow.com/questions/33416286/how-to-run-2-commands-with-docker-exec

반응형