수색…


통사론

  • docker rm [선택 사항] CONTAINER [CONTAINER ...]
  • 도커 부착 [OPTIONS] CONTAINER
  • docker exec [옵션] CONTAINER COMMAND [ARG ...]
  • 도커 ps [옵션]
  • 도커 로그 [옵션] CONTAINER
  • docker inspect [옵션] 컨테이너 | 이미지 [컨테이너 | 이미지 ...]

비고

  • 위의 예에서 container가 docker 명령의 매개 변수이면 <container> 또는 container id 또는 <CONTAINER_NAME> 언급됩니다. 이 모든 장소에서 컨테이너를 지정하기 위해 컨테이너 이름이나 컨테이너 ID를 전달할 수 있습니다.

컨테이너 나열

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
2bc9b1988080        redis               "docker-entrypoint.sh"   2 weeks ago         Up 2 hours          0.0.0.0:6379->6379/tcp    elephant-redis
817879be2230        postgres            "/docker-entrypoint.s"   2 weeks ago         Up 2 hours          0.0.0.0:65432->5432/tcp   pt-postgres

docker ps 는 현재 실행중인 컨테이너 만 인쇄합니다. 모든 컨테이너 (중지 된 컨테이너 포함)를 보려면 -a 플래그를 사용하십시오.

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                     NAMES
9cc69f11a0f7        docker/whalesay     "ls /"                   26 hours ago        Exited (0) 26 hours ago                             berserk_wozniak
2bc9b1988080        redis               "docker-entrypoint.sh"   2 weeks ago         Up 2 hours                0.0.0.0:6379->6379/tcp    elephant-redis
817879be2230        postgres            "/docker-entrypoint.s"   2 weeks ago         Up 2 hours                0.0.0.0:65432->5432/tcp   pt-postgres

특정 상태의 컨테이너를 나열하려면 -f 명령 행 옵션을 사용하여 결과를 필터링하십시오. 다음은 빠져 나간 모든 컨테이너를 나열한 예입니다.

$ docker ps -a -f status=exited
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                     NAMES
9cc69f11a0f7        docker/whalesay     "ls /"                   26 hours ago        Exited (0) 26 hours ago

-q 스위치를 사용하여 컨테이너 ID 만 나열 할 수도 있습니다. 이렇게하면 다른 유닉스 유틸리티 (예 : grepawk )로 결과를 조작하는 것이 매우 쉽습니다.

$ docker ps -aq
9cc69f11a0f7
2bc9b1988080
817879be2230

docker run --name mycontainer1 을 사용하여 컨테이너를 시작할 때 임의의 이름 (예 : nostalgic_stallman과 같은 mood_famous 형식)이 아닌 특정 이름을 지정하면 이러한 명령으로 쉽게 찾을 수 있습니다

docker ps -f name=mycontainer1

컨테이너 참조

컨테이너의 이름을 사용하는 도커 명령은 다음 세 가지 형식을 허용합니다.

유형
전체 UUID 9cc69f11a0f76073e87f25cb6eaf0e079fbfbd1bc47c063bcd25ed3722a8cc4a
짧은 UUID 9cc69f11a0f7
이름 berserk_wozniak

docker ps 를 사용하여 시스템의 컨테이너에 대한이 값을보십시오.

UUID는 Docker에 의해 생성되며 수정할 수 없습니다. 컨테이너를 시작할 때 docker run --name <given name> <image> 하면 컨테이너에 이름을 제공 할 수 있습니다. 컨테이너를 시작할 때 Docker를 지정하지 않으면 Docker가 컨테이너에 임의의 이름을 생성합니다.

: UUID의 값 (또는 '짧은'UUID)은 주어진 값이 하나의 컨테이너에 대해 유일하다면 임의의 길이가 될 수 있습니다

컨테이너 시작 및 중지

실행중인 컨테이너를 중지하려면 다음과 같이하십시오.

docker stop <container> [<container>...]

이것은 컨테이너의 주 프로세스를 SIGTERM으로 보내고, 유예 기간 내에 멈추지 않으면 SIGKILL을 보낸다. 각 컨테이너의 이름은 중지 될 때 인쇄됩니다.

중지 된 컨테이너를 시작하려면 다음을 수행하십시오.

docker start <container> [<container>...]

