Dockerfile中的copy命令使用
Dockerfile中的copy命令
在編寫Dockerfile的時候copy宿主機文件到鏡像中,在執(zhí)行構(gòu)建的時候報錯
guoliang@gldeMacBook-Pro docker_file % docker build -f Dockerfile -t jmeter01 .
[+] Building 3.3s (15/16)
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 860B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/java:8 3.1s
=> [auth] library/java:pull token for registry-1.docker.io 0.0s
=> [ 1/11] FROM docker.io/library/java:8@sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d 0.0s
=> [internal] load build context 0.1s
=> => transferring context: 2B 0.1s
=> CACHED [ 2/11] RUN mkdir /jmeterdocker 0.0s
=> CACHED [ 3/11] RUN mkdir -p /jmeterdocker/test 0.0s
=> CACHED [ 4/11] RUN mkdir -p /jmeterdocker/test/input/jmx 0.0s
=> CACHED [ 5/11] RUN mkdir -p /jmeterdocker/test/input/testdata 0.0s
=> CACHED [ 6/11] RUN mkdir -p /jmeterdocker/test/report/html 0.0s
=> CACHED [ 7/11] RUN mkdir -p /jmeterdocker/test/report/jtl 0.0s
=> CACHED [ 8/11] RUN mkdir -p /jmeterdocker/test/report/outputdata 0.0s
=> CACHED [ 9/11] RUN cd /jmeterdocker 0.0s
=> ERROR [10/11] COPY ../apache-jmeter-5.4.1.tgz /jmeterdocker 0.0s
------
> [10/11] COPY ../apache-jmeter-5.4.1.tgz /jmeterdocker:
------
failed to compute cache key: "/apache-jmeter-5.4.1.tgz" not found: not found
看下Dockerfile
FROM java:8 MAINTAINER <qihao@163.com> ENV http_proxy "" ENV https_proxy "" RUN mkdir /jmeterdocker RUN mkdir -p /jmeterdocker/test RUN mkdir -p /jmeterdocker/test/input/jmx RUN mkdir -p /jmeterdocker/test/input/testdata RUN mkdir -p /jmeterdocker/test/report/html RUN mkdir -p /jmeterdocker/test/report/jtl RUN mkdir -p /jmeterdocker/test/report/outputdata RUN cd /jmeterdocker ENV JMETER_VERSION=5.4.1 ENV JMETER_HOME=/jmeterdocker/apache-jmeter-${JMETER_VERSION} ENV JMETER_PATH=${JMETER_HOME}/bin:${PATH} ENV PATH=${JMETER_HOME}/bin:${PATH} COPY ../apache-jmeter-5.4.1.tgz /jmeterdocker RUN cd /jmeterdocker && tar xvf apache-jmeter-5.4.1.tgz && rm apache-jmeter-5.4.1.tgz
可以看到Copy的文件使用的是相對路徑(把jmetercopy到鏡像的jmeterdocker文件中)
我的jmeter.tgz存放在Docker的上一級目錄中。
命令執(zhí)行后報錯提示找不到
failed to compute cache key: "/apache-jmeter-5.4.1.tgz" not found: not found
后來又嘗試使用絕對路徑更改如下
使用絕對路徑
FROM java:8 MAINTAINER <qihao@163.com> ENV http_proxy "" ENV https_proxy "" RUN mkdir /jmeterdocker RUN mkdir -p /jmeterdocker/test RUN mkdir -p /jmeterdocker/test/input/jmx RUN mkdir -p /jmeterdocker/test/input/testdata RUN mkdir -p /jmeterdocker/test/report/html RUN mkdir -p /jmeterdocker/test/report/jtl RUN mkdir -p /jmeterdocker/test/report/outputdata RUN cd /jmeterdocker ENV JMETER_VERSION=5.4.1 ENV JMETER_HOME=/jmeterdocker/apache-jmeter-${JMETER_VERSION} ENV JMETER_PATH=${JMETER_HOME}/bin:${PATH} ENV PATH=${JMETER_HOME}/bin:${PATH} COPY /Users/guoliang/Documents/Work/apache-jmeter-5.4.1.tgz /jmeterdocker RUN cd /jmeterdocker && tar xvf apache-jmeter-5.4.1.tgz && rm apache-jmeter-5.4.1.tgz
build之后報錯內(nèi)容
guoliang@gldeMacBook-Pro docker_file % docker build -f Dockerfile -t jmeter001 .
[+] Building 1.2s (14/15)
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 177B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/java:8 1.1s
=> [ 1/11] FROM docker.io/library/java:8@sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 2B 0.0s
=> CACHED [ 2/11] RUN mkdir /jmeterdocker 0.0s
=> CACHED [ 3/11] RUN mkdir -p /jmeterdocker/test 0.0s
=> CACHED [ 4/11] RUN mkdir -p /jmeterdocker/test/input/jmx 0.0s
=> CACHED [ 5/11] RUN mkdir -p /jmeterdocker/test/input/testdata 0.0s
=> CACHED [ 6/11] RUN mkdir -p /jmeterdocker/test/report/html 0.0s
=> CACHED [ 7/11] RUN mkdir -p /jmeterdocker/test/report/jtl 0.0s
=> CACHED [ 8/11] RUN mkdir -p /jmeterdocker/test/report/outputdata 0.0s
=> CACHED [ 9/11] RUN cd /jmeterdocker 0.0s
=> ERROR [10/11] COPY /Users/guoliang/Documents/Work/apache-jmeter-5.4.1.tgz /jmeterdocker 0.0s
------
> [10/11] COPY /Users/guoliang/Documents/Work/apache-jmeter-5.4.1.tgz /jmeterdocker:
------
failed to compute cache key: "/Users/guoliang/Documents/Work/apache-jmeter-5.4.1.tgz" not found: not found
后查詢Docker文檔,它說不能使用相對路徑。
當(dāng)我將jmeter.tgz文件移動到Dockerfile同目錄下在進(jìn)行build后Dockerfile執(zhí)行成功。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker安裝并持久化postgresql數(shù)據(jù)庫的操作步驟
這篇文章主要介紹了docker安裝并持久化postgresql數(shù)據(jù)庫的操作步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12詳解Docker+Jenkins+Gitlab+Django應(yīng)用部署實踐
這篇文章主要介紹了Docker+Jenkins+Gitlab+Django應(yīng)用部署實踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01詳解Docker Compose 中可用的環(huán)境變量問題
Compose 的多個部分在某種情況下處理環(huán)境變量。這篇文章主要介紹了Docker Compose 中可用的環(huán)境變量問題,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12Docker 鏡像優(yōu)化(從1.16GB到22.4MB)
在這篇文章中,我將重點討論如何優(yōu)化 Docker 鏡像以使其輕量化,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08在Ubuntu 16.04上用Docker Swarm和DigitalOcean創(chuàng)建一個Docker容器集群的方法
這篇文章主要介紹了在Ubuntu 16.04上用Docker Swarm和DigitalOcean創(chuàng)建一個Docker容器集群的方法,需要的的朋友參考下吧2017-01-01docker+jenkins+gitee配置持續(xù)集成部署方式
這篇文章主要介紹了docker+jenkins+gitee配置持續(xù)集成部署方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09查看Docker停止容器占用的內(nèi)存的實現(xiàn)方法小結(jié)
要查看 Docker 停止的容器占用的內(nèi)存,可以通過以下幾種方法來實現(xiàn),Docker 提供了一些命令和工具來幫助你管理和監(jiān)控容器的資源使用情況,需要的朋友可以參考下2024-11-11