Tag: 谷歌云平台

将Google服务帐户凭据传递给Docker

我的使用案例与其他使用这个问题的使用案例稍有不同,所以稍加说明: 我在Google Cloud上工作,并有一个“dockerized”的Django应用程序。 部分应用程序取决于使用gsutil将文件移入/移出Google存储分区。 由于各种原因,我们不希望使用Google Container Engine来pipe理我们的容器。 相反,我们想通过启动额外的Google Compute虚拟机进行横向扩展,而后者又将运行此Docker容器。 类似于https://cloud.google.com/python/tutorials/bookshelf-on-compute-engine,除了我们将使用容器而不是拉一个git仓库。 虚拟机将从一个基本的Debian镜像构build​​,启动和安装依赖关系(例如Docker本身)将使用启动脚本(例如, gcloud compute instances create some-instance –metadata-from-file startup-script=/path/to/startup.sh )。 如果我手动创build一个虚拟机,用sudo -s提升,运行gsutil config -f (在/root/.boto创build一个凭证文件),然后运行我的docker容器(见下面的Dockerfile) docker run -v /root/.boto:/root/.boto username/gs gsutil ls gs://my-test-bucket 那么它的工作。 但是,这需要我的交互来创buildboto文件。 我的问题是 :如何将默认服务凭证传递到将在新VM中启动的Docker容器? gsutil即使在“全新的”Debian虚拟机上也能使用,因为它使用所有虚拟机加载的默认计算引擎凭证。 有没有办法使用这些凭据,并将它们传递到docker集装箱? 在第一次调用gsutil到一个新的VM之后,我注意到它创build了〜/ .gsutil和〜/ .config文件夹。 不幸的是,在Docker中安装这两个 docker run -v ~/.config/:/root/.config -v ~/.gsutil:/root/.gsutil username/gs gsutil ls gs://my-test-bucket 不解决我的问题。 它告诉我: ServiceException: […]

“pg_xlog / RECOVERYHISTORY”:权限被拒绝Google Cloud Instance

我创build了这个基本上是postgres 9.5 + pghoard的 Docker Image,它会自动创build一个数据库备份(基于configuration文件),因为pghoard服务器正在运行它自动retore一个basebackup,如果我运行docker docker run但是当我在Google Cloud实例中复制同一个进程时,出现错误 root@postgres-2499481557-3zv8d:/var/lib/postgresql/data/pgdata# docker-entrypoint.sh postgres LOG: database system was shut down in recovery at 2017-09-29 14:54:01 UTC LOG: restored log file "00000002.history" from archive FATAL: could not open file "pg_xlog/RECOVERYHISTORY": Permission denied LOG: startup process (PID 62) exited with exit code 1 LOG: aborting startup due to startup […]

在Google Cloud上安全部署私有Docker镜像的正确方法是什么?

我有一个私人docker中心存储库中的docker图像。 我创build了一个Google Cloud实例模板,用于计算实例的负载平衡和按需实例化。 什么是正确的方式来自动拉我的新创build的实例回购? 我能想出的唯一解决scheme是将dockerlogin密码放入实例模板的启动脚本中。 这是正确的做法吗? GitHub有部署密钥,它允许我把私钥放在我的实例中作为只读访问,这似乎是一个更好的策略,但是我找不到任何类似的东西来拉取Docker回购。

如何在GCP上使用Rails自定义运行时?

我正在试图dockerize教程书架应用程序。 该应用程序本地运行正常,但部署到GCP后,我只是得到一个502错误的网关错误,并在日志中没有消息。 这些是相关的文件: app.yml runtime: custom env: flex entrypoint: bundle exec rails s -p 8080 -b '0.0.0.0' env_variables: RAILS_ENV: production POSTGRES_USER: postgres POSTGRES_PASSWORD: secret_password POSTGRES_DATABASE: postgres POSTGRES_SOCKET_PATH: /cloudsql/my_connection_name beta_settings: cloud_sql_instances: my_connection_name Dockerfile FROM ruby:2.3.3 RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs RUN mkdir -p /myapp WORKDIR /myapp ADD Gemfile /myapp/Gemfile ADD […]

Google Cloud:Kubernetes无法findtensorflow_model_server

