Получить идентификатор контейнера докера из имени контейнера

Какова команда для получения идентификатора контейнера docker из имени контейнера?

Ответ 1

В Linux:

sudo docker ps -aqf "name=containername"

Или в OS X:

docker ps -aqf "name=containername"

где containername - это имя вашего контейнера.

Чтобы избежать ложных срабатываний, как отмечает @llia Сидоренко, вы можете использовать привязки регулярных выражений следующим образом:

docker ps -aqf "name=^containername$"

объяснение:

  • -q для тишины. выводить только идентификатор
  • -a для всех. работает, даже если ваш контейнер не работает
  • -f для фильтра.
  • Имя контейнера ^ должно начинаться с этой строки
  • Имя контейнера $ должно заканчиваться этой строкой

Ответ 2

Вы можете попробовать это:

docker inspect --format="{{.Id}}" container_name

Этот подход не зависит от ОС.

Ответ 3

  • Получить идентификаторы контейнера для запущенных контейнеров::

    $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
    

Ответ 4

Если вы хотите получить полный ContainerId на основе имени контейнера, используйте следующую команду

 docker ps --no-trunc -aqf name=containername

Ответ 5

Самый простой способ, который я могу представить, - разобрать вывод 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'
[email protected]@@@@@@@@[email protected]@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@[email protected]@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@NAMES
[email protected]@@@@@@@ubuntu:[email protected]@@@@@@"/bin/bash"@@@@@@@@@[email protected]@[email protected]@@@@@[email protected]@[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@[email protected]@@@@@

Вот script, который преобразует вывод в JSON.

https://gist.github.com/mminer/a08566f13ef687c17b39

На самом деле, выход немного удобнее работать с этим. Каждое поле имеет ширину 20 символов. [['CONTAINER ID',0],['IMAGE',20],['COMMAND',40],['CREATED',60],['STATUS',80],['PORTS',100],['NAMES',120]]