2016-02-13 4 views
1

Это не работает:Docker работать без установки WORKDIR не работает

docker run -d -p 80:80 image /go/src/hello 

Это работает:

docker run -w /go/src/ -d -p 80:80 image ./hello 

Я путаюсь выше результата.
Я предпочитаю первый, но он не работает. Любой может помочь с этим.

+0

Не могли бы вы показать журналы? – Auzias

+0

user @ vultr: ~ $ docker logs d4aa3af71c27 2016/02/13 15:59:31 [asm_amd64.s: 1998] [I] http server Продолжительность: 8080 ------------- Журналы, как указано выше, выглядят нормально. Это базовый (golang) http-сервер, и мне не удалось «ломать localhost: 8080». Но если я использую «docker run -w/go/src/hello -d -p 80:80 image ./hello», он работает. (/ go/usr/hello/hello - это исполняемый файл). – Clerk

+0

@Clerk, что это такое? Тот из контейнера, где он не работал? (а если нет, то какой был журнал контейнера, который не сработал?) – VonC

ответ

0

Это зависит от ENTRYPOINT (вы можете увидеть его с docker inspect --format='{{.Config.Entrypoint}}' image)

С дефолту ENTRYPOINT из sh -c, как должно работать.
С любыми другими ENTRYPOINT он может ожидать попадания в нужную папку, прежде чем что-либо делать.

docker log <container> Было бы полезно знать, что первая попытка выбрала в качестве выхода.

As The OP Clerkcomments, это от golang Dockerfile/image, что означает «привет» будет ссылаться на скомпилированный исполняемый hello в $GOPATH/bin или исполняемый файл, построенный с идти строить в папке src.

+0

Я попытался проверить docker -format = '{{. Config.Entrypoint}}', и результат равен нулю. – Clerk

+0

@Clerk Затем вернитесь к 'docker inspect | grep -i entrypoint' Но, конечно же, замените '' '' на имя фактического изображения. – VonC

+0

Я пробовал, и все равно. Я знаю, что некоторые другие изображения имеют такие результаты, как {[/entrypoint.sh]}. Но это было ничто (я пересматриваю с официального изображения голанга, чтобы создать свой собственный образ). – Clerk

Смежные вопросы