docker-container 사용법 remove - Docker 컨테이너에 들어가려면 어떻게해야합니까?





10 Answers

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

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

Docker와 작업하기 시작했습니다. WordPress 기본 이미지를 사용하고 도커 작성하기.

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




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

실행중인 컨테이너에 '고정'할 수있는 컨테이너화된 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 Compose 관련 답변을 찾고있는 것처럼 여기에있는 경우 생성 된 컨테이너 ID를 조회하지 않고도 쉽게 방법을 제공합니다.

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

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

$ docker-compose exec web bash



Windows 컨테이너에서 cmd에 연결하려면 다음을 사용하십시오.

docker exec -it d8c25fde2769 cmd

여기서 d8c25fde2769 는 컨테이너 ID입니다.




docker exec 가 분명히 해결책이 될 것입니다. Docker 내부의 디렉토리를 로컬 시스템의 디렉토리마운트하는 방법으로 질문 한 내용을 쉽게 처리 할 수 ​​있습니다.

따라서 로컬 경로의 변경 사항을 즉시 볼 수 있습니다.

docker run -v /Users/<path>:/<container path> 



그것은 간단합니다 !

Docker 이미지를 모두 나열하십시오.

sudo docker images

내 시스템에서 다음과 같은 결과를 보였다.

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
bash                latest              922b9cc3ea5e        9 hours ago
14.03 MB
ubuntu              latest              7feff7652c69        5 weeks ago         81.15 MB

내 PC에 두 개의 Docker 이미지가 있습니다. 제가 첫 번째 것을 실행하고 싶다고합시다.

sudo docker run -i -t ubuntu:latest /bin/bash

이것은 컨테이너의 터미널 제어를 제공합니다. 이제 모든 유형의 쉘 작업을 컨테이너 내부에서 수행 할 수 있습니다. 마찬가지로 ls 를 실행하면 파일 시스템의 루트에있는 모든 폴더가 출력됩니다.

bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var



귀족 해결책

다음과 함께 goinside 명령 줄 도구를 설치 goinside .

sudo npm install -g goinside

다음과 같이 적절한 터미널 크기의 고정 컨테이너에 들어갑니다.

goinside docker_container_name

오래된 대답

이 스 니펫을 ~/.profile 에 넣습니다.

goinside(){
    docker exec -it $1 bash -c "stty cols $COLUMNS rows $LINES && bash";
}
export -f goinside

이렇게하면 모든 사람들이 다음과 같이 실행 컨테이너에 들어갈 수 있습니다.

goinside containername

또한 고정 된 Docker 컨테이너 터미널 크기에 대한 오래 살아있는 문제를 해결 합니다 . 만약 당신이 그것을 직면하면 매우 성가신입니다.

또한 링크 를 따라 가면 도커 컨테이너 이름에 대한 명령 완료 기능도 제공됩니다.




이 명령을 사용하십시오 :

docker exec -it containerid /bin/bash



Docker Compose를 사용하고 있다면 Docker 컨테이너로 들어가게됩니다.

docker-compose run container_name /bin/bash

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

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



컨테이너가 이미 종료 된 경우 (어쩌면 일부 오류로 인해) 할 수 있습니다.

$ docker run --rm -it --entrypoint /bin/ash image_name

또는

$ docker run --rm -it --entrypoint /bin/sh image_name

또는

$ docker run --rm -it --entrypoint /bin/bash image_name

새 컨테이너를 만들고 그 안에 셸을 가져옵니다. --rm을 지정 했으므로 쉘을 종료 할 때 컨테이너가 삭제됩니다.




Related