介绍
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
构建步骤:
- 编写一个dockerfle文件
- docker build构建成为一个镜像
- docker run运行镜像
- docker push发布镜像
构建过程
- 每个保留关键字(指令)都是必须是大写字母
- 执行从上到下顺序执行
- #表示注释
- 每一个指令都会创建提交一个新的镜像层,并提交!
相关指令
FROM:该指令用于指定要构建的镜像的基础镜像。它通常是 Dockerfile 中的第一条指令。
RUN:该指令用于在镜像中执行命令,这会创建新的镜像层。每个 RUN 指令创建一个新的镜像层。
MAINTAINER:镜像的作者,姓名 + 邮箱
ADD:添加镜像
WORKDIR:为后续的 RUN、CMD、ENTRYPOINT 指令配置工作目录
VOLUME:创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等
EXPOSE: 指令用于记录应用所使用的网络端口
CMD:类似于 RUN 指令,用于运行程序,但二者运行的时间点不同。CMD 在docker run 时运行。RUN 是在 docker build。如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。
ENTRYPOINT:类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。但是, 如果运行 docker run 时使用了 --entrypoint 选项,将覆盖 CMD 指令指定的程序。
ENV:配置环境变量目录
开始构建
Docker Hub 中大多数镜像都是从这个基础镜像过来的FROM scratch ,然后配置需要的软件和配置来进行的构建
构建自己的 centos
在 / 目录下的 home 目录创建一个文件夹 dockerfile
[root@localhost /]# cd home/
[root@localhost home]# mkdir dockerfile
[root@localhost home]# vim mydockerfile-centos
添加内容
FROM centos
MAINTAINER bang<1115189918@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash
docker build -f dockerfile文件路径 -t 镜像名:[tag]
[root@localhost home]# docker build -f mydockerfile-centos -t mycentos:0.1 .
测试运行我们构建的镜像
[root@localhost home]# docker run -it mycentos:0.1
构建成功后可以通过 docker history + 镜像id 查看镜像构建步骤
发布镜像到 DockerHub
先登录DockerHub账号
发布到DockerHub
提交失败
docker tag [镜像id] [新名字],再次尝试提交
发布到阿里云镜像
登录阿里云,找到容器镜像服务,创建命名空间
创建容器镜像
按照步骤操作