Dockerfile常用命令的使用简介
,我们已经说了run、from、maintainer、expose等一些dockerfile的相关命令,今天我们来看dockerfile的其他命令介绍。
01 cmd
cmd命令用于指定一个容器启动的时候需要运行的命令。它和run指令有点类似,但是不同之处在于:
run指令是镜像被构建的时候,需要执行的命令;
cmd指令是指定容器被启动的时候,要运行的指令。举例:
这个命令是我们启动一个容器,并且运行/bin/ls
它相当于我们手工进入docker中执行ls命令。在dockerfile中可以使用下面的命令进行代替:
需要注意的是,在dockerfile中只能指定一条cmd命令,即使我们指定了多条,也只有最后一条能被最终执行。
如果我们在dockerfile中使用了cmd指令,则docker run命令之后会直接运行cmd指令,例如:
会在启动这个容器之后,直接运行/bin/ls命令。
02 entrypoint
这个命令和上面的cmd命令很像,不同之处在于,docker run命令后面指定的任何参数都会被当做参数再次传递给entrypoint指令中的命令。
03 workdir
workdir指令用来在从镜像创建一个新容器时,在容器内部设置一个工作目录。entrypoint或者cmd命令会在这个目录下执行。
这条命令往往在dockerfile的最前面出现,为后续一系列的命令设置工作目录。在指定完成某些命令之后,也可以通过这个命令来切换当前的目录。所以,通常情况下,这个workdir命令最常见的使用方法应该是下面这样:
它是不断切换目录的一个工具。
如果我们在dockerfile中写明了目录,但是在docker run的时候不想使用这个目录应该怎么办?
答案是使用docker run -w /var/dir1
使用-w参数之后,会使用/var/dir1来覆盖我们dockerfile中的路径。
04 env
env指令用来在生成dockerfile的过程中指定环境变量。例如:
它可以跟上面的workdir搭配起来,例如:
还可以在使用env命令生成的容器中,使用env命令,来查看当前容器的环境变量,便可以看到我们设置好的pyrhon_home的值。
除了这种方法之外,我们可以使用docker -e的命令来传递环境变量,但是这种方法传递的环境变量,只在运行的时候有效。
05 user
user指令用来指定镜像会以什么样的用户来执行。例如:
当然,还可以使用
有两点需要注意:
1、可以使用docker run中的-u指令去覆盖dockerfile中的user选项;
2、如果不指定user选项,则默认是root用户
06 volume
volume指令用来向基于镜像创建的容器添加卷。一个卷可以存在于一个或者多个容器内的特定目录。这个目录可以提供共享数据或者对数据进行持久化的功能,例如:
1、卷可以在容器间共享和重用
2、一个容器不必和其他容器共享卷
3、对卷的修改是立即生效的
4、卷会一直存在,直到没有任何容器需要他
这个功能可以让我们将部分代码或者数据添加到镜像中,而不是提交到镜像中。这样会大大缩减镜像的大小。它允许我们在多个容器间共享这些内容,所以volume常常用来测试容器正确性。
这条命令将会为使用此镜像创建的容器创建一个名字为/volume的挂载点。
也可以使用数组的方式创建多个挂载点:
07 add
add命令用来将构建环境下的文件和目录复制到镜像中。add命令使用的过程中需要文件的源位置和目标位置,如下:
这条命令,会将镜像构建目录下的aaa.txt文件复制到镜像中的/data1/aaa.txt 目录下。源文件除了可以是构建环境上下文中的一个文件,也可以是一个url。
在add文件的过程中,如果目的地址是以/结尾,那么dockerfile会认为源位置是一个目录,反之则认为源文件是一个文件。
还有一点需要注意:当源文件是一个本地归档文件的时候,例如tar.gz,则docker 会将其解压到目标文件下。
08 copy
copy命令非常类似于add,和add的不同在于copy不支持url方法,也不会主动去解压文件,copy指令的目的位置必须是容器内部的一个绝对路径。
需要注意:
1、任何由该命令创建的文件或者目录的uid和gid都会被设置成0
2、如果目的位置不存在,docker将会自动创建所有需要的目录结构。就像mkdir -p那样。
今天的内容就到这里吧,可能看着比较干,后续我会补充案例,来对这些命令进行说明。
以上就是dockerfile常用命令的使用简介的详细内容,更多关于dockerfile命令的使用的资料请关注其它相关文章!
上一篇: MySQL用户与权限的管理详解
下一篇: Steam账户换区改为三个月一次
推荐阅读
-
linux系统常用命令有哪些? semicolon命令的使用方法
-
使用dockerfile构建nginx镜像的方法示例
-
Python中Django框架下的staticfiles使用简介
-
ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)第1/2页
-
PHP的cURL库简介及使用示例
-
Linux常用命令last的使用方法详解
-
Node.js中的require.resolve方法使用简介
-
简介JavaScript中的setTime()方法的使用
-
简介JavaScript中toTimeString()方法的使用
-
JavaScript中的toLocaleDateString()方法使用简介