도커에서 실행 중/중지된 컨테이너의 전체 명령 보기
Docker에서 실행 중인 컨테이너/프로세스의 전체 명령을 보려면 어떻게 해야 합니까?
$ docker ps --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5b6291859b61 nginx:1.7.8 "nginx -g 'daemon of 4 minutes ago Exited (0) 4 minutes ago thirsty_brattain
"nginx -g 'daemon of"만 보입니다.전체 명령이 아닌 여기.
docker ps --no-trunc
실행 중인 컨테이너의 다른 세부 정보와 함께 전체 명령이 표시됩니다.
사용:
docker inspect -f "{{.Name}} {{.Config.Cmd}}" $(docker ps -a -q)
모든 컨테이너에 대해 "컨테이너 검사"를 수행합니다.
사용:
docker inspect -f "{{.Path}} {{.Args}} ({{.Id}})" $(docker ps -a -q)
하면 됩니다.docker ps
.
TL-DR
docker ps --no-trunc
그리고.docker inspect CONTAINER
하지만, 는 달된명령따컨시작위하기실진해다입제는과 수 .${ANY_VAR}
컨테이너 환경 변수가 해결된 것으로 인쇄되지 않기 때문입니다.
, 그을극복위해기하것,,docker inspect CONTAINER
또한 할 수 .Config.Env
소유물.
docker ps
그리고.docker inspect
실행된 진입점과 해당 명령에 대한 정보를 제공합니다. 스크립트종종, 그것래진스다니입크트립입점퍼은▁(종다)입니다..sh
컨테이너에 의해 시작된 "실제" 프로그램이 아닙니다.이에 대한 정보를 얻으려면 프로세스 정보를 요청합니다.ps
또는/proc/1/cmdline
도와 주세요.
1)docker ps --no-trunc
실행 중인 모든 컨테이너에 대해 실행된 진입점과 명령을 인쇄합니다.하지만(우리가) 변수: 도커 환경 변수)의 .$FOO
또는${FOO}
).
만약 우리 컨테이너가 env 변수를 사용한다면, 그것은 충분하지 않을 수도 있습니다.
예를 들어 알파인 컨테이너를 실행합니다.
docker run --name alpine-example -e MY_VAR=/var alpine:latest sh -c 'ls $MY_VAR'
다음과 같은 도커 -ps를 사용하는 경우:
도커 ps -a --filter name=docs-docs --no-docs
인쇄:
컨테이너 ID 이미지 명령 생성 상태 포트 이름5b064a6de6d8417...alpine:최신 "sh - c'ls $MY_VAR" 2분 전에 종료됨 (0) alpine-example
.sh -c 'ls $MY_VAR'
그렇지만$MY_VAR
실제로 해결되지 않았습니다.
2)docker inspect CONTAINER
알파인 샘플 용기를 검사할 때:
docker inspect alpine-example | grep -4 Cmd
명령도 있지만 env 변수 값이 표시되지 않습니다.
"Cmd": [
"sh",
"-c",
"ls $MY_VAR"
],
실제로 이러한 도커 명령으로는 보간된 변수를 볼 수 없었습니다.
inspect로 에 대한 변수를 할 수 . : 트 드 이 오 변 환 변 모 를 다 있 수 니 습 표 로 할 시 도 별 두 수 경 와 수 레
docker inspect alpine-example | grep -4 -E "Cmd|Env"
인쇄:
"Env": [
"MY_VAR=/var",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"sh",
"-c",
"ls $MY_VAR"
]
더 쉬운 방법은 다음을 사용하는 것입니다.--format
의 깃발.docker inspect
렌더링할 JSON 특성을 지정할 수 있습니다.
docker inspect --format '{{.Name}} {{.Config.Cmd}} {{ (.Config.Env) }}' alpine-example
출력:
/usr-bin [sh - cls $MY_VAR] [MY_VAR=/var PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/bin:/sbin:/sbin]
실행 중인 컨테이너에 대해 컨테이너 자체에서 시작된 프로세스 검색
도커에 의해 실행되는 진입점과 명령은 도움이 될 수 있지만 경우에 따라 그것은 래퍼 진입점 스크립트일 뿐이기 때문에 충분하지 않습니다..sh
)는 실제/핵심 프로세스를 시작하는 역할을 합니다.
예를 들어 Nexus 컨테이너를 실행할 때 실행되고 컨테이너를 실행하도록 표시되는 명령은 다음과 같습니다."sh -c ${SONATYPE_DIR}/start-nexus-repository-manager.sh"
.
Postgre용SQL 즉,"docker-entrypoint.sh postgres"
.
더 많은 정보를 얻으려면 실행 중인 컨테이너에서 실행할 수 있습니다.docker exec CONTAINER ps aux
.
관심 없는 다른 프로세스를 인쇄할 수도 있습니다.
진입점에서 시작한 초기 프로세스로 범위를 좁히기 위해 다음을 수행할 수 있었습니다.
docker exec CONTAINER ps -1
지정합니다.1
왜냐하면 진입점에 의해 실행되는 과정은 일반적으로 다음과 같은 것이기 때문입니다.1
이드
없이.ps
그 정보를 우는여전수있다니습찾을에서 수 ./proc/1/cmdline
(전체는 아니지만 대부분의 Linux 디스트리뷰터에서). 예:
docker exec CONTAINER cat /proc/1/cmdline | sed -e "s/\x00/ /g"; echo
수 경우, 의 전체 명령을 할 수 또 :: execute입니다.ps -PID
Docker 데몬이
ps -$(docker container inspect --format '{{.State.Pid}}' CONTAINER)
도커를 사용한 사용자 친화적인 포맷
docker ps --no-trunc
항상 읽기 쉬운 것은 아닙니다.
표하면 더를 얻을 수 있습니다.: 인할열을표형지더수효일있다습니적율면하정로식으쇄▁spec.
docker ps --no-trunc --format "table{{.Names}}\t{{.CreatedAt}}\t{{.Command}}"
별칭을 만드는 데 도움이 될 수 있습니다.
alias dps='docker ps --no-trunc --format "table{{.Names}}\t{{.CreatedAt}}\t{{.Command}}"'
너무 유용하기 때문에 딜런의 의견을 전면적인 답변으로 이동:
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike YOUR-CONTAINER
그것은 무엇을 합니까?컨테이너 내부에서 https://github.com/lavie/runlike 를 실행하고 전체 도커 실행 명령을 가져온 다음 컨테이너를 제거합니다.
git 저장소 https://github.com/lavie/runlike 에서 runlike를 사용합니다.
런라이크 설치 방법
pip install runlike
컨테이너 ID를 인수로 수락하여 컨테이너 ID를 추출하려면 다음 명령을 사용합니다.
docker ps -a -q
다음 명령을 사용하여 전체 도커 실행 명령을 추출하는 데 runlike를 사용할 수 있습니다.
runlike <docker container ID>
언급URL : https://stackoverflow.com/questions/27380641/see-full-command-of-running-stopped-container-in-docker
'programing' 카테고리의 다른 글
결과 집합을 10개 그룹으로 분할 (0) | 2023.08.30 |
---|---|
jQuery.each()의 각 반복 사이에 일시 중지를 추가하는 방법은 무엇입니까? (0) | 2023.08.30 |
Objective-C에서 Swift 구조체를 사용하는 방법 (0) | 2023.08.30 |
key_load_public: 잘못된 형식 (0) | 2023.08.30 |
MySQL에서 INT(1)와 TINYINT(1)를 사용하는 것에 차이가 있습니까? (0) | 2023.08.30 |