4.Dockerfile 语法及构建
Dockerfile 实例
1.创建Dockerfile文件
FROM nginx:1.17.6
ENV LANG en_US.UTF-8
ADD index.html /usr/share/nginx/html
EXPOSE 80
EXPOSE 443
2.构建
docker build . -t daikainan/mynginx:1.0.0
.当前目录
-t 新标签
2.运行并测试
docker run -d -p 80:80 --name mynginx mynginx:1.1.0
如果报错或生成镜像没有标签,看下错误输出,index.html是否存在
3.注册账号
去https://hub.docker.com/ 注册自己账号
4.将自己生成的镜像发布到hub.docker.com上
# 注册docker id后,在linux中登录dockerhub,国内网速慢,失败了,多登陆几次
docker login
# 推送docker image到dockerhub
docker push daikainan/mynginx:1.1.0
- 去dockerhub中检查镜像
- 验证
# 先删除本地镜像,然后再测试下载pull 镜像文件
docker rmi daikainan/mynginx:1.1.0
docker pull daikainan/mynginx:1.1.0
Dockerfile 语法
FROM centos #制作base image 基础镜像,尽量使用官方的image作为base image
LABEL version="1.0" #容器元信息,帮助信息,Metadata,类似于代码注释
LABEL maintainer="pig4cloud@qq.com"
#对于复杂的RUN命令,避免无用的分层,多条命令用反斜线换行,合成一条命令!
RUN yum update && yum install -y vim \
Python-dev #反斜线换行
WORKDIR /root #相当于linux的cd命令,改变目录,尽量使用绝对路径!!!不要用RUN cd
WORKDIR /test # 如果没有就自动创建
ADD test.tar.gz / # 添加到根目录并解压
COPY hello test/ # 等同于上述ADD效果
ADD与COPY
- 优先使用COPY命令
-ADD除了COPY功能还有解压功能
ENV # 环境变量,尽可能使用ENV增加可维护性
ENV MYSQL_VERSION 5.6 # 设置一个mysql常量
明令 用途
FORM base image
RUN 执行命令
ADD 添加文件
COPY 拷贝文件
CMD 执行命令
EXPOSE 暴露端口
WORKDIR 指定路径
MAINTAINER 维护者
ENV 设置环境变量
ENTRYPOINT 容器入口
USER 指定用户
VOLUME mount point 提供独立与容器之外的持久化存储