Запустить встроенную команду с каналом в контейнере докера [duplicate]

Вы можете использовать словарь:

x = 0
y = 1
z = 3
list=[]
dict = {0: 'c', 1: 'd', 2: 'e', 3: 'f'}
if x in dict:
    list.append(dict[x])
else:
    pass

if y in dict:
    list.append(dict[y])
else:
    pass
if z in dict:
    list.append(dict[z])
else:
    pass

print list
128
задан Chris Martin 3 December 2015 в 22:24
поделиться

3 ответа

Чтобы запустить несколько команд в докере, используйте /bin/bash -c и точку с запятой ;

docker run image /bin/bash -c "cd /path/to/somewhere; python a.py"

. Если нам понадобится command2 (python), будет выполняться тогда и только тогда, когда command1 (cd) будет возвращать нуль (без ошибок), используйте && вместо ;

docker run image /bin/bash -c "cd /path/to/somewhere && python a.py"
253
ответ дан anhlc 25 August 2018 в 16:17
поделиться

Вы также можете выполнять команды внутри контейнера Docker, bash -c "<command1> | <command2>", например:

docker run img /bin/bash -c "ls -1 | wc -l"

Но, не вызывая оболочку на пульте дистанционного управления, выход будет перенаправлен на локальный терминал.

2
ответ дан Alasdair 25 August 2018 в 16:17
поделиться

Вы можете сделать это несколькими способами:

  1. Используйте параметр -w для изменения рабочего каталога: -w, --workdir = "" Рабочий каталог внутри контейнера https://docs.docker.com/engine/reference/commandline/run/#set-working-directory--w
  2. Передайте весь аргумент в / bin / bash:
    docker run image /bin/bash -c "cd /path/to/somewhere; python a.py"
    
22
ответ дан famousgarkin 25 August 2018 в 16:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: