Dockerfile中的copy命令使用
Dockerfile中的copy命令
在編寫(xiě)Dockerfile的時(shí)候copy宿主機(jī)文件到鏡像中,在執(zhí)行構(gòu)建的時(shí)候報(bào)錯(cuò)
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的文件使用的是相對(duì)路徑(把jmetercopy到鏡像的jmeterdocker文件中)
我的jmeter.tgz存放在Docker的上一級(jí)目錄中。

命令執(zhí)行后報(bào)錯(cuò)提示找不到
failed to compute cache key: "/apache-jmeter-5.4.1.tgz" not found: not found
后來(lái)又嘗試使用絕對(duì)路徑更改如下
使用絕對(duì)路徑
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之后報(bào)錯(cuò)內(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文檔,它說(shuō)不能使用相對(duì)路徑。

當(dāng)我將jmeter.tgz文件移動(dòng)到Dockerfile同目錄下在進(jìn)行build后Dockerfile執(zhí)行成功。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker鏡像與容器的導(dǎo)入導(dǎo)出以及常用命令總結(jié)
Docker是一個(gè)開(kāi)源的容器引擎,基于go語(yǔ)言開(kāi)發(fā)并遵循了apache2.0協(xié)議開(kāi)源,下面這篇文章主要給大家介紹了關(guān)于Docker鏡像與容器的導(dǎo)入導(dǎo)出以及常用命令總結(jié)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
替換docker容器中的一個(gè)文件的實(shí)現(xiàn)
在某些情況下,我們可能確實(shí)需要更新容器內(nèi)的文件,本文主要介紹了替換docker容器中的一個(gè)文件的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06
docker mysql啟動(dòng)時(shí)執(zhí)行初始化sql
這篇文章主要介紹了docker mysql啟動(dòng)時(shí)執(zhí)行初始化sql問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05
docker-compose使用volumes注意項(xiàng)介紹
這篇文章主要介紹了docker-compose使用volumes注意項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
Docker中部署MySQL 5.7并遠(yuǎn)程連接Navicat的完整指南
MySQL是最流行的關(guān)系型數(shù)據(jù)庫(kù)之一,而Docker提供了輕量級(jí)、可移植的容器化解決方案,本文將詳細(xì)介紹如何在CentOS 7上使用Docker部署 MySQL 5.7,并通過(guò)Windows上的Navicat進(jìn)行遠(yuǎn)程連接,需要的朋友可以參考下2025-07-07
利用Docker搭建本地https環(huán)境的完整步驟
這篇文章主要給大家介紹了關(guān)于如何利用Docker搭建本地https環(huán)境的完整步驟,文中通過(guò)示例代碼將實(shí)現(xiàn)的步驟介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2018-04-04

