Начало работы с Docker за 2 минуты

Если вы никогда раньше не использовали Docker, настройка может быть немного болезненной. Но если вы используете Mac, эта статья должна дать вам хороший толчок.

Но во-первых, почему Докер? Docker можно использовать как virtualenv для изоляции зависимостей, чтобы вы могли делать все, что хотите, не загрязняя свой компьютер. Это в основном позволяет вам создать новый компьютер Unix.

В любом случае, вы можете установить его с помощью Hombrew.

brew install docker
brew install boot2docker

Затем вам нужно запустить демона, который делает кучу фоновой магии.

boot2docker init
boot2docker up

Затем вам нужно открывать некоторые переменные среды всякий раз, когда вы создаете новый сеанс терминала.

eval "$(boot2docker shellinit)"

И теперь ты можешь идти. Следующая команда загрузит образ ubuntu, запустит его и запустит внутри него команду echo:

docker run ubuntu /bin/echo 'Hello world'

Или вы можете просто запустить bash, и вы окажетесь прямо внутри нового компьютера с Ubuntu!

docker run -t -i ubuntu /bin/bash

Установите все, что хотите, а когда закончите, нажмите control-d, и все будет очищено за вас.

Еще пара вещей, которые помогут вам начать работу: вы можете загружать и запускать образы с предустановленным программным обеспечением, например образ node, в котором вам доступен Node.js.

docker run -t -i node /bin/bash

И если вы хотите получить доступ к некоторым файлам внутри контейнера Docker, вы можете смонтировать том, используя параметр -v, за которым следует абсолютный путь к каталогу на вашем компьютере, затем :, а затем абсолютный путь, по которому он будет смонтирован внутри контейнера. .

Следующая команда смонтирует проект Node.js внутри нового контейнера Docker, установит все зависимости и запустит тесты.

docker run -v `pwd`:/root/project node /bin/bash -c "cd /root/project && npm install && npm test"

Это более-менее то, как работает Travis CI или любой другой сервис непрерывной интеграции, но его здорово использовать на вашем собственном компьютере, если ваши тесты генерируют артефакты или требуют глобального масштаба.