通过声明式脚本构建,可复现、可版本控制、支持高级特性。
构建流程
# 1. 编辑 Dockerfile(D 必须大写)
vim Dockerfile
# 2. 构建镜像(末尾的点表示当前目录为构建上下文)
docker build -t nginx:v0.2 .
# 3. 运行容器
docker run -dit --name nginx -v /etc/localtime:/etc/localtime:ro -p 80:80 nginx:v0.2
Dockerfile 完整示例
# 引入基础镜像(scratch 表示空白镜像)
FROM centos:8
# 构建时执行的操作
RUN rm -rf /etc/yum.repos.d/*
RUN cat > /etc/yum.repos.d/test.repo << 'EOF'
[BaseOS]
name=CentOS-$releasever - Base
baseurl=https://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/
gpgcheck=0
enabled=1
[AppStream]
name=CentOS-$releasever - AppStream
baseurl=https://mirrors.aliyun.com/centos/$releasever/AppStream/$basearch/os/
gpgcheck=0
enabled=1
EOF
# 合并多条命令到一层,减少镜像层数
RUN yum clean all && yum makecache && \
yum install nginx -y && \
rm -f /usr/share/nginx/html/index.html && \
echo "hello dockerfile" > /usr/share/nginx/html/index.html
# 声明容器启动后监听的端口
EXPOSE 80
# 设置默认启动指令(可被覆盖)
CMD ["nginx", "-g", "daemon off;"]