сборка и сборка докера - PullRequest
0 голосов
/ 10 мая 2019

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

Я создаю образ докера, используя docker-compose -f mydocker-compose-file.yml ... на моей машине.

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

Затем с удаленного сервера я опускаю это изображение.

Для запуска этого изображения; Я должен скопировать mydocker-compose-file.yml со своего компьютера на удаленный сервер и затем запустить docker-compose -f mydocker-compose-file.yml up -d.

Я нахожу это очень неэффективным, потому что мне нужен тот же файл YAML для запуска образа докера (не так ли?).

Есть ли способ просто раскрутить контейнер без этого файла с удаленного компьютера?

Ответы [ 2 ]

1 голос
/ 10 мая 2019

Начиная с составляет 1.24 вместе с выпуском докера 18.09 (вам понадобится хотя бы та версия клиента на удаленном хосте), вы можете запускать команды докера на удаленный хост через SSH.

# all docker commands in this shell will not talk to the remote host
export DOCKER_HOST=ssh://user@host
# you can verify that with docker info to see which engine you're talking to
docker info
# and now run your docker-compose up command locally to start/stop containers
docker-compose up -d

В предыдущих версиях вы могли настроить сертификаты TLS, чтобы разрешить определенным клиентам подключаться к интерфейсу Docker API через сетевое соединение. См. эти документы для более подробной информации .

Обратите внимание: если у вас есть тома хоста, переменные и пути будут расширены до каталогов вашего ноутбука, но монтирование хоста произойдет на удаленном сервере, где эти каталоги могут не существовать. Это хорошая ситуация для переключения на именованные тома.

1 голос
/ 10 мая 2019

Все, что вы можете сделать с помощью Docker Compose, вы можете сделать с помощью простых команд docker.

В зависимости от того, как именно вы взаимодействуете с удаленным сервером, у вашего инструментария могут быть собственные способы сделать это. Один конкретный пример, с которым я знаком, - это Ansible docker_container module . Если вы уже используете такой инструмент, как Ansible, Chef или Salt, вы, вероятно, можете использовать такой инструмент, чтобы делать то же самое, что и ваш файл docker-compose.yml.

Но в противном случае существует более или менее прямой перевод между docker-compose.yml файлом

version: '3'
services:
  foo:
    image: me/foo:20190510.01
    ports: ['8080:8080']

и командная строка

docker run -d --name foo -p 8080:8080 me/foo:20190510.01

Мой опыт показывает, что команды docker run быстро становятся громоздкими, и вы хотите записать их в файл; и как только они в файле, вы начинаете желать, чтобы они были в более структурированном формате, даже если вам нужен вспомогательный инструмент для их запуска; что возвращает вас к копированию вокруг файла docker-compose.yml. Я думаю, что это довольно рутина. ( Что-то должно указать серверу, что запускать.)

...