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 提供独立与容器之外的持久化存储
原文地址:https://www.cnblogs.com/daikainan/p/14287316.html