[docker] 도커 컨테이너에 들어가는 방법?



9 Answers

실행중인 컨테이너에 bash하려면 다음을 입력하십시오.

docker exec -t -i container_name /bin/bash
Question

Docker와 작업하기 시작했습니다. WordPress 기본 이미지를 사용하고 도커 작성하기. 초기 빌드 중에 만들어진 파일 / 디렉토리를 검사하기 위해 컨테이너 중 하나에 ssh하려고합니다. 나는 docker-compose run containername ls -la run을 실행하려고 노력했다. docker-compose run containername ls -la 를 실행했다.하지만 아무것도하지 않았다. 그랬다면, 나는 하나의 명령을 실행하는 대신 디렉토리 구조를 탐색 할 수있는 콘솔을 갖고 싶습니다. Docker로이 작업을 수행하는 올바른 방법은 무엇입니까?




Windows에서 Docker를 사용하고 있고 컨테이너에 대한 셸 액세스를 얻으려면 다음을 사용하십시오.

winpty docker exec -it <container_id> sh

대부분의 경우 이미 Git Bash가 설치되어 있습니다. 설치하지 않았다면 설치하십시오.




나처럼 지금 도커가 원하는 특정 답변을 찾으려면 생성 된 컨테이너 ID를 조회하지 않고도 쉬운 방법을 제공하십시오.

docker-compose execdocker-compose.yml 파일에 따라 서비스 이름을 사용합니다.

따라서 '웹'서비스를위한 bash 쉘을 얻으려면 다음을 할 수 있습니다.

$ docker-compose exec web bash



docker-compose를 사용하고 있다면 docker container 안에 들어갑니다.

docker-compose run container_name /bin/bash  

컨테이너 안에는 Dockerfile에 정의 된 WORKDIR로 연결됩니다. 작업 디렉토리를 다음과 같이 변경할 수 있습니다.

WORKDIR directory_path # E.g  /usr/src -> container's path



다음 명령을 사용할 수 있습니다.

docker exec -ti container_name /bin/bash

또는

docker exec -ti container_name /bin/sh



어떤 경우에는 이미지가 알파인 기반이 될 수 있습니다.이 경우 throw됩니다.

OCI 런타임 exec 실패 : exec 실패 : container_linux.go : 348 : 컨테이너 프로세스 시작으로 인해 "exec : \"bash \ ": 실행 파일이 $ PATH에 없습니다": 알 수 없음

왜냐하면 존재하지 않기 때문에 / bin / bash. 이 대신에 다음을 사용해야합니다.

docker exec -it 9f7d99aa6625 ash

또는

docker exec -it 9f7d99aa6625 sh



docker attach <container name/id here>

다른 방법으로는 첨부를 사용하는 것이 위험하지만 세션을 종료하려면 ctrl-c를 눌러도 컨테이너가 중지됩니다. - 무슨 일이 일어나고 있는지보고 싶다면 docker logs -f 사용하십시오. docker logs -f

:~$ docker attach --help
Usage:  docker attach [OPTIONS] CONTAINER

Attach to a running container

Options:
      --detach-keys string   Override the key sequence for detaching a container
      --help                 Print usage
      --no-stdin             Do not attach STDIN
      --sig-proxy            Proxy all received signals to the process (default true)



공지 사항 :이 답변은 내가 작성한 도구를 홍보합니다.

실행중인 컨테이너에 '고정'할 수있는 컨테이너화된 SSH 서버를 만들었습니다. 이렇게하면 모든 컨테이너로 컴포지션을 만들 수 있습니다. 유일한 요구 사항은 컨테이너에 Bash가 있다는 것입니다.

다음 예제는 이름이 'my-container'인 컨테이너에 연결된 SSH 서버를 시작합니다.

docker run -d -p 2222:22 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e CONTAINER=my-container -e AUTH_MECHANISM=noAuth \
  jeroenpeeters/docker-ssh

ssh localhost -p 2222

SSH 클라이언트 (SSH 클라이언트 선택)를 사용하여이 SSH 서비스에 연결할 때 Bash 세션은 이름이 'my-container'인 컨테이너에서 시작됩니다.

더 자세한 포인터와 문서는 https://github.com/jeroenpeeters/docker-ssh 참조하십시오.




파일을 검사하려면 docker run -it <image> /bin/bash 를 실행하여 대화 형 터미널을 가져옵니다. 이미지 목록은 docker images 로 얻을 수 있습니다. docker execdocker exec 솔루션은 이미지가 시작되지 않거나 실행 후 즉시 종료되는 경우에도 작동합니다.




도커 작성 (Docker4Drupal)

docker-compose exec php bash






Related