构建dockerfile的13个命令

1、Dockerfile的基本指令有十三个,分别是:FROM、MAINTAINER、RUN、CMD、EXPOSE、ENV、ADD、COPY、ENTRYPOINT、VOLUME、USER、WORKDIR、ONBUILD

基础镜像信息 FROM
维护者信息 MAINTAINER
镜像操作指令 RUN、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME等
容器启动时执行指令 CMD、ENTRYPOINT

2、FROM :指定基础镜像
FROM livingobjects/jre8

3、RUN:执行命令
RUN apk add --no-cache tzdata
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ >

4、COPY:复制文件
将文件从宿主机复制到镜像内,源文件需要和dockerfile在同一个目录
COPY update.json /usr/local/nginx/share/html/

5、CMD:容器启动命令
容器启动时执行的命令,只有最后一个生效
CMD /bin/bash

6、MAINTAINER:指定作者
MAINTAINER lao.san lao.san@gmail.com

7、EXPOSE:暴露端口
也可以运行时暴露docker run -p 8080:80
EXPOSE 8080

8、WORKDIR:配置工作目录
进入目录,如不存在会创建
WORKDIR /usr/local/nginx/share/html/

9、ENTRYPOINT:容器启动执行命名
ENTRYPOINT和CMD语法相同,区别在于:
1)CMD的命令会被docker run的命令覆盖而ENTRYPOINT不会
2)CMD和ENTRYPOINT都存在时,CMD的指令变成了ENTRYPOINT的参数,并且此CMD提供的参数会被 docker run 后面的命令覆盖

ENTRYPOINT [“java”,"-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","–spring.profiles.active=test"]

10、VOLUME:挂载本地目录或文件
VOLUME /tmp

11、USER:指定后续执行命令的用户
USER daemon

12、ADD:添加文件
用法和COPY相同
ADD sdp-bi-datax-business.jar app.jar

13、ONBUILD:配置当前所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令

14、ENV:设置环境变量
1)具有传递性,也就是当前镜像被用作其它镜像的基础镜像时,新镜像会拥有当前这个基础镜像所有的环境变量
2)ENV定义的环境变量,可以在dockerfile被后面的所有指令(CMD除外)中使用,但不能被docker run 的命令参数引用
ENV TZ=Asia/Shanghai
ENV JAVA_HOME /opt/jdk
ENV PATH P A T H : PATH:PATH:JAVA_HOME/bin

Dockerfile内容
#在centos上安装nginx
FROM centos
#标明著作人的名称和邮箱
MAINTAINER xxx xxx@gmail.com
#测试一下网络环境
RUN ping -c 1 www.baidu.com
#安装nginx必要的一些软件
RUN yum -y install gcc make pcre-devel zlib-devel tar zlib
#把nginx安装包复制到/usr/src/目录下
ADD nginx-1.15.8.tar.gz /usr/src/
#切换到/usr/src/nginx-1.15.8编译并且安装nginx
RUN cd /usr/src/nginx-1.15.8
&& mkdir /usr/local/nginx
&& ./configure --prefix=/usr/local/nginx && make && make install
&& ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
&& nginx
#删除安装nginx安装目录
RUN rm -rf /usr/src/nginx-nginx-1.15.8
#对外暴露80端口
EXPOSE 80
#启动nginx
CMD [“nginx”, “-g”, “daemon off;”]

docker build -t nginx:v1.0 .

–build-arg=[] :设置镜像创建时的变量;
-f :指定要使用的Dockerfile路径;
–force-rm :设置镜像过程中删除中间容器;
–rm :设置镜像成功后删除中间容器;
–tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;

 

posted @ 2022-02-15 11:07  介寒食  阅读(1491)  评论(0编辑  收藏  举报