Dockerfile详解
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
Dockerfile详解
使用$ docker build
命令构建镜像时需要用到Dockerfile,它通常会包含如下命令:
命令 | 描述 | 示例 |
---|---|---|
FROM | 指定基础镜像 | FROM python:3.8.3-alpine |
MAINTAINER | 镜像创建者 | MAINTAINER yangbk |
COPY | 添加宿主机文件到容器,复制 | COPY . /html/myapp |
ADD | 添加宿主机文件到容器,复制+解压 | ADD myfile.tar /html/myapp |
RUN | 创建镜像时要执行的命令 | RUN pip install -r requirements.txt |
USER | 切换执行后续命令的用户和用户组, 但这个用户必需首先已使用RUN的命令进行创建好了。 | RUN groupadd -r redis && useradd -r -g redis redis; USER redis(切换用户) |
WORKDIR | 指定工作目录 | WORKDIR /html/myapp |
CMD | 容器启动时默认要运行的程序。如果执行 docker run 后面跟启动命令会被覆盖掉。 | CMD [“/bin/bash”] |
ENV | 设置环境变量 | ENV APP_HOME /html/myapp |
ENTRYPOINT | 同CMD,但其不会被覆盖,可以和docker run命令传递的参数进行拼接执行。 | 如果设置:ENTRYPOINT ["nginx", "-c"] , 运行$ docker run mynginx_1 -c /etc/nginx/myweb.conf 将默认执行命令:nginx -c /etc/nginx/myweb.conf 。 |
VOLUME | 定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。 | VOLUME /tmp |
EXPOSE | 容器暴露端口,供link到当前容器或通过docker network的容器,不会和宿主机端口映射关系。 | EXPOSE 8080 |
Dockerfile编译运行示例
1、创建dockerfile文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
2、编译
1 2 3 |
|
3、运行
1 2 3 |
|
容器里的/var/www/html这个默认路径可以通过查看容器里nginx的默认配置cat /etc/nginx/sites-enabled/default 发现。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))