docker ++

докер позволяет сделать пару полезных вещей

всем рекомендую читать мануал, но вот пример, на многие случаи жизни

docker run -p 3000:3000 -it –rm –name shatel-node-dev -v “$PWD”:/usr/src/myapp -w /usr/src/myapp –user=33:$(id -g) -e HOME=/usr/src/myapp node-full-shatel env

разберём эту прекрасную строчку детальней

–user=33:$(id -g)

  • запустить команду от другого пользователя. 33 - могло бы быть именем пользователя, но здесь это uid (линукс айди пользователя), 33 это uid www-data. $(id -g) - это баш хитрость для получения айдишника текущей группы, т.е. gid.
    -p 3000:3000
  • прокинуть порт из докера во внешнюю (хостовую машину)
    -it
  • интерактивно в отдельном терминале (псевдо терминале), оф ребята заявляют, что так будет работать ctrl-c и многие удобные плюшки
    --rm
    после завершения этой _команды_ (а **docker run** именно просто запустит **команду** в новом контейнере) данные этого контейнера будут удалины
    --name shatel-node-dev
    просто приятное имя, а не длинный хеш, по этому имени можно будет удалить, остановить этот контейнер. имя уникально, не запустятся 2 контейнера с одним именем.
    -v "$PWD":/usr/src/myapp
  • смонтировать папку из реального мира, “$PWD” - это просто текущий путь в хостовой машине. /usr/src/myapp - “прокинутый” путь внутри докера.
    -w /usr/src/myapp
  • рабочая папка (внутри контейнера), с неё и начнётся работа команды
    -e HOME=/usr/src/myapp
    способ указать некоторые переменные окружения
    node-full-shatel
  • на основе чего будет запущен контейнер, здесь могло бы быть node:latest или node:6.3.1
    env
  • команда которую мы запустим в докере