1. 程式人生 > >docker build 鏡像時deamo過大導致cannot allocate memory的問題

docker build 鏡像時deamo過大導致cannot allocate memory的問題

copy utils cover bug try mem step 設置 job

技術分享圖片

[root@jenkins-master DEV-sk_platform_brand_furniture]# docker build -t registry.xxxx.com/sk_platform_brand_furniture_dev:master .
Sending build context to Docker daemon 1.254 GB
Step 1/6 : FROM basic-registry.xxxx.com/xxxx/nginx
 ---> 60037cd86b92
Step 2/6 : MAINTAINER waitfish from ltx_sean
 ---> Using cache
 ---> 284219de173f
Step 3/6 : COPY publish/ /data/web/
mkdir /data/docker/overlay/4f23aea89c4c6b0b8544fccd100fe5ca5b68272e0891a77d85692d069cf86e8f/merged/data/web/: cannot allocate memory

#
#
在Jenkins的job根目錄下docker build 鏡像可能會因為目錄下的文件特別多特別大,導致docker daemon也跟著大進而服務器沒有可分配的內存使用。
解決這個問題有兩個辦法:
1.把Dockerfile換個目錄文件少的地方執行

2.使用.dockerignore文件,設置黑名單,該文件包含的目錄不會被發送到Docker daemon中
#
#

技術分享圖片
技術分享圖片

#
#
#
#
#

技術分享圖片

#
#
#
#

[root@jenkins-master DEV-sk_platform_brand_furniture]# cat .dockerignore 
*
!Dockerfile
!publish/*
!run.sh
!web.conf

#
#
技術分享圖片
#
#

第一行的"*"表示的意思是把所有目錄都拒絕了
第二行 !Dockerfile 代表允許此文件
第三行"!publish/*"表示被接受的路徑,把我們的目錄也添加到這裏,再docker build就OK了

#
#
#
#

技術分享圖片

#
#
註意也可以使用.dockerignore文件,設置黑名單

**/node_modules
/src/utils/request-temp.js
/.vscode
.DS_Store
npm-debug.log*
yarn-error.log
/coverage
.idea
yarn.lock
package-lock.json
*bak
.vscode
.history
*.log
functions/mock
.temp/**
.umi
.umi-production
.firebase
appveyor.yml

#
#

技術分享圖片

技術分享圖片

docker build 鏡像時deamo過大導致cannot allocate memory的問題