컨테이너 이름에서 도커 컨테이너 ID를 가져 오는 명령은 무엇입니까?
컨테이너 이름에서 도커 컨테이너 ID를 가져 오는 명령은 무엇입니까?
답변:
Linux에서 :
sudo docker ps -aqf "name=containername"
또는 OS X, Windows :
docker ps -aqf "name=containername"
containername
컨테이너 이름은 어디에 있습니까 ?
@llia Sidorenko가 지적했듯이 오탐을 피하기 위해 다음과 같이 정규식 앵커를 사용할 수 있습니다.
docker ps -aqf "name=^containername$"
설명:
-q
조용히. ID 만 출력-a
모든. 컨테이너가 실행되고 있지 않아도 작동합니다.-f
대한 필터 .^
컨테이너 이름은 이 문자열로 시작 해야 합니다.$
컨테이너 이름은 이 문자열로 끝나야 합니다.--no-trunc
플래그를 사용합니다 . 그래서docker ps --no-trunc -aqf "name=containername"
docker inspect --format="{{.Id}}" imageName
은 나를 위해 일했습니다.
이것을 시도 할 수 있습니다.
docker inspect --format="{{.Id}}" container_name
이 접근 방식은 OS에 독립적입니다.
NAMES
열에 docker ps
)을 제공하면 컨테이너 ID가 제공됩니다. 대신 이미지 이름 (가있는 IMAGE
열에 docker ps
제공됨)이 제공되면 대신 이미지 ID가 출력됩니다.
실행중인 컨테이너의 컨테이너 ID 가져 오기 ::
$docker ps -qf "name=IMAGE_NAME"
-f: Filter output based on conditions provided
-q: Only display numeric container IDs
모든 컨테이너의 컨테이너 ID 가져 오기 ::
$docker ps -aqf "name=IMAGE_NAME"
-a: all containers
docker ps -fq
그러나 작동하지 docker ps -qf
않았다 (플래그 순서)
다음 명령 :
docker ps --format 'CONTAINER ID : {{.ID}} | Name: {{.Names}} | Image: {{.Image}} | Ports: {{.Ports}}'
이 출력을 제공합니다.
CONTAINER ID : d8453812a556 | Name: peer0.ORG2.ac.ae | Image: hyperledger/fabric-peer:1.4 | Ports: 0.0.0.0:27051->7051/tcp, 0.0.0.0:27053->7053/tcp
CONTAINER ID : d11bdaf8e7a0 | Name: peer0.ORG1.ac.ae | Image: hyperledger/fabric-peer:1.4 | Ports: 0.0.0.0:17051->7051/tcp, 0.0.0.0:17053->7053/tcp
CONTAINER ID : b521f48a3cf4 | Name: couchdb1 | Image: hyperledger/fabric-couchdb:0.4.15 | Ports: 4369/tcp, 9100/tcp, 0.0.0.0:5985->5984/tcp
CONTAINER ID : 14436927aff7 | Name: ca.ORG1.ac.ae | Image: hyperledger/fabric-ca:1.4 | Ports: 0.0.0.0:7054->7054/tcp
CONTAINER ID : 9958e9f860cb | Name: couchdb | Image: hyperledger/fabric-couchdb:0.4.15 | Ports: 4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp
CONTAINER ID : 107466b8b1cd | Name: ca.ORG2.ac.ae | Image: hyperledger/fabric-ca:1.4 | Ports: 0.0.0.0:7055->7054/tcp
CONTAINER ID : 882aa0101af2 | Name: orderer1.o1.ac.ae | Image: hyperledger/fabric-orderer:1.4 | Ports: 0.0.0.0:7050->7050/tcp`enter code here`
컨테이너 이름을 기반으로 완전한 ContainerId를 얻으려면 다음 명령을 사용하십시오.
docker ps --no-trunc -aqf name=containername
Docker 이미지 검사 ImageName \ ImageId --format = {{ '. ConatinerConfig.Hostname'}}
제 경우에는 Ubuntu 20.04에서 Tensorflow Docker 컨테이너를 실행하고있었습니다. 하나의 터미널에서 Docker 컨테이너를 실행하고 다음과 같이 실행했습니다.
docker run -it od
그런 다음 다른 터미널을 시작 docker ps
하고 sudo로 아래 를 실행했습니다 .
sudo docker ps
성공적으로 컨테이너 ID를 얻었습니다.
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
e4ca1ad20b84 od "/bin/bash" 18 minutes ago
Up 18 minutes unruffled_stonebraker
내가 생각할 수있는 가장 간단한 방법은 docker ps
최신 우분투 이미지를 대화식으로 실행하고 연결해 보겠습니다.
docker run -it ubuntu /bin/bash
docker ps
다른 터미널에서 실행 하면 다음과 같은 것을 볼 수 있습니다.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8fddbcbb101c ubuntu:latest "/bin/bash" 10 minutes ago Up 10 minutes gloomy_pasteur
안타깝게도이 형식을 구문 분석하는 것은 공백을 사용하여 수동으로 항목을 정렬하기 때문에 쉽지 않습니다.
$ sudo docker ps | sed -e 's/ /@/g'
CONTAINER@ID@@@@@@@@IMAGE@@@@@@@@@@@@@@@COMMAND@@@@@@@@@@@@@CREATED@@@@@@@@@@@@@STATUS@@@@@@@@@@@@@@PORTS@@@@@@@@@@@@@@@NAMES
8fddbcbb101c@@@@@@@@ubuntu:latest@@@@@@@"/bin/bash"@@@@@@@@@13@minutes@ago@@@@@@Up@13@minutes@@@@@@@@@@@@@@@@@@@@@@@@@@@gloomy_pasteur@@@@@@
다음은 출력을 JSON으로 변환하는 스크립트입니다.
https://gist.github.com/mminer/a08566f13ef687c17b39
실제로 출력은 그것보다 작업하기가 조금 더 편리합니다. 모든 필드의 너비는 20 자입니다.
[['CONTAINER ID',0],['IMAGE',20],['COMMAND',40],['CREATED',60],['STATUS',80],['PORTS',100],['NAMES',120]]