什么是 Dockerfile
Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
Dockerfile 语法
- FROM:指定 Base image,定制的镜像都是基于 FROM 的镜像,尽量使用官网 Image
- RUN:用于执行后面跟着的命令行命令,Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。可通过 && 符号连接
- shell 格式:
RUN <命令行命令,shell 命令>
- exec 格式:
RUN ["可执行文件", "参数1", "参数2"]
- shell 格式:
- LABEL: 注释
- WORKDIR:指定工作目录,没有会自动创建,尽量使用绝对目录
- ADD:添加文件并解压缩
- COPY:复制指令,从上下文目录中复制文件或者目录到容器里指定路径
- ENV:设置常量,增加可维护性
- VOLUME:定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
- EXPOSE:仅仅只是声明端口。
- CMD:CMD指令中只能有一条指令Dockerfile。如果您列出多个,CMD则只有最后一个CMD才会生效。
- ENTRYPOINT:让容器以应用程序或服务的形式运行,不会被忽略,一定会执行
docker build
使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1,. 为当前目录
docker build -t runoob/ubuntu:v1 .
发布 Image
自建 Image 发布到 DockerHub
登录 docker : docker login 输入用户名和密码
[root@localhost demo]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: Username
Password: Password
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
通过 docker push ImageID:TAG
docker push e/demo:1