Как передать аргументы в сценарий оболочки через docker run
Я новичок в мире докеров. Я должен вызвать shell-скрипт, который принимает аргументы командной строки через контейнер Docker. Пример: мой сценарий оболочки выглядит так:
#!bin/bash
echo
Dockerfile выглядит так:
FROM ubuntu:14.04
COPY ./file.sh /
CMD /bin/bash file.sh
Я не уверен, как передать аргументы при запуске контейнера
5 ответов:
обновление
file.sh
#!/usr/bin/env bash echo
создайте изображение, используя существующий Dockerfile:
docker build -t test .
запустите изображение с аргументами
abc
илиxyz
или что-то еще.docker run -ti test /file.sh abc docker run -ti test /file.sh xyz
С этим скриптом в
file.sh
#!/bin/bash echo Your container args are: "$@"
и
Dockerfile
FROM ubuntu:14.04 COPY ./file.sh / ENTRYPOINT ["/file.sh"] CMD []
вы должны уметь:
% docker build -t test . % docker run test hello world Your container args are: hello world
С помощью Docker правильный способ передачи такого рода информации - это переменные среды.
Итак, с тем же Dockerfile, измените скрипт на
#!/bin/bash echo $FOO
после построения, используйте следующую команду docker:
docker run -e FOO="hello world!" test
у меня есть файл скрипта, который на самом деле запускает вещи. Этот файл scrip может быть относительно сложным. Назовем его "run_container". Этот скрипт принимает аргументы из командной строки:
run_container p1 p2 p3
простой run_container может быть:
#!/bin/bash echo "argc = ${#*}" echo "argv = ${*}"
то, что я хочу сделать, это после "dockering" это я хотел бы иметь возможность запустить этот контейнер с параметрами в командной строке docker следующим образом:
docker run image_name p1 p2 p3
и есть run_container скрипт будет выполняться с p1 p2 p3 в качестве параметров.
Это мое решение:
Dockerfile:
FROM docker.io/ubuntu ADD run_container / ENTRYPOINT ["/bin/bash", "-c", "/run_container ${*}", "--"]