docker - 如何将大型 docker 图像上传到谷歌容器注册表?
问题描述
我正在创建一个圈图像(https://github.com/ulsmith/alpine-apache-php7),在我的应用程序中,我有一个 2.5 GB 的图像文件夹,图像已成功构建,但是当我尝试推送时它到谷歌容器注册表它由于体积大而不起作用,有时服务器超时,这将在至少 20 分钟后出现。我在 15 分钟或更长时间后收到图像错误,在此之前谷歌云 SDK 没有显示任何内容。这是我正在使用的命令:gcloud builds submit --tag us.gcr.io/[project-id]/test:v1
我检查了 crcmod 并且它已启用。
这是我的 Dockerfile:+
FROM alpine:edge
MAINTAINER Paul Smith <pa.ulsmith.net>
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
RUN apk update && apk upgrade && apk add \
bash apache2 php7-apache2 curl ca-certificates openssl openssh git php7 php7-phar php7-json php7-iconv php7-openssl tzdata openntpd nano
RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer
RUN apk add \
php7-ftp \
php7-xdebug \
php7-mcrypt \
php7-mbstring \
php7-soap \
php7-gmp \
php7-pdo_odbc \
php7-dom \
php7-pdo \
php7-zip \
php7-mysqli \
php7-sqlite3 \
php7-pdo_pgsql \
php7-bcmath \
php7-gd \
php7-odbc \
php7-pdo_mysql \
php7-pdo_sqlite \
php7-gettext \
php7-xml \
php7-xmlreader \
php7-xmlwriter \
php7-tokenizer \
php7-xmlrpc \
php7-bz2 \
php7-pdo_dblib \
php7-curl \
php7-ctype \
php7-session \
php7-redis \
php7-exif \
php7-intl \
php7-fileinfo \
php7-ldap \
php7-apcu
RUN apk add php7-simplexml
RUN cp /usr/bin/php7 /usr/bin/php \
&& rm -f /var/cache/apk/*
RUN sed -i "s/#LoadModule\ rewrite_module/LoadModule\ rewrite_module/" /etc/apache2/httpd.conf \
&& sed -i "s/#LoadModule\ session_module/LoadModule\ session_module/" /etc/apache2/httpd.conf \
&& sed -i "s/#LoadModule\ session_cookie_module/LoadModule\ session_cookie_module/" /etc/apache2/httpd.conf \
&& sed -i "s/#LoadModule\ session_crypto_module/LoadModule\ session_crypto_module/" /etc/apache2/httpd.conf \
&& sed -i "s/#LoadModule\ deflate_module/LoadModule\ deflate_module/" /etc/apache2/httpd.conf \
&& sed -i "s#^DocumentRoot \".*#DocumentRoot \"/app/public\"#g" /etc/apache2/httpd.conf \
&& sed -i "s#/var/www/localhost/htdocs#/app/public#" /etc/apache2/httpd.conf \
&& printf "\n<Directory \"/app/public\">\n\tAllowOverride All\n</Directory>\n" >> /etc/apache2/httpd.conf
ENV PHP_ALLOW_URL_INCLUDE=On
RUN mkdir /app && mkdir /app/public && chown -R apache:apache /app && chmod -R 755 /app && mkdir bootstrap
COPY app/ /app/public/
ADD start.sh /bootstrap/
RUN chmod +x /bootstrap/start.sh
EXPOSE 80
ENTRYPOINT ["/bootstrap/start.sh"]
有没有更好的方法来推送大图像?
解决方案
请通过 gcr-contact@google.com 与我们联系并提供未编辑的图片
一般来说(这对您来说可能不是问题),大图像的问题是您通过我们的正常令牌交换收到的短期访问令牌将导致上传失败。您将不得不探索 JSON 密钥身份验证,以便在将图像上传到GCR时启用那些非常长的会话
另请注意,Container Registry 不支持 Docker 分块上传。一些容器镜像工具支持通过分块上传或单个整体上传来上传大型容器镜像。将容器镜像推送到 Container Registry 时,您必须使用整体上传。
推荐阅读
- c# - Set style with eventsetter in resources programmatically
- youtube - 从 Youtube 直播视频中获取当前延迟
- django - apache + mod_wsgi restart 保持活动任务
- javascript - 自动对焦于下拉菜单 onclick 中的输入元素
- javascript - json数组在php中编码并在javascript中解码
- latex - 如何生成 | LaTeX中的(垂直条或管道)符号?
- javascript - 为什么会有一个
- ios - Accessibility issue on IOS. aria-expanded not detected by voiceover
- sql-server - Error when running SSIS package with parameter - dtexec
- typescript - 打字稿无法从其他目录中找到接口