Dockerfile
//
# Dockerfile
Docker镜像制作的途径有哪些?
1.通过docker commit 制作镜像(无法知道该容器做了什么操作)
2.通过Dockerfile 制作镜像(镜像需要命令包,直观),Dockerfile 是一个用来构建docker镜像的文本文件,里面包含一条条构建镜像过程的所需要的操作集合
# Dockerfile的规则
格式
1.每一个Dockerfile的第一个非注释行指令,必须是 “FROM“ 指令,该指令用于指定基准模板镜像,后续基于此镜像运行
2.# 为注释
3.指令(大写)内容(小写),尽管指令大小写不敏感,但强烈建议
4.按顺序执行Dockerfile里的指令集合(从上到下)
# Dockerfile指令
描述参数 | 说明 | 示例 |
---|---|---|
FROM | 基础镜像 | FROM ubuntu:1804 |
USER | PID 进程使用什么用户运行,不知道默认root | USER nginx |
WORKDIR | 容器工作目录,不指定默认 '/' | WORKDIR /usr/share/nginx/html |
ARG | 构建参数,与 ENV 作用一致。不过作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效 | ARG dirEnv test |
ENV | 环境变量,dockerfile 和docker里面全局变量 | ENV dirEnv test |
COPY | “拷贝/添加”本地文件,到镜像里 | COPY nginx.conf /etc/nginx.conf |
ADD | “拷贝/添加”本地文件,到镜像里,如果是压缩包,会自动解压 | ADD dist.zip /usr/share/nginx/html |
VOLUME | 定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷 | VOLUME ["/data1","/data2"] |
RUN | 用于执行后面跟着的命令行命令 | RUN yum install vim -y && echo 'hello' |
EXPOSE | 暴露什么端口,如果启动使用了-p 参数,EXPOSE指令不生效 | EXPOSE 8080 |
CMD | 用于容器初始启动命令,可替换 | CMD ["nginx","-g","daemon off"] |
ENTRYPOINT | 用于容器初始启动命令,不可替换,后面添加加为启动命令参数 | ENTRYPOINT /entrypoint.sh |
不常用参数:HEALTHCHECK , ONBUILD ,LABEL
Dockerfile
ARG version=18.04
FROM ubuntu:$version
ARG version
ARG user=root
ARG DEBIAN_FRONTEND=noninteractive
MAINTAINER yfk
USER ${user}
ENV TZ=Asia/Shanghai
WORKDIR /data
COPY ./sources.list-18.04 /etc/apt/sources.list
ADD ./entrypoint.sh /entrypoint.sh
VOLUME ["/data1","/data2"]
RUN useradd test && echo "${TZ}" > /etc/timezone
RUN apt-get update -y && apt-get upgrade -y \
&& apt-get install -y tzdata \
&& ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \
&& rm -rf /var/lib/apt/lists/* && chmod +x /entrypoint.sh
EXPOSE 8088
ENTRYPOINT ["/entrypoint.sh"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
sources.list-18.04
deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
entrypoint.sh
#!/bin/bash
source /etc/profile
export PATH=$PATH
echo $TZ
args=$1
sleep $args
1
2
3
4
5
6
7
2
3
4
5
6
7
构建:docker build -t test_yfk:v1 .
启动一个运行10s 的容器:docker run -it --rm --name test test_yfk:v1 10
//
如果此文章对您有帮助,点击 -->> 请博主喝咖啡 (opens new window)
上次更新: 2022/07/03, 23:25:40