Docker笔记:关于Dockerfile及构建镜像
- 游戏开发
- 2025-07-21 19:12:16

Dockerfile 的作用 Dockerfile让docker命令变得更简单,是用于构建docker镜像,实现自动化部署 Dockerfile 构建自己的centos镜像 这里有一个应用场景,创建一个自己的centos镜像,这个镜像有我们所需的软件 可以将我们一系列的操作,配置在dockerfile中通过 docker build 就可以生成我们自己的 centos镜像
1 ) 编写 Dockerfile
FROM centos RUN yum install -y net-tools WORKDIR /home/ CMD /bin/bash2 )构建centos镜像
$ docker build -f Dockerfile -t my_centos:v1.0.0 . 这里 -f Dockerfile 指定Dockfile文件这里Dockerfile用的文件名就是Dockerfile可以不加,忽略-t 是打镜像标签注意,最后面的 .3 )运行新打包的镜像
运行:$ docker run -it my_centos 启动后,自动进入 /home/ 目录中,可以使用 pwd 来测试ifconfig 测试可以输出,说明 net-tools 已经正确被安装了这里 run 的时候,后面没有 /bin/bash 但是运行之后直接打开了bash环境了,是Dockerfile中的CMD执行了 Docker 打包 Nginx 镜像 Dockerfile 构建一个 nginx 镜像构建好的镜像内会有一个 /usr/share/nginx/html/index.html文件1 )编写 Dockerfile
新建 Dockerfile_nginx 文件FROM nginx RUN echo 'hello docker' > /usr/share/nginx/html/index.html WORKDIR /usr/share/nginx/html 注意,上面没有 CMD, 如果添加命令,就会替换了 nginx 的默认启动命令$ docker build -f Docker_nginx -t my_nginx:v1.0.0 . 这里是打包$ docker run -itd -p 80:80 my_nginx:v1.0.0 运行新镜像$ curl 127.0.0.1 可看到结果$ docker exec -it 容器id /bin/bash $ pwd 可看到 在 工作目录 /usr/share/nginx/html中 关于 Dockerfile中的一些配置信息 FROM # 基础境像,一切从这里开始构建 MAINTAINER # 镜像是谁写的,姓名+邮箱 LABEL # LABEL 指令用来给镜像添加一些元数据 RUN # 编译镜像时运行的脚本 COPY # 编译镜像时复制文件到镜像中 不会解压 ADD # 编译镜像时复制文件到镜像中 tar.gz 文件会自动解压 WORKDIR # 镜像的工作目录 相当于 cd 的 命令 CMD # 设置容器启动的命令,会被run时指定的命令替换掉, 比如 docker -it nginx /bin/bash 这里的 /bin/bash ENTRYPOINT # 设置容器启动的命令,不会被外部配置替换 EXPOSE # 设置镜像暴露的端口,告诉外面容器暴露的端口 和 -p 不一样 VOLUME # 设置容器挂载的卷,告诉外面容器暴露的数据卷 和 -v 不一样,在容器内使用 df 命令可以看到挂载的卷 ENV # 设置容器的环境变量 和 -e 一样 构建一个复杂版的 centos 镜像1 )编写 Dockerfile_centos 文件
FROM centos MAINTAINER Wang ENV MyLocal /home WORKDIR $MyLocal EXPOSE 80 VOLUME ["volume1", "volume2"] # 这样写在根目录下会产生这两个目录 RUN yum install -y net-tools RUN yum install -y vim ADD test.tar.gz /root COPY test.tar.gz /home CMD /bin/bash2 ) 构建新镜像
$ docker build -f Dockerfile_centos -t my_centos:v2.0.0 .3 )运行镜像
$ docker images 找到刚才打包的新镜像$ docker run -it --name my_centos2 my_centos:v2.0.0的镜像id4 )验证
$ pwd 验证了 workdir 是 /home再验证打包与解压的结果,验证通过/volume1, /volume2 都存在$ printenv 验证环境变量,验证通过其他验证,通过$ docker inspect 镜像id | grep xxx 这里的 xxx 是你想看的任何相关信息这样可以看很多细节可查看 容器中的 /volume1 在物理机上的位置拿到位置后可验证内外数据同步 Dockerfile 中CMD与ENTRYPOINT CMD 可被追加的命令替换ENTRYPOINT 不可被替换,如果有命令,会被追加 如果 ENTRYPOINT 配置的是 [“ls”, “-a”]$ docker run -it 镜像id -l 后面的 -l会追加,类似 ls -a -lDocker笔记:关于Dockerfile及构建镜像由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Docker笔记:关于Dockerfile及构建镜像”