Dockerfile基础命令

Dockerfile基本命令

FROM - 基于基准镜像

  • FROM centos # 基于centos:latest
  • FROM scratch # 不依赖任何基准镜像base image
  • FROM tomcat:9.0.22-jdk8-openjdk

LABEL & MAINTAINER - 说明信息

  • MAINTAINER xxxx.com
    • 机构&个人ID
  • LABEL version=“1.0”
  • LABEL description=“这是描述信息”

WORKDIR - 设置工作目录

  • WORKDIR /usr/local
  • WORKDIR /usr/local/newdir # 自动创建
  • 尽量使用绝对路径

ADD & COPY - 复制文件

  • ADD hello / # 复制到根目录
  • ADD test.tar.gz / # 添加到根目录并解压
  • ADD除了复制,还具备添加远程文件功能

ENV - 设置环境常量

  • ENV JAVA_HOME /usr/local/openjdk8
  • RUN ${JAVA_HOME}/bin/java -jar test.jar
  • 尽量使用环境常量,可提高程序维护性

Dockerfile执行指令

RUN & CMD & ENTRYPOINT

  • RUN:在Build构建时执行命令

    • RUN yum install -y vim # Shell 命令格式
      • 会生成一个子shell进程
    • RUN [“yum”, “install”, “-y”, “vim”] # Exec命令格式
      • 会用Exec进程替换当前进程,并且保持PID不变
      • 执行完毕,直接退出,并不会退回到之前的进程环境
      • 推荐使用Exec命令格式执行命令
  • ENTRYPOINT:容器启动时执行的命令

    • Dockerfile中只有最后一个ENTRYPOINT会被执行
    • ENTRYPOINT[“ps”] # 推荐使用Exec格式
  • CMD:容器启动后执行默认的命令或参数

    • CMD用于设置默认执行的命令
    • 如果Dockerfile中出现多个CMD,则只有最后一个被执行
    • 如容器启动时附加指令,则CMD被忽略
    • CMD [“ps”, “-ef”] # 推荐使用Exec格式
  • 举例

FROM centos
RUN ["echo", "image building!!!"]
ENTRYPOINT ["ps"]
CMD ["-ef"]

Dockerfile实战-构建Redis镜像

FROM centos
RUN ["yum", "install", "-y", "gcc", "gcc-c++", "net-tools", "make"]
WORKDIR /usr/local
ADD redis-4.0.14.tar.gz .
WORKDIR /usr/local/redis-4.0.14/src
RUN make && make install
WORKDIR /usr/local/redis-4.0.14
ADD redis-7000.conf .
EXPOSE 7000
CMD ["redis-server", "redis-7000.conf"]
  • 构建镜像
    • docker build -t python_id.com/docker-redis .

猜你喜欢

转载自blog.csdn.net/u010684603/article/details/114644144