![대화형 bash를 사용하여 새 도커 컨테이너를 시작하고 그 안에 있는 일부 명령을 실행하는 명령줄을 작성하는 방법은 무엇입니까?](https://linux55.com/image/172789/%EB%8C%80%ED%99%94%ED%98%95%20bash%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%83%88%20%EB%8F%84%EC%BB%A4%20%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EB%A5%BC%20%EC%8B%9C%EC%9E%91%ED%95%98%EA%B3%A0%20%EA%B7%B8%20%EC%95%88%EC%97%90%20%EC%9E%88%EB%8A%94%20%EC%9D%BC%EB%B6%80%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%98%EB%8A%94%20%EB%AA%85%EB%A0%B9%EC%A4%84%EC%9D%84%20%EC%9E%91%EC%84%B1%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
예를 들어 내가 원한다고 해보자.
docker run --interactive --tty ubuntu:18.04 bash
apt update; apt install -y git nano wget; mkdir t; cd t
대신 한 줄 명령을 사용하십시오.
내 시도가 실패했습니다:
docker run --interactive --tty ubuntu:18.04 (bash; apt update; apt install -y git nano wget; mkdir t; cd t)
그리고
docker run --interactive --tty ubuntu:18.04 "bash; apt update; apt install -y git nano wget; mkdir t; cd t"
답변1
대화형 서브셸을 얻을 수 있도록 bash
최종 호출로 끝나는 명령을 만드세요 .bash
docker run --interactive --tty ubuntu:18.04 bash -c "apt update; apt install -y git nano wget; mkdir t; cd t; exec bash"
exec
exec는 새 bash를 컨테이너의 기본 프로세스로 만드는 데 필요하며 권장됩니다(컨테이너로 전송된 인터럽트를 수신함).
즉, apt
호출을 Dockerfile에 넣고 대화형 bash를 사용하여 직접 시작할 수 있는 파생 이미지를 생성해야 합니다.
FROM ubuntu:18.04
RUN apt update && apt install -y git nano wget
RUN mkdir /somedir
WORKDIR /somedir
한 번만 수행하십시오(또는 최신 버전이 필요할 때까지).
docker build -t testbuild . # done once for all
그리고
docker run -it testbuild # bash already in /somedir