Dockerfile常用命令

简介

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像

自定义镜像的方法

commit

从一个镜像运行容器,修改容器内容,再使用docker commit,构建一个镜像到本地

Dockerfile

使用Dockerfile构建自定义镜像

Dockerfile组成

基础镜像指令

FROM

指定基础镜像,必须是第一条指令

格式:

FROM <image>
FROM <image>:<tag>

例如 FROM ubuntu

维护者者信息指令

MAINTAINER

指定镜像创建者和联系方式,选填

格式:

MAINTAINER <name>

例如 MAINTAINER Oxye [email protected]

镜像操作指令

RUN

容器内部执行命令,每个RUN相当于在原有镜像基础上再加一层

RUN命令有两种格式

1. RUN <command>
2. RUN ["executable", "param1", "param2"]

第一种后边直接跟shell命令

在linux操作系统上默认 /bin/sh -c

在windows操作系统上默认 cmd /S /C

第二种是类似于函数调用。

可将executable理解成为可执行文件,后面就是两个参数

例如 RUN echo “test” > /opt/temp/app.js

ADD

一个复制命令,把文件复制到镜像中

将src源文件复制到dst目标文件,src是相对被构建的源目录的相对路径, 可以是一个url ,dst是容器中的绝对路径

语法如下:

1. ADD <src>... <dest>
2. ADD ["<src>",... "<dest>"]

例如 ADD test.txt /opt/temp

COPY

一个复制命令

语法如下:

1. COPY <src>... <dest>
2. COPY ["<src>",... "<dest>"]

与ADD的区别, COPY的只能是本地文件,其他用法一致

ENV

设置环境变量

语法有两种

1. ENV <key> <value>
2. ENV <key>=<value> ...

两者的区别就是第一种是一次设置一个,第二种是一次设置多个

例如 ENV WEB_VERSION 1.0.7

EXPOSE

暴漏容器运行时的监听端口给外部

但是EXPOSE并不会使容器访问主机的端口

如果想使得容器与主机的端口有映射关系,必须在容器启动的时候加上 -P参数

EXPOSE <port>

例如 EXPOSE 8080 开放8080端口

VOLUME

实现挂载功能,可以将内地文件夹或者其他容器种得文件夹挂在到这个容器中,当数据需要持久化时用这个命令

语法为:

VOLUME ["/data"]

WORKDIR

设置工作目录,对RUN,CMD,ENTRYPOINT,COPY,ADD生效, 可以设置多次

语法:

WORKDIR /path/to/workdir

ARG

设置变量命令

语法:

ARG <name>[=<default value>]

容器启动执行指令

CMD

容器启动时要运行的命令,一个Dockerfile只能有一个CMD生效,如果有多个则最后一个生效

语法有三种写法

1. CMD ["executable","param1","param2"]
2. CMD ["param1","param2"]
3. CMD command param1 param2

RUN是构件容器时就运行的命令以及提交运行结果

CMD是容器启动时执行的命令,在构件时并不运行

ENTRYPOINT

启动时的默认命令,只能写一条,如果写了多条,那么只有最后一条生效

ENTRYPOINT不会被运行的command覆盖,而CMD则会被覆盖

语法如下:

1. ENTRYPOINT ["executable", "param1", "param2"]
2. ENTRYPOINT command param1 param2

例如 ENTRYPOINT [“top”, “-b”]

USER

设置启动容器的用户,可以是用户名或UID,所以,只有下面的两种写法是正确的

如果设置了容器以daemon用户去运行,那么RUN, CMD 和 ENTRYPOINT 都会以这个用户去运行

USER daemo
USER UID

参考

Docker学习和应用(二)_使用Docker

Flux7 Docker 系列教程(三):使用Dockerfile实现自动化

Dockerfile及命令详解

Docker Dockerfile

Dockerfile实例——(实践操作!)

猜你喜欢

转载自blog.csdn.net/weixin_43859729/article/details/108369565