Я использую сторонний графический интерфейс (пакет Synology Docker) для настройки контейнера докеров. Однако это ограничение заставляет меня запускать контейнер из командной строки. (Я хочу сопоставить другой IP-адрес хоста, чтобы привязать порт)
Теперь, поскольку есть много настроек, которые уже выполнены, я хотел бы получить исходную команду запуска, запускающую этот контейнер, а затем я могу изменить порт сопоставления портов на новый. например. " docker run -p 80:8080 gitlab
"
Я не могу найти способ сделать это, используйте событие «docker inspect», такой информации не предоставлено.
Пожалуйста, дайте совет по решению этой проблемы.
Ответы:
Существует репозиторий github, который пытается реконструировать команду запуска докера, но в настоящее время он не идеален, версия есть
0.1.2
. Вам следует следить за ним для обновления. Возможно, однажды вы сможете использовать его, чтобы получить с ним правильную команду запуска.Репозиторий Github: runlike
Обновления :
Запускать без установки (Спасибо @tilo)
или установить псевдоним
источник
docker run -v /var/run/docker.sock:/var/run/docker.sock \ assaflavie/runlike YOUR-CONTAINER
Используйте docker inspect :
Вы можете программно проанализировать это с помощью jq :
источник
docker inspect <CONTAINER> | jq ".[0].Config.Cmd"
"Cmd": null,
Может быть, это работает только в том случае, если контейнер не запускался автоматически демоном докера?Я написал простой инструмент CLI на основе Node для генерации
docker run
команды из существующего контейнера.https://www.npmjs.com/package/rekcod
Вот пример:
Также обрабатывает ссылки, смонтированные тома и прочее.
На данный момент не очень надежный, но справляется с большим количеством вещей, упомянутых выше, и это было больше того, что я искал.
РЕДАКТИРОВАТЬ: одной командой без установки программного обеспечения:
источник
Более простой (?) Альтернативой является запуск этого шаблона проверки докеров , который использует встроенные возможности шаблонов Go для вывода
docker run
совместимой команды. Шаблон охватывает только самые обычные параметры командной строки, но его можно легко расширить.Это решение не зависит от других инструментов, кроме самого докера.
источник
Используйте следующую команду, чтобы получить аргументы для всех контейнеров docker inspect -f "{{.Name}} {{.Path}} {{.Args}}" $ (docker ps -a -q)
источник
В настоящее время кажется, что нам нужно выполнить проверку докеров, а затем вручную воссоздать команду запуска.
Я нашел, что кто-то пытается написать сценарий bash для этого: https://gist.github.com/miracle2k/c85b7b077fdb8d54bc89
но он неполный и зависит от jq.
источник
Более простой (надежный) вариант - использовать что-то вроде bash-preexec для захвата команд, которые начинаются с «docker run». Затем вы можете где-нибудь сохранить эти команды и получить их позже.
Например, вы можете добавить что-то вроде этого в свой профиль bash:
Тогда вы могли бы просто запустить свои вещи:
Какие выходы:
источник
Если вы не хотите ничего устанавливать в текущую установку сервера Docker, вы можете просто выполнить (замените
$CONTAINER_NAME
имя контейнера, в котором вы хотите иметь аргументы запуска):(для
rekcod
метода )или
(для
runlike
метода )источник
Эта команда запуска докера не указана в Dockerfile или других документах, связанных с докером.
Либо вы найдете пример в документации, связанной с вашим контейнером, либо вы можете сделать вывод, что докер запускается с (по крайней мере, для команды и сопоставления портов) a
docker ps -a
(но это не даст вам возможных--volumes-from
вариантов)Проверьте также
/usr/syno/etc/packages/Docker-GitLab/config
Это отличается от самой конфигурации gitlab, которая в Synology доступна в
/usr/syno/etc/packages/Docker/synology_gitlab.config
источник
Чтобы отменить команду запуска докера, также существует следующий пакет npm.
https://github.com/nexdrew/rekcod
источник
Все файлы докеров находятся здесь, вы можете найти cmd и монтировать, например,
ls -la /proc/1
просто cat itисточник