docker-container 사용법 remove - Docker 컨테이너에 들어가려면 어떻게해야합니까?
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 exec
는 docker-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을 지정 했으므로 쉘을 종료 할 때 컨테이너가 삭제됩니다.