2015-05-17 8 views
2

Я пытаюсь запустить изображение докера в Google Container Engine. Экземпляр не содержит никаких изображений докеры. Я могу ssh и запускать команды докеров, и сервис появляется. Но ничего не происходит, когда я просто запускаю экземпляр из терминала. Может кто-то взглянуть на то, что я делаю неправильно.Как запустить изображение докеров в контейнере Google?

Мой файл докер выглядит

FROM golang 
RUN mkdir -p /app 
COPY . /app 
RUN go get golang.org/x/tools/cmd/present 
ENTRYPOINT cd /app && /go/bin/present -http=":8080" 
EXPOSE 8080 

containers.yaml выглядит

version: v1beta3 
containers: 
    - name: talks 
    image: sheki/talks 
    ports: 
     - name: http-port 
     containerPort: 8080 
     hostPort: 80' 

Команда на запуск экземпляра является

gcloud compute instances create zoop \ 
    --image container-vm \ 
    --metadata-from-file google-container-manifest=containers.yaml \ 
    --zone us-central1-a \ 
    --machine-type f1-micro 

ответ

1

Вы упомянули в своем вопросе, что вы используя движок контейнера google, но на самом деле вы используете container vm (что немного отличается различны). Если вы хотите использовать контейнерный движок, ознакомьтесь с документацией, чтобы создать container cluster.

Я побежал ваш пример, и в /var/log/kubelet.log увидел следующую ошибку:

E0519 17:05:41.285556 2414 http.go:54] Failed to read URL: http://metadata.google.internal/computeMetadata/v1beta1/instance/attributes/google-cont 
ainer-manifest: received 'version: v1beta3 
containers: 
    - name: talks 
    image: sheki/talks 
    ports: 
     - name: http-port 
     containerPort: 8080 
     hostPort: 80' 
', but couldn't parse as neither single (error unmarshaling JSON: json: cannot unmarshal string into Go value of type int: {Version:v1beta3 ID: UUID: 
Volumes:[] Containers:[{Name:talks Image:sheki/talks Entrypoint:[] Command:[] WorkingDir: Ports:[{Name:http-port HostPort:0 ContainerPort:8080 Proto 
col: HostIP:}] Env:[] Resources:{Limits:map[] Requests:map[]} CPU:0 Memory:0 VolumeMounts:[] LivenessProbe:<nil> ReadinessProbe:<nil> Lifecycle:<nil> 
TerminationMessagePath: Privileged:false ImagePullPolicy: Capabilities:{Add:[] Drop:[]}}] RestartPolicy:{Always:<nil> OnFailure:<nil> Never:<nil>} D 
NSPolicy: HostNetwork:false}) or multiple manifests (error unmarshaling JSON: json: cannot unmarshal object into Go value of type []v1beta1.Container 
Manifest: []) nor single (kind not set in '{"containers":[{"image":"sheki/talks","name":"talks","ports":[{"containerPort":8080,"hostPort":"80'","name 
":"http-port"}]}],"version":"v1beta3"}') or multiple pods (kind not set in '{"containers":[{"image":"sheki/talks","name":"talks","ports":[{"container 
Port":8080,"hostPort":"80'","name":"http-port"}]}],"version":"v1beta3"}'). 

Похоже документацией для контейнеров ЗИСОВ устареть.

+1

Вы бы рекомендовали использовать контейнерную виртуальную машину через контейнерный кластер, если я просто экспериментирую с контейнерами докеров и не планирую какую-либо крупную инфраструктуру? Я, скорее всего, создаю приложения с max 3 контейнерами - веб-сервером, контейнером базы данных +1, который работает как дискурс. – codecowboy

+0

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

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