这期内容当中小编将会给大家带来有关有哪些常用的Dockerfile命令,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
01 CMD
CMD命令用于指定一个容器启动的时候需要运行的命令。它和运行指令有点类似,但是不同之处在于:
运行指令是镜像被构建的时候,需要执行的命令;
CMD指令是指定容器被启动的时候,要运行的指令举。例:
docker run -it , container_name ,/bin/ls
这个命令是我们启动一个容器,并且运行/bin/ls
它相当于我们手工进入码头工人中执行ls命令。在Dockerfile中可以使用下面的命令进行代替:
CMD [,“/bin/ls",]
需要注意的是,在Dockerfile中只能指定一条CMD命令,即使我们指定了多条,也只有最后一条能被最终执行。
如果我们在Dockerfile中使用了CMD指令,则码头工人运行命令之后会直接运行CMD指令,例如:
docker run -it container_name
会在启动这个容器之后,直接运行/bin/ls命令。
02入口点
,,这个命令和上面的CMD命令很像,不同之处在于,码头工人运行命令后面指定的任何参数都会被当做参数再次传递给入口点指令中的命令。
03 WORKDIR
,,WORKDIR指令用来在从镜像创建一个新容器时,在容器内部设置一个工作目录.ENTRYPOINT或者CMD命令会在这个目录下执行。
,,这条命令往往在DockerFile的最前面出现,为后续一系列的命令设置工作目录。在指定完成某些命令之后,也可以通过这个命令来切换当前的目录,所以,通常情况下,这个WORKDIR命令最常见的使用方法应该是下面这样:
WORKDIR /data1 xxxxx RUN xxxxx RUN xxxxxx WORKDIR /data2/xxxxx RUN xxxxx RUN xxxxx
它是不断切换目录的一个工具。
如果我们在DockerFile中写明了目录,但是在码头工人跑的时候不想使用这个目录应该怎么办?
答案是使用码头工人运行- w/var/dir1
使用- w参数之后,会使用/var/dir1来覆盖我们DockerFile中的路径。
04 ENV
,,ENV指令用来在生成DockerFile的过程中指定环境变量。例如:
ENV , PYRHON_HOME ,/usr/bin/python
它可以跟上面的WORKDIR搭配起来,例如:
ENV , PYRHON_HOME /usr/bin/python WORKDIR ,,美元PYTHON_HOME
还可以在使用ENV命令生成的容器中,使用ENV命令,来查看当前容器的环境变量,便可以看到我们设置好的PYRHON_HOME的值。
除了这种方法之外,我们可以使用码头工人- e的命令来传递环境变量,但是这种方法传递的环境变量,只在运行的时候有效。
05用户
,,用户指令用来指定镜像会以什么样的用户来执行。例如:
USER mysql
当然,还可以使用
USER 用户 USER 用户:组 USER uid USER uid: gid
有两点需要注意:
1,可以使用码头工人中运行的- u指令去覆盖DockerFile中用户选的项;
2,如果不指定用户选项,则默认是根用户
06卷
,体积指令用来向基于镜像创建的容器添加卷。一个卷可以存在于一个或者多个容器内的特定目录。这个目录可以提供共享数据或者对数据进行持久化的功能,例如:
1,卷可以在容器间共享和重用
2,一个容器不必和其他容器共享卷
3,对卷的修改是立即生效的
4卷会一直存在,直到没有任何容器需要他
这个功能可以让我们将部分代码或者数据添加到镜像中,而不是提交到镜像中。这样会大大缩减镜像的大小。它允许我们在多个容器间共享这些内容,所以体积常常用来测试容器正确性。
VOLUME [,“/volume",]
这条命令将会为使用此镜像创建的容器创建一个名字为/体积的挂载点。
也可以使用数组的方式创建多个挂载点:
VOLUME [,“/data1",“/data2",]
07添加
,,,添加命令用来将构建环境下的文件和目录复制到镜像阀门中命令使用的过程中需要文件的源位置和目标位置,如下:
ADD aaa.txt ,/data1 aaa.txt
这条命令,会将镜像构建目录下的aaa.txt文件复制到镜像中的/data1/aaa。三目录下。源文件除了可以是构建环境上下文中的一个文件,也可以是一个URL。