컨테이너 이름에서 도커 컨테이너 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]]