我有一个docker run命令,我只是想知道-v "..":".." -w ".." maven mvn clean
...在做什么?
docker run --rm --name ${DOCKER_IMAGE_NAME}_build -v "$(pwd)":/usr/src/mymaven -w /usr/src/mymaven maven:3.6.0-jdk-8-alpine mvn clean install package
我认为它正在将操作系统“ $(pwd)”上的本地卷映射到/ usr / src / mymaven的docker卷内的docker文件夹,然后在/ usr内使用“ w”执行命令/ src / mymaven”文件夹,但是由于映射,它在本地$ pwd目录中执行吗?因此它执行"maven:3.6.0-jdk-8-alpine mvn clean install package"
部分,这将启动mvn构建过程,但是maven:3.6.0-jdk
是什么...我知道这是一个映像,但是它如何知道从哪里提取该映像以及之后如何直接对该映像执行该命令呢?
答案 0 :(得分:2)
该命令的-v部分将卷绑定到启动容器。在这种情况下,-v“ $(pwd)”:/ usr / src / mymave 将您当前的目录作为/ usr / src / mymave添加到容器中。
命令的-w部分将容器内的工作目录设置为/ usr / src / mymave 以及之后的部分
maven:3.6.0-jdk-8-alpine->这是您开始的容器
mvn全新安装软件包->这是您在容器内启动的命令(因此在/ usr / src / mymave工作目录中)
基本上,此运行命令将启动一个容器,运行maven并使用您在其中开始的当前目录作为运行源。
有关参数的更多信息:docker doc on run arguments