如何docker build从Dockerfile更多的内存?
这是一个与此不同的问题当docker构建Dockerfile时允许更多内存
在本机安装软件时,有足够的内存来成功构建和安装该marian工具
但是当使用Dockerfile
https://github.com/marian-nmt/marian/blob/master/scripts/docker/Dockerfile.cpu构建Docker镜像时,它会因多个内存耗尽错误而失败
virtual memory exhausted: Cannot allocate memory
Run Code Online (Sandbox Code Playgroud)
[OUT]:
Step : RUN cmake $MARIANPATH && make -j
---> Running in 4867d166d17a
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting …Run Code Online (Sandbox Code Playgroud) 我只想从不同的目录构建一个 dockerfile,我尝试了以下命令
docker build -f C:/Users/XXXX/XXXX/XXXX/XXXX/XXXX/Dockerfile
和
docker build -f C://Users/XXXX/XXXX/XXXX/XXXX/XXXX/Dockerfile
它们都会产生相同的错误
"docker build" requires exactly 1 argument.
我错过了什么吗?
Windows 10、DockerDesktop v3.5.2、Docker v20.10.7
每当我的计算机与 Internet 断开连接时,
该命令docker build -t my_image .都会生成如下所示的输出。
Dockerfile 包含行FROM some_public_image:123
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 187B 0.0s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 2B 0.0s
=> ERROR [internal] load metadata for docker.io/library/some_public_image:123 0.0s
------
> [internal] load metadata for docker.io/library/some_public_image:123:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition:
failed to do request: Head https://registry-1.docker.io/v2/library/some_public_image/manifests/123:
dial tcp: lookup registry-1.docker.io …Run Code Online (Sandbox Code Playgroud) 我正在配置一个竹子构建计划来构建docker镜像.使用AWS ECS作为注册表.构建计划是这样的;
拉最新的标签
docker pull xxx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest
Run Code Online (Sandbox Code Playgroud)用最新标签构建图像
docker build -t myimage:latest .
Run Code Online (Sandbox Code Playgroud)标记图像(ECS必需)
docker tag -f myimage:latest xxx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest
Run Code Online (Sandbox Code Playgroud)将图像推送到注册表
docker push xx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest
Run Code Online (Sandbox Code Playgroud)因为构建任务每次都在不同的新构建引擎/服务器上运行,所以它没有本地缓存.
当我不在Dockerfile上更改任何内容并再次执行它(在另一台服务器上)时,我希望docker使用本地缓存(来自docker pull)并且不再执行每一行.但它每次都试图建立图像.我还期待当我在文件底部更改某些内容时,它将使用缓存并仅执行最新行,但我不确定这一点.
我是否知道错误或对方法有任何意见?
假设我在 Dockerfile 中有这个:
ARG FOO=1
ENTRYPOINT ["docker.r2g", "run"]
Run Code Online (Sandbox Code Playgroud)
我用以下方法构建上述内容:
docker build -t "$tag" --build-arg FOO="$(date +%s)" .
Run Code Online (Sandbox Code Playgroud)
有没有办法做这样的事情:
ENTRYPOINT ["docker.r2g", "run", ARG FOO] // something like this
Run Code Online (Sandbox Code Playgroud)
我想这个论点也可以通过 withdocker run而不是在docker build阶段期间传递?
有没有办法缓存 docker-compose 以便它不会一次又一次地构建?这是我的操作工作流文件:
name: Github Action
on:
push:
branches:
- staging
jobs:
test:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- name: Bootstrap app on Ubuntu
uses: actions/setup-node@v1
with:
node-version: '12'
- name: Install global packages
run: npm install -g yarn prisma
- name: Install project deps
if: steps.cache-yarn.outputs.cache-hit != 'true'
run: yarn
- name: Build docker-compose
run: docker-compose -f docker-compose.test.prisma.yml up --build -d
Run Code Online (Sandbox Code Playgroud)
我想缓存 docker build 步骤。我试过使用if: steps.cache-docker.outputs.cache-hit != 'true' then only build 但没有用。
github docker-compose docker-build github-actions building-github-actions
有没有办法打印ARGs 值,这些值通过标志传递--build-arg给docker build命令?
仅仅使用是不够的,因为我希望它在不允许的部分RUN echo $ARG_NAME之前打印。FROM
重点是立即查看这些值,以便我可以快速停止构建,防止下载错误的基础映像。
已经搜索了 docker docs 和 google。也许这里有人可以提供一些线索。
现在我有一个docker-compose.yml:
version: "3"
services:
hello-world:
image: hello-world
build: .
environment:
NODE_ENV: development
ports:
- 3000:3000
entrypoint: npm run dev
# entrypoint: npm start
working_dir: /
volumes:
- ./distService:/distService
Run Code Online (Sandbox Code Playgroud)
您会看到该entrypoint命令有 2 个选项。当我开发时,我需要它运行npm run dev。当我部署它时,我需要它运行npm start。
如何在保留单个docker-compose.yml文件的同时执行此操作?
有没有办法将某种构建参数/ENV变量传递给docker-compose?人们通常如何处理这个问题?
在过去,我可以简单地做这样的事情:
Dockerfile:
FROM ubuntu
RUN echo "test"
Run Code Online (Sandbox Code Playgroud)
这将输出test到我的外壳。我用它作为调试我的构建的一种方式。
在 docker for windows 的最新稳定版本中,构建输出看起来完全不同,并且没有显示任何命令的任何标准输出。
如何在构建过程中查看任何命令的输出?
对于上面的Dockerfile示例,当前输出如下所示:
[+] Building 4.7s (6/6) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 65B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/ubuntu:latest 2.0s
=> [1/2] FROM docker.io/library/ubuntu@sha256:c95a8e48bf88e9849f3e0f723d9f49fa12c5a00cfc6e60d2bc99d87555295e4c 2.3s
=> => resolve docker.io/library/ubuntu@sha256:c95a8e48bf88e9849f3e0f723d9f49fa12c5a00cfc6e60d2bc99d87555295e4c 0.0s
=> => sha256:f643c72bc25212974c16f3348b3a898b1ec1eb13ec1539e10a103e6e217eb2f1 3.32kB / 3.32kB 0.0s
=> => sha256:da7391352a9bb76b292a568c066aa4c3cbae8d494e6a3c68e3c596d34f7c75f8 28.56MB / 28.56MB …Run Code Online (Sandbox Code Playgroud) 当我尝试构建 docker 文件时,docker 返回以下错误:
[+] Building 0.0s (1/2)
=> ERROR [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 36B 0.0s
------
> [internal] load build definition from Dockerfile:
------
failed to solve with frontend dockerfile.v0: failed to read dockerfile: error from sender: walk Dockerfile: not a directory
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?
先感谢您
docker-build ×10
docker ×9
dockerfile ×3
docker-image ×1
docker-run ×1
github ×1
memory ×1
neural-mt ×1