我正在尝试使用TensorFlow Serving和Kubernetes服务初始模型中的教程部署Inception-v3模型 一切都很好,直到我运行命令: kubectl create -f tensorflow_serving/example/inception_k8s.yaml terminal输出build议成功创build服务“开始服务”和部署“开始部署”。 但是,当我跑时: kubectl get pods 我收到这个输出: NAME READY STATUS RESTARTS AGE inception-deployment-2217120516-ntmfl 0/1 CrashLoopBackOff 6 8m inception-deployment-2217120516-s8xlx 0/1 CrashLoopBackOff 6 8m inception-deployment-2217120516-tnzbl 0/1 CrashLoopBackOff 6 8m 通过获取第一个吊舱的日志,我得到了关于错误的信息。 运行: kubectl logs inception-deployment-2217120516-ntmfl 返回这个: /bin/sh: 1: serving/bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server: not found 我能够在本地运行服务器,但是在tensorflow服务启动-k8s.yaml文件中使用的映像没有模型服务器。 这怎么解决? 我一直在试图解决这个问题

Docker推到谷歌registry的速度令人难以置信

我configuration了Google实例和Google Docker Registry。 当我尝试推送到registry时,这些工作非常顺利和突然进行,因为速度而变得几乎不可用。 $ docker push gcr.io/<ID>/my-registry/image:44] The push refers to a repository [gcr.io/<ID>/my-registry/image:44] 3bc2db43a686: Pushing [=======> ] 3.409MB/23.32MB 1302d8ee9a47: Layer already exists 29d71372a492: Layer already exists 如果我测量docker推送的带宽,我得到 NetHogs version 0.8.1 PID USER PROGRAM DEV SENT RECEIVED 1521 root /usr/bin/dockerd ens4 24.183 0.458 KB/sec 但是我对互联网的实际连接是足够好的。 $ speedtest-cli Retrieving speedtest.net configuration… Retrieving speedtest.net server list… […]

从定制的dockerfile到kubernetes部署一个apache启动

我有一个docker文件,我build立一个Apache Web服务器与一些自定义configuration等 执行Dockerfile我使用Kubernetes创build一个可以在部署yaml文件中使用的映像。 一切正常,但部署后,我的Apache服务是在每个容器的每个容器中。 很明显,我可以访问每个容器来执行一个/etc/init.d/apache2启动,但这个解决scheme不是很聪明.. 所以我的问题是:我怎样才能设置我的自定义Apache在部署yaml文件的执行过程中运行? PS:我试过这个解决scheme:用dockerfile创build一个docker容器,然后我访问它,然后启动apache。 然后我从这个容器(dockerfile commit + gcloud image push)创build了一个新的映像,但是当我部署应用程序时,我总是发现apache down

在kubernetes / Google Cloud上拉一个容器)超慢 – 8分钟 – f1-micro实例

在kubernetes / Google Cloud上拉取一个容器),从Docker Hub上的私有registry,非常慢–10分钟使用3节点的f1-micro实例集群。 哪些是加速谷歌云计算引擎容器拉动的最佳实践?

在Google计算引擎上使用Neo4j的默认主机

在启动neo4j时,我被带到浏览器页面,该页面有三个input: host , username和password 主机的价值应该是什么? 到目前为止, locahost:7474不工作,这是我所期望的。 我习惯于在第一次password时看到username和password ,两者的默认值都是neo4j 我用来启动实例的命令: sudo docker run \ –publish=7474:7474 \ –volume=$HOME/neo4j/data:/data \ –volume=$HOME/neo4j/logs:/logs \ neo4j 命令起作用,给: Starting Neo4j. 2017-12-13 03:22:34.661+0000 INFO ======== Neo4j 3.0.12 ======== 2017-12-13 03:22:34.681+0000 INFO No SSL certificate found, generating a self-signed certificate.. 2017-12-13 03:22:35.163+0000 INFO Starting… 2017-12-13 03:22:35.631+0000 INFO Bolt enabled on 0.0.0.0:7687. 2017-12-13 03:22:37.966+0000 […]

Gcloud和Docker:由于空间不足,推送图像失败

我正尝试将一个2GB的Docker镜像上传到Google Containerregistry中: gcloud docker push eu.gcr.io/project-id/image 我得到以下错误: Failed to generate layer archive: write /mnt/sda1/var/lib/docker/graph/_tmp/be959f8b6f706fb75cdc24b/28450517: no space left on device ''' 我遇到的另一个问题是关于失败的推动。 似乎上传没有奏效,然后我不能再推它: Error response from daemon: push eu.gcr.io/project-id/image is already in progress 顺便有一个选项列出所有的图像?