이렇게하면 백그라운드에서 전달 된 각 컨테이너가 시작됩니다. 각 컨테이너의 이름이 시작될 때 인쇄됩니다. 포 그라운드에서 컨테이너를 시작하려면 -a (- --attach ) 플래그를 전달하십시오.

사용자 정의 형식으로 컨테이너 나열

docker ps --format 'table {{.ID}}\t{{.Names}}\t{{.Status}}'

특정 컨테이너 찾기

docker ps --filter name=myapp_1

컨테이너 IP 찾기

컨테이너의 IP 주소를 찾으려면 다음을 사용하십시오.

docker inspect <container id> | grep IPAddress

도커 검사를 사용하거나

docker inspect --format '{{ .NetworkSettings.IPAddress }}' ${CID}

도커 컨테이너 다시 시작

docker restart <container> [<container>...]

옵션 --time : 컨테이너를 죽이기 전에 멈출 때까지 기다리는 초 수 (기본값 10)

docker restart <container> --time 10

컨테이너 제거, 삭제 및 정리

docker rm 을 사용하면 다음과 같은 특정 컨테이너를 제거 할 수 있습니다.

docker rm <container name or id>

모든 컨테이너를 제거하려면 다음 표현식을 사용할 수 있습니다.

docker rm $(docker ps -qa)

기본적으로 도커는 실행중인 컨테이너를 삭제하지 않습니다. 실행중인 컨테이너는 경고 메시지를 생성하고 삭제되지 않습니다. 다른 모든 컨테이너는 삭제됩니다.

또는 xargs 를 사용할 수 있습니다.

docker ps -aq -f status=exited | xargs -r docker rm 

docker ps -aq -f status=exited 는 "Exited"상태의 컨테이너 ID를 반환합니다.

경고 : 위의 모든 예제는 '중지 된'컨테이너 만 제거합니다.

컨테이너가 제거되었는지 여부에 관계없이 컨테이너를 제거하려면 force 플래그 -f :

docker rm -f <container name or id>

상태에 관계없이 모든 컨테이너를 제거하려면 :

docker rm -f $(docker ps -qa)

사용 dead 상태의 컨테이너 만 제거하려면 다음을 수행하십시오.

docker rm $(docker ps --all -q -f status=dead)

exited 상태의 컨테이너 만 제거하려면 다음을 수행하십시오.

docker rm $(docker ps --all -q -f status=exited)

컨테이너를 나열 할 때 사용되는 필터의 모든 순열입니다.

버전 1.3 이후에 공간을 사용하는 원치 않는 컨테이너와 매달린 이미지를 모두 제거하려면 다음을 사용하십시오 (Unix 도구 df 와 유사).

$ docker system df

사용되지 않는 모든 데이터를 제거하려면 :

$ docker system prune 

이미 존재하는 도커 컨테이너에서 명령을 실행하십시오.

docker exec -it <container id> /bin/bash

이미 실행중인 컨테이너에 로그인하여 빠른 테스트를하거나 응용 프로그램이 수행하는 작업을 확인하는 것이 일반적입니다. 흔히 로그 및 변경된 파일로 인해 컨테이너 사용에 대한 잘못된 사용이 나타납니다. 이 예제에서는 컨테이너에 로그인 할 수 있습니다. 컨테이너에서 / bin / bash를 사용할 수 있다고 가정하면 / bin / sh 또는 다른 것일 수 있습니다.

docker exec <container id> tar -czvf /tmp/backup.tgz /data
docker cp <container id>:/tmp/backup.tgz .

이 예는 데이터 디렉토리의 내용을 타르에 보관합니다. 그런 다음 docker cp 검색 할 수 있습니다.

컨테이너 로그

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

  -f, --follow=false        Follow log output
  --help=false              Print usage
  --since=                  Show logs since timestamp
  -t, --timestamps=false    Show timestamps
  --tail=all                Number of lines to show from the end of the logs

예 :

$ docker ps
CONTAINER ID    IMAGE    COMMAND                 CREATED     STATUS       PORTS
ff9716dda6cb    nginx    "nginx -g 'daemon off"  8 days ago  Up 22 hours  443/tcp, 0.0.0.0:8080->80/tcp 

$ docker logs ff9716dda6cb
xx.xx.xx.xx - - [15/Jul/2016:14:03:44 +0000] "GET /index.html HTTP/1.1" 200 511 "https://google.com" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36"
xx.xx.xx.xx - - [15/Jul/2016:14:03:44 +0000] "GET /index.html HTTP/1.1" 200 511 "https://google.com" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36"

