dockerfile的构建过程
基础知识:
- 每个保留关键字都必须是大写字母
- 执行从上到下顺序进行
- #表示注释
- 每个指令都会创建一个新的镜像层,并提交!
dockerfile是面向开发的,我们以后要发布项目,做镜像,都要编写dockerfile文件,这个文件十分简单,逐渐成为企业交付的标准!
步骤:开发,部署。运维……,缺一不可!
dockerfile:构建文件,定义一切的步骤,源代码
dockerimages:通过dockerfile构建生成的镜像,最终要发布和运行的产品
docker容器:容器就是镜像运行起来提供服务的
dockerfile的指令
以前就是用别人的镜像,现在可以构建自己的镜像了!
FROM #基础镜像,一切从这里构建,如centos
MAINTAINER #镜像是谁写的,姓名+邮箱
RUN #docker镜像构建时需要运行的命令
ADD #添加内容,步骤:如tomcat镜像,这个tomcat压缩包!
WORKDIR #镜像的工作目录 如/bin/bash
VOLUME #挂载的目录
EXPOSE #暴露端口配置
CMD #指定这个容器启动时要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动时要运行的命令,可以追加命令
ONBUILD #当构建一个被继承dockerfile,这个时候就会运行ONBUILD,触发指令
COPY #类似ADD,将我们文件拷贝到镜像中
ENV #构建的时候设置环境变量!
实战测试(centos镜像)
docker hub中99%镜像都是从这个基础镜像过来的FROM scratch,然后配置需要的软件和配置来构建的!
创建一个自己的centos
#编写dockerfile
chen@LAPTOP-IGHM692L:/home/dockerfile$ cat mydockerfile-centos
FROM centos:2.0#自己提交的修改的镜像
MAINTAINER chen<2096814276@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim#centos官方停止维护,需要从另外的地方更新
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash
#通过此文件构建镜像
docker build -f mydockerfile-centos -t mycentos:v1.0 .
#测试运行
docker run -it mycentos:v1.0
pwd
ifconfig
测试运行!
版本对比
我们可以列出本地进行的变更历史
CMD与ENTRYPOINT的区别(略)
CMD #指定这个容器启动时要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动时要运行的命令,可以追加命令
发布自己的镜像
1.在docker hub上注册账号
2.确定账号可以登录
3.在我们的服务器上提交自己的镜像
Usage: docker login [OPTIONS] [SERVER]
Log in to a registry.
If no server is specified, the default is defined by the daemon.
Options:
-p, --password string Password
--password-stdin Take the password from stdin
-u, --username string Username
4.登陆完毕后可push镜像!
chen@LAPTOP-IGHM692L:~$ docker login -u shuanghanwuyu
Password:
WARNING! Your password will be stored unencrypted in /home/chen/.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 tag e10a8e3c3cc4 shuanghanwuyu/mycentos:v1.0
docker push shuanghanwuyu/mycentos:v1.0
push成功后