이미 존재하는 Docker 컨테이너에서 명령을 실행하려면 어떻게해야합니까?



4 Answers

당신이 준 명령이 끝나면 컨테이너가 종료 됩니다. 다음 옵션을 사용하여 실시간 상태로 유지합니다.

  • -i STDIN을 붙이지 않아도 열어 둔다.
  • -t 의사 TTY를 할당합니다.

따라서 새로운 run 명령은 다음과 같습니다.

docker run -it -d shykes/pybuilder bin/bash

이미 실행중인 컨테이너에 첨부하려면 다음을 수행하십시오.

docker exec -it CONTAINER_ID /bin/bash

이 예제에서는 /bin/bash 가 명령으로 사용됩니다.

Question

-d 하여 컨테이너를 만들었으므로 대화 형이 아닙니다.

docker run -d shykes/pybuilder bin/bash

컨테이너가 종료되었음을 확인합니다.

CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS                      PORTS               NAMES
d6c45e8cc5f0        shykes/pybuilder:latest   "bin/bash"          41 minutes ago      Exited (0) 2 seconds ago                        clever_bardeen

이제 나는 기계에서 가끔 명령을 내리고 나가고 싶다. 그냥 응답을 얻으려고.

나는 기계를 시동하려고했다. 나는 붙이려고했다. 나는 컨테이너와 함께 run 수 있다고 생각했지만 그건 허용되지 않는 것 같습니다. start 사용하여 실행하고 신속하게 존재하는 것 같습니다.

나가서 대화 형 모드로 돌아가고 싶습니다.

나는 시도했다 :

docker attach d6c45e8cc5f0

그러나 나는 얻는다 :

2014/10/01 22:33:34 You cannot attach to a stopped container, start it first

하지만 시작하면 어쨌든 끝납니다. 22 번 잡아라. 나는 이길 수 없다.




그래서 나는 대답이 위의 많은 잘못된 대답보다 간단하다고 생각한다.

중지 된 기존 컨테이너를 시작하려면

docker start <container-name/ID>

실행중인 컨테이너를 중지하려면

docker stop <container-name/ID>

그런 다음 컨테이너의 대화 형 셸에 로그인하려면

docker exec -it <container-name/ID> bash



위의 CDR LDN 대답과 here 에서 찾은 대답을 사용하여 작성한 결합 된 대답입니다.

다음 예제는 이미지에서 아치 리눅스 컨테이너를 시작한 다음 pacman 도구를 사용하여 그 컨테이너에 git 을 설치합니다 :

sudo docker run -it -d archlinux /bin/bash
sudo docker ps -l
sudo docker exec -it [container_ID] script /dev/null -c "pacman -S git --noconfirm"

그게 전부입니다.




유감 docker run --entrypoint 목표를 달성하기 위해 docker run --entrypoint 를 사용하여 ENTRYPOINT 를 인수로 대체하는 것은 불가능합니다.

참고 : --entrypoint를 사용하여 ENTRYPOINT 설정을 무시할 수 있지만 바이너리 만 exec로 설정할 수 있습니다 (sh -c는 사용하지 않음).




내 명령을 실행하려면 bash -c를 사용해야했습니다. docker exec -it CONTAINER_ID bash -c "mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql"




Related



Tags

docker docker