Яка команда отримує ідентифікатор контейнера докера від імені контейнера?
docker --list
або подібне? Яка команда для створення нового контейнера? і т. д.
Яка команда отримує ідентифікатор контейнера докера від імені контейнера?
docker --list
або подібне? Яка команда для створення нового контейнера? і т. д.
Відповіді:
У Linux:
sudo docker ps -aqf "name=containername"
Або в OS X, Windows:
docker ps -aqf "name=containername"
де containername
ваша назва контейнера.
Щоб уникнути отримання помилкових спрацьовувань, як зазначає @llia Sidorenko, ви можете використовувати якорі регулярних виразів так:
docker ps -aqf "name=^containername$"
пояснення:
-q
для тихого. вивести лише ідентифікатор-a
для усіх. працює, навіть якщо ваш контейнер не запущений-f
для фільтра .^
ім'я контейнера повинно починатися з цього рядка$
ім'я контейнера повинно закінчуватися цим рядком--no-trunc
прапор. такdocker ps --no-trunc -aqf "name=containername"
docker inspect --format="{{.Id}}" imageName
спрацювала на мене.
Ви можете спробувати це:
docker inspect --format="{{.Id}}" container_name
Цей підхід не залежить від ОС.
NAMES
стовпці з docker ps
), воно вказує ідентифікатор контейнера. Якщо замість цього вказано ім'я зображення (вказане в IMAGE
стовпці з docker ps
), воно замість цього видає ідентифікатор зображення.
Отримати ідентифікатори запущених контейнерів ::
$docker ps -qf "name=IMAGE_NAME"
-f: Filter output based on conditions provided
-q: Only display numeric container IDs
Отримати ідентифікатори контейнерів усіх контейнерів ::
$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'}}
У моєму випадку я запускав контейнер Tensorflow Docker в Ubuntu 20.04: Запустіть ваш контейнер Docker в одному терміналі, я запустив його за допомогою
docker run -it od
А потім запустив ще один термінал і запустив нижче docker ps
з sudo:
sudo docker ps
Я успішно отримав ідентифікатор контейнера:
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
e4ca1ad20b84 od "/bin/bash" 18 minutes ago
Up 18 minutes unruffled_stonebraker
Найпростіший спосіб, про який я можу придумати, - проаналізувати результати docker ps
Давайте запустимо останнє зображення ubuntu інтерактивно та підключимось до нього
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]]