데몬으로 실행중인 인스턴스에 연결

이를 달성하는 데에는 두 가지 방법이 있으며 가장 먼저 알려진 것은 다음과 같습니다.

docker attach --sig-proxy=false <container>

이것은 문자 그대로 컨테이너 bash에 bash를 붙입니다. 즉, 실행중인 스크립트가 있으면 결과를 볼 수 있습니다.

분리하려면 다음을 입력하십시오. Ctl-P Ctl-Q

그러나 더 친숙한 방법이 필요하고 새로운 bash 인스턴스를 만들려면 다음 명령을 실행하십시오.

docker exec -it <container> bash

컨테이너에서 파일 복사하기

컨테이너에서 호스트로

docker cp CONTAINER_NAME:PATH_IN_CONTAINER PATH_IN_HOST

호스트에서 컨테이너로

docker cp PATH_IN_HOST CONTAINER_NAME:PATH_IN_CONTAINER

jess / transmission을 사용하면

https://hub.docker.com/r/jess/transmission/builds/bsn7eqxrkzrhxazcuytbmzp/

컨테이너의 파일은 / 전송 / 다운로드에 있습니다.

호스트의 현재 디렉토리는 / home / $ USER / abc입니다.

docker cp transmission_id_or_name:/transmission/download .

나는 파일을 복사 할 것이다.

/home/$USER/abc/transmission/download

당신은 docker cp 사용하여 하나의 파일만을 복사 할 수 없습니다. 디렉토리 트리와 파일들을 복사 할 수 없습니다.

도커 볼륨 제거, 삭제 및 정리

컨테이너가 중지되면 고정 장치 볼륨이 자동으로 제거되지 않습니다. 컨테이너를 중지 할 때 연관된 볼륨을 제거하려면 다음과 같이하십시오.

docker rm -v <container id or name>

-v 플래그가 지정되지 않으면, 볼륨은 디스크에 'dangling volume'으로 남아 있습니다. 매달려있는 모든 볼륨을 삭제하려면 다음과 같이하십시오.

docker volume rm $(docker volume ls -qf dangling=true)

docker volume ls -qf dangling=true 필터는 컨테이너에 연결되지 않은 태그가없는 볼륨을 포함하여 도커 볼륨 이름의 목록을 반환합니다.

또는 xargs 를 사용할 수 있습니다.

docker volume ls -f dangling=true -q | xargs --no-run-if-empty docker volume rm

Docker 컨테이너 파일 시스템 내보내기 및 가져 오기

Docker 컨테이너의 파일 시스템 내용을 tarball 아카이브 파일에 저장할 수 있습니다. 예를 들어 데이터베이스 컨테이너에 중요한 변경 사항이 있고 다른 곳에서 변경 사항을 복제 할 수없는 경우와 같이 컨테이너 파일 시스템을 다른 호스트로 이동하는 경우에 유용합니다. 사용하여 업데이트 된 이미지에서 완전히 새로운 컨테이너를 생성하는 것이 바람직하다주의하시기 바랍니다 docker run 명령 또는 docker-compose.yml 대신 수출 및 컨테이너의 파일 시스템을 이동하는 파일을. Docker의 장점 중 하나는 이미지 및 컨테이너를 만드는 선언적 스타일의 감사 성과 책임 성입니다. docker exportdocker import 를 사용함으로써 컨테이너의 파일 시스템 내부에서 원래 상태로 변경된 내용이 난독 화 되었기 때문에이 힘은 억제되었습니다.

docker export -o redis.tar redis

위의 명령은 빈 이미지를 만든 다음 redis 컨테이너의 파일 시스템을이 빈 이미지로 내 보냅니다. tarball 아카이브에서 가져 오려면 다음을 사용하십시오.

docker import ./redis.tar redis-imported:3.0.7

이 명령은 컨테이너를 만들 수있는 redis-imported:3.0.7 오기 redis-imported:3.0.7 이미지를 만듭니다. 커밋 메시지를 설정할뿐만 아니라 가져 오기에서 변경 사항을 만들 수도 있습니다.

docker import -c="ENV DEBUG true" -m="enable debug mode" ./redis.tar redis-changed

-c 명령 행 옵션과 함께 사용할 수있는 Dockerfile 지정 문은 CMD , ENTRYPOINT , ENV , EXPOSE , ONBUILD , USER , VOLUME , WORKDIR 입니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow