Skip to content

Instantly share code, notes, and snippets.

@optozorax
Last active February 28, 2022 13:25
Show Gist options
  • Save optozorax/f318d3d5a3219b3f37fb279e2d0f5ebc to your computer and use it in GitHub Desktop.
Save optozorax/f318d3d5a3219b3f37fb279e2d0f5ebc to your computer and use it in GitHub Desktop.
Установка фигни на один раз через Docker

Зачем

Очень частый кейс - вам надо всего-лишь один раз установить какую-то фигню, чтобы запустить, сделать и забыть. Например, надо запустить что-то на JS, и что требует Node; или надо обучить простую нейросетку.

В таком случае надо выполнять страшные команды sudo apt install ..., которые хотят 400мб и больше вашего пространства.

А вычищать всё это после сделанного раза - лень. Да ещё и могут прилететь нетривиальные зависимости, которые пропадут только после переустановки системы.

Вопрос: Что делать?

Ответ: Создать независимое окружение через докер, и делать все установки в нём.

Благодаря тому что всё будет происходить в докере, это никак не повлияет на вашу систему, разве что придётся установить докер.

Я вообще не шарю в докере, и просто захотел законспектировать то что нарыл гуглением и что работало. Так что критика очень приветствуется. Скажите как правильно.

Как

  1. Устанавливаем докер.
  • Сначала надо создать пустой контейнер на основе Ubuntu:
     sudo docker run -v $(pwd):/folder -it ubuntu:20.04 bash
    Где -v $(pwd):/folder монтирует текущую папку с папку /folder в этом докер-контейнере.
  • Теперь вы находитесь внутри контейнера, устанавливайте всё что хотите через обычный sudo apt install ..., настраивайте как хотите. Потом выходите через exit.
  • Теперь надо закоммитить изменения. Находим айдишник последнего запущенного контейнера через sudo docker ps -a. Когда нашли айдишник, выполняем с ним следующую команду:
     sudo docker commit <id> <имя>
  • Теперь ваш контейнер сохранён под определённым именем. Чтобы потом запустить именно этот контейнер, нужно выполнять команду:
     sudo docker run -v $(pwd):/folder -it <имя> bash
  • После каждого изменения внутри контейнера нужно снова коммитить в него.
  • Старые контейнеры можно удалять через sudo docker rm <id>.
@optozorax
Copy link
Author

jekyll

sudo docker run -p 4000:4000 -v $(pwd):/folder -it jekyll bash

_config.yml:

host: 0.0.0.0
port: 4000

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment