Невозможно выполнить запуск докера с помощью команды Invoke

я новичок в докере. Я запускаю докер «изначально» с сервера Windows 2016 с контейнером Windows, между ними нет промежуточной виртуальной машины (без машины докера) и нет набора инструментов докера, поэтому «хост» — это фактический сервер Windows, на котором я запускаю докер.

Версия докера:

PS C:> версия докера Клиент: Версия: 17.03.1-ee-3 Версия API: 1.27 Версия Go: go1.7.5 Git commit: 3fcee33 Сборка: Чт, 30 марта, 19:31:22 2017 ОС/Arch: windows/amd64

Сервер: Версия: 17.03.1-ee-3 Версия API: 1.27 (минимальная версия 1.24) Версия Go: go1.7.5 Git commit: 3fcee33 Сборка: Чт, 30 марта, 19:31:22 2017 OS/Arch: windows/amd64 Experimental: false PS C:> я вытащил образ из Docker Hub. Мне нужно заменить файлы внутри образа докера во время работы и зафиксировать изменения в образе.

Допустим, у меня есть Sample.java и datafile.properties внутри образа докера, который я вытащил из концентратора докеров.

я хочу заменить это на Hello.java и data.properties [я вытащил эти файлы из github]

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


person syndy1989    schedule 02.07.2017    source источник


Ответы (1)


Лучший способ создать образ автоматически — использовать Dockerfile. Некоторую информацию можно найти, например, в документации; https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/

Если у вас есть Hello.java и datafile.properties в каталоге, создайте Dockerfile в том же каталоге, например;

FROM the-base-image-on-docker-hub
RUN rm /path/to/Sample.java
COPY ./Hello.java /path/to/
COPY ./datafile.properties /path/to/

Затем вы можете создать свой образ и «пометить» его как myimage:latest с помощью;

docker image build -t myimage:latest .

(точка в конце (.) указывает; используйте текущий каталог как «контекст сборки» — контекст сборки загружается в демон docker, и все в нем будет доступно для добавления в ваш образ docker с помощью файла Dockerfile COPY или ADD. инструкции)

Это очень наивный пример, просто для иллюстрации концепции; Я предлагаю прочитать документацию, чтобы понять концепцию и поискать дополнительные примеры.

person thaJeztah    schedule 02.07.2017
comment
Это верно. Я могу сделать это на своей локальной машине. Я запускаю сценарий powershell, который создаст экземпляр Windows EC2, установит докер и вытащит изображение, которое было автоматизировано от начала до конца. Я использую New-PSSession для входа в мой вновь созданный экземпляр и передаю каждую команду через Invoke-command. Я не могу запустить интерактивную консоль (docker run 474614/my_repo cmd), выдается ошибка, что это не устройство tty, попробуйте префикс winpty. Я понятия не имею, как заставить этот winpty работать на экземпляре Windows, или есть ли другой способ заставить это работать - person syndy1989; 02.07.2017