Docker Hub 中99%的镜像都是从这个基础镜像过来的 FROM scratch
dockerfile 命令
都是大写的
FROM # 基于镜像,或继承那个镜像MAINTAINER # 作者及邮箱 例:wpx<54544645@qq.com>RUN # 容器构建时需要执行的命令 列:yum -y install vimEXPOSE # 当前容器对外暴露的端口WORKDIR # 指定才创建容器后 终端登录进来的工作目录ENV # 用来在构建过程中设置环境变量(ENV 变量名 值)ADD # 讲宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和tar压缩包COPY # 复制文件或目录到镜像中,COPY src dest,COPY["src","dest"]VOLUME # 建立容器数据卷,用于数据的保存和持久化工作CMD # 指定容器启动后 要执行的命令,可以又多个但只有最后一个有效,CMD会被docker run 后面的参数替换ENTRYPOINT # 指定容器启动后 要执行的命令,和CMD一样,但其命令会在docker run 都追加ONBUILD # 当构建一个被继承的dockerFile是运行命令,父镜像在被子镜像继承后父镜像的onbuild被触发
CMD和ENTRYPOINT的区别
CMD 只执行一个命令, run的时候带进去的 命令 会替换镜像中最后一个CMD的命令ENTRYPOINT 是追加命令
例子:myCentos
创建一个文件 mydockerfile.df
FROM centos #在centos镜像的基础上构建MAINTAINER wpx<54544645@qq.com> #作者信息ENV MYPATH /usr/local #定义一个变量WORKDIR $MYPATHRUN yum -y install vim #安装vimRUN yum -y install net-tools #安装网络工具 ifconfigEXPOSE 80 #开放映射80端口CMD echo $MYPATHCMD echo "----bilud ok----"CMD /bin/bash
编译文件
#编译构建[root@localhost dockerfile]# docker build -f mydockerfile.df -t mycentos:1.0 . #后面有个点#构建生产在本地镜像库中[root@localhost dockerfile]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmycentos 1.0 aa7f62477005 59 seconds ago 326MBtomcat002 1.0 70eda2cf84f6 35 hours ago 685MB#运行它,vim、ifconfig 命令都有了[root@localhost dockerfile]# docker run -it mycentos:1.0
一个镜像的变更历史
[root@localhost dockerfile]# docker history nginxIMAGE CREATED CREATED BY SIZE COMMENT605c77e624dd 3 weeks ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon… 0B<missing> 3 weeks ago /bin/sh -c #(nop) STOPSIGNAL SIGQUIT 0B<missing> 3 weeks ago /bin/sh -c #(nop) EXPOSE 80 0B<missing> 3 weeks ago /bin/sh -c #(nop) ENTRYPOINT ["/docker-entr… 0B<missing> 3 weeks ago /bin/sh -c #(nop) COPY file:09a214a3e07c919a… 4.61kB<missing> 3 weeks ago /bin/sh -c #(nop) COPY file:0fd5fca330dcd6a7… 1.04kB<missing> 3 weeks ago /bin/sh -c #(nop) COPY file:0b866ff3fc1ef5b0… 1.96kB<missing> 3 weeks ago /bin/sh -c #(nop) COPY file:65504f71f5855ca0… 1.2kB<missing> 3 weeks ago /bin/sh -c set -x && addgroup --system -… 61.1MB<missing> 3 weeks ago /bin/sh -c #(nop) ENV PKG_RELEASE=1~bullseye 0B<missing> 3 weeks ago /bin/sh -c #(nop) ENV NJS_VERSION=0.7.1 0B<missing> 3 weeks ago /bin/sh -c #(nop) ENV NGINX_VERSION=1.21.5 0B<missing> 4 weeks ago /bin/sh -c #(nop) LABEL maintainer=NGINX Do… 0B<missing> 4 weeks ago /bin/sh -c #(nop) CMD ["bash"] 0B<missing> 4 weeks ago /bin/sh -c #(nop) ADD file:09675d11695f65c55… 80.4MB
发布到阿里云
推送镜像到registry
# 登录阿里云 仓库[root@localhost dockerfile]# docker login --username=tb30267377 registry.cn-hangzhou.aliyuncs.comPassword:WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded #登录成功#改一下镜像名及版本,本地会保留原来的,所有版本仓库会多一个,可不做这一步$ docker tag aa7f62477005 registry.cn-hangzhou.aliyuncs.com/wpx123/my_images:1.1#push上去$ docker push registry.cn-hangzhou.aliyuncs.com/wpx123/my_images:1.1[root@localhost dockerfile]# docker push registry.cn-hangzhou.aliyuncs.com/wpx123/my_images:1.1The push refers to repository [registry.cn-hangzhou.aliyuncs.com/wpx123/my_images]6ef115d68095: Pushed2896c0715a13: Pushed74ddd0ec08fa: Pushed1.1: digest: sha256:0627e31ba66744a4d95c6fba65c4654062c2ef76e6b922699f45575138ee4fea size: 953#pull拉下来$ docker pull registry.cn-hangzhou.aliyuncs.com/wpx123/my_images:1.1#退出登录[root@localhost dockerfile]# docker logoutRemoving login credentials for https://index.docker.io/v1/
