докер позволяет сделать пару полезных вещей
всем рекомендую читать мануал, но вот пример, на многие случаи жизни
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
- команда которую мы запустим в докере