跳转至

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
FROM ubuntu:20.04

MAINTAINER Yangbaoku itybku@139.com

RUN apt-get update \
    && apt-get install -y nginx \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
    && echo "daemon off;" >> /etc/nginx/nginx.conf

#ADD default /etc/nginx/sites-available/default

EXPOSE 80
CMD ["nginx"]

2、编译

1
2
3
docker build .
docker build -t nginx:v1 .
docker build -t nginx:v1 -f /path/Dockerfile .

3、运行

1
2
3
docker run -d  nginx:v1
docker run -d -p 80:80 nginx:v1
docker run -d -v /opt/nginx/:/var/www/html -p 443:80 nginx:v1

容器里的/var/www/html这个默认路径可以通过查看容器里nginx的默认配置cat /etc/nginx/sites-enabled/default 发现。

捐赠本站(Donate)

weixin_pay
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))