问题标签 [docker-build]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Docker 依赖问题:Rake 中止!LoadError: 无法加载此类文件 -- sqlite3/sqlite3_native
我在尝试解决此依赖问题时遇到问题。我的 gemfile 中有 sqlite3,我可以看到它已安装,即使我运行gem list
(在我的 docker 容器内)也是如此。但是当我使用 docker build 生成我的依赖项,然后在容器中运行我的项目时,尝试运行时出现以下错误rake test
这是构建,您可以清楚地看到安装了 sqlite。
这是gem list
在容器内运行时的输出
我已经通过编辑 gemspecs 看到了临时解决方案,但是一旦你修复了一个,就会弹出另一个类似的错误。我一定是遗漏了一些东西,但似乎一切都井井有条。
任何帮助将非常感激
docker - 如何构建占用磁盘空间相对较小的大型 docker 镜像?
背景
我正在尝试从 VM 上的 Dockerfile 构建 docker 映像。VM 正在运行 Redhat 7.1(内核 3.10),而 Docker 是 1.10.2
Dockerfile 有以下内容
我的构建 VM 有大约16G可用空间
安装程序在3G左右,安装包在8G左右。这加起来最大为 11G,略高于 docker 默认的基本设备大小,即 10G。
因此,我手动启动了具有更大 dm.size ( 15G ) 的 docker daemon 来解决这个问题。
由于 docker 是基于 Union FS 的,所以图像是相互叠加的。所以我的理解是
(1)我的镜像能得到的最大大小是11G(一层3G的Installer,上面加的包层8G)
(2)如果我wget安装程序,运行它,然后在同一个RUN命令中删除安装程序,图像应该只有8G(因为3G安装程序被删除)
无论哪种方式,底线是,16G 空间应该绰绰有余。
问题
但我目前的观察是,在我的 docker 构建过程中,它总是会挂起,因为它已经消耗了所有可用空间
我可以看到两张图片
“docker inspect”显示<none>镜像是COPY授权文件后的中间镜像。
这个中间容器已经完成了 RUN wget 行,成功退出,但是由于空间不足没有提交到 docker 镜像
更糟糕的是,我无法删除容器,也无法删除 /var/lib/docker 来恢复空间
问题
为什么 docker 用完了所有的空间?根据计算,磁盘空间(16G)对于目标镜像(8G)应该是绰绰有余的。[我拥有这台虚拟机,因此我可以保证没有其他人或任何其他进程正在消耗硬盘空间]
在当前情况下,如何强制移除容器以便恢复空间?
我应该如何在 16G 虚拟机上构建这个 8G 映像(如果算上安装程序,则为 11G 映像)?如果这不可能,成功构建它的最小空间是多少?我目前正在从实验室申请一个 32G 的 VM。
perl - 尝试安装 libwww-perl 即 perl-modules_5.14.2-6 和 perl_5.14.2-6 时,构建 Docker 映像会导致错误
libwww-perl
当我在 docker 中创建我的 ubuntu 映像时,我需要这个包。所以在我的 Docker 文件中,我添加了这一行
RUN apt-get install -y libwww-perl
但是,当我尝试构建此 Docker 映像时
sudo docker build -t web-service:latest .
我最终得到以下错误。
错误:
但是,当我尝试在运行 ubuntu 的本地机器上手动运行该命令时,它工作正常。
apt-get install -y libwww-perl
知道有什么问题吗?
更新:我的 Docker 文件内容 -
docker - Docker:使用 pv(管道 viwer)在构建过程中不输出任何内容
我正在尝试pv
在我的 Dockerfile 中使用该命令,但是当我调用构建过程时,屏幕上没有显示任何内容。
我制作了一个非常简单的 Dockerfile 版本:
如果我在一个简单的终端中运行命令,我会得到以下输出:
但是当我像这样运行我的 docker build 时,docker build -t foo .
我只得到了这个:
有没有办法让这个pv
命令工作?
谢谢 !
docker - 如何在构建期间将凭据带入 Docker 容器
我想知道是否有关于如何在docker build
. 在我的 Dockerfile 中,我需要获取需要基本身份验证的资源网络服务器,并且我正在考虑如何在不硬编码的情况下将凭据带入容器的正确方法。
.netrc 文件和使用它curl --netrc ...
呢?但是安全呢?我不喜欢将凭据与我的 Dockerfile 一起保存在源存储库中的想法。
例如,有什么方法可以使用参数或环境变量注入凭据?
有任何想法吗?
jenkins - 尝试使用 jenkins 构建 docker 映像时如何处理 NPE?
我正在尝试使用 jenkins 插件构建 docker 映像docker-build-step
。我只是在尝试创建图像的标准设置:
但是,当我尝试构建时,我得到了 NullPointerException。起初我认为它与这个问题相同,但后来我仔细观察发现它不是(虽然我不太明白那个问题的答案,所以我没有设法明确排除它不是一个相关的问题)
我能做些什么来处理这个异常?
docker - Docker 构建标记存储库名称
可以通过 docker build 命令轻松构建 docker 镜像。
我想知道的是您在构建图像时可以提供的 t 标志。例如:
根据文档, t 标志用于标记和命名目的。name 是 ':' 之前的部分,tag 是它之后的部分。所以在我们的例子中,名称是ouruser/sinatra,标签是v2。
我认为这将是图像名称和标签。但显然,该名称实际上是某个存储库名称?为什么我认为是?好吧,因为如果您要在此之后使用命令列出图像:
你会得到这样的清单:
砰! 大震动!您以为您正在创建一个带有名称的图像,但您指定了一些存储库!与此相关,我有一些问题:
- 这个存储库位于哪里?
- 我可以在不创建存储库的情况下命名图像吗?
- 这个存储库在哪里以及如何使用,或者可以使用?
- 在哪里可以找到有关此存储库的更多信息?我只发现了这个,说实话并没有什么意义:docker build docs
- 为什么通常使用由两部分组成的名称:somename/someothername?
谢谢您的帮助!
docker - Docker compose 无法识别“env_file”
我正在尝试docker-compose up
使用以下配置运行:
我.env
在同一目录中有一个文件,并且能够在 shell 中测试变量,但 docker 似乎没有加载.env
.
警告:未设置 APP_URL 变量。默认为空字符串。
警告:未设置 DB_PASSWORD 变量。默认为空字符串。
警告:未设置 DB_DATABASE 变量。默认为空字符串。
警告:未设置 DB_USERNAME 变量。默认为空字符串。
错误:文件“./docker-compose.yaml”中的验证失败
更新
I just changed the env_file
value to point to a non-existing file and no errors are thrown. It seems like docker is completely ignoring the option.
docker - 在构建期间复制 docker 映像内的文件
我想构建一个基于dockerage/apache-mellon的 docker 镜像,它的卷在/var/www
. 当我在临时目录中构建 Web 应用程序时,我想在 docker 容器中构建我的 Web 应用程序,然后/var/www
使用 Dockerfile 中的以下命令将文件复制到:
docker 构建过程完成且没有任何错误,但文件不会被复制到/var/www
. 有没有办法将文件复制到在构建期间声明为 docker 卷的位置?
docker - 如何在没有 docker 的情况下构建 docker 映像?
有没有一些轻量级的方法可以在没有工作的 docker 机器的情况下在容器中构建 docker 映像。这是我正在尝试做的事情:
假设我有一个有效的 Dockerfile,有没有什么方法可以从这样的容器中创建一个 docker 镜像?