dockerfile1
dockerfile介绍
dockerfile是用来构建docker镜像的文件!命令参数脚本!
构建步骤:
- 编写一个dokerfile文件
- docker build 构建一个镜像
- docker run 运行镜像
- docker push 发布镜像(dckerhub 、阿里云镜像仓库)

dockerfiel构建过程
基础知识:
- 每个保留关键字(指令)都必须是大写字母
- 执行从上到下顺序执行
- #表示注释
- 每个指令都会创建提交一个新的镜像层,并提交!

dockerfile指令

实战测试

创建一个自己的centos
1.编写dockerfile文件
[root@localhost dockerfile]# cat mydockerfile
FROM centos
MAINTAINER yyds<3069150475@qq.com>
ENV MYPATH /var/local
WORKDIR $MYPATH
RUN rm -rf /etc/yum.repos.d/* && curl -o /etc/yum.repos.d/CentOS-vault-8.5.2111.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash
2.通过这个文件构建镜像
[root@localhost dockerfile]# docker build -f dockerfile -t mycentos .
查看代码
[+] Building 70.2s (6/8) docker:default
[+] Building 70.5s (6/8) docker:default
[+] Building 72.3s (6/8) docker:default
[+] Building 72.6s (6/8) docker:default
[+] Building 117.5s (9/9) FINISHED docker:default
=> [internal] load build definition from dockerfile 0.0s
=> => transferring dockerfile: 449B 0.0s
=> [internal] load metadata for docker.io/library/centos:latest 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [1/5] FROM docker.io/library/centos:latest 0.0s
=> CACHED [2/5] WORKDIR /var/local 0.0s
=> [3/5] RUN rm -rf /etc/yum.repos.d/* && curl -o /etc/yum.repos 15.9s
=> [4/5] RUN yum -y install vim 79.6s
=> [5/5] RUN yum -y install net-tools 21.7s
=> exporting to image 0.3s
=> => exporting layers 0.3s
=> => writing image sha256:c7defb0511c187a891e8b504400827c6a54379 0.0s
=> => naming to docker.io/library/mycentos 0.0s
构建后的镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos latest c7defb0511c1 3 minutes ago 312MB
centos latest 5d0da3dc9764 2 years ago 231MB
cmdtest latest 2b06f9641629 2 years ago 231MB
[root@localhost ~]# docker run -it mycentos
[root@b8511ea46079 local]# ls
[root@b8511ea46079 local]# pwd
/var/local
[root@b8511ea46079 local]# vim a
[1]+ Stopped vim a
[root@b8511ea46079 local]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.3 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:03 txqueuelen 0 (Ethernet)
RX packets 8 bytes 656 (656.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
查看构建过程
[root@localhost dockerfile]# docker history c7defb0511c1
IMAGE CREATED CREATED BY SIZE COMMENT
c7defb0511c1 12 minutes ago CMD ["/bin/sh" "-c" "/bin/bash"] 0B buildkit.dockerfile.v0
<missing> 12 minutes ago CMD ["/bin/sh" "-c" "echo \"----end----\""] 0B buildkit.dockerfile.v0
<missing> 12 minutes ago CMD ["/bin/sh" "-c" "echo $MYPATH"] 0B buildkit.dockerfile.v0
<missing> 12 minutes ago EXPOSE map[80/tcp:{}] 0B buildkit.dockerfile.v0
<missing> 12 minutes ago RUN /bin/sh -c yum -y install net-tools # bu… 14.7MB buildkit.dockerfile.v0
<missing> 12 minutes ago RUN /bin/sh -c yum -y install vim # buildkit 66.3MB buildkit.dockerfile.v0
<missing> 13 minutes ago RUN /bin/sh -c rm -rf /etc/yum.repos.d/* && … 2.5kB buildkit.dockerfile.v0
<missing> 8 hours ago WORKDIR /var/local 0B buildkit.dockerfile.v0
<missing> 8 hours ago ENV MYPATH=/var/local 0B buildkit.dockerfile.v0
<missing> 8 hours ago MAINTAINER yyds<3069150475@qq.com> 0B buildkit.dockerfile.v0
<missing> 2 years ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 2 years ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
<missing> 2 years ago /bin/sh -c #(nop) ADD file:805cb5e15fb6e0bb0… 231MB
dockerfile1的更多相关文章
- LearningDocker--Chapter3--Building images
This chapter is quite different from the earlier ones, and it is in this chapter to clearly describe ...
- 在 docker 容器中捕获信号
我们可能都使用过 docker stop 命令来停止正在运行的容器,有时可能会使用 docker kill 命令强行关闭容器或者把某个信号传递给容器中的进程.这些操作的本质都是通过从主机向容器发送信号 ...
- Docke--Dockerfile实践
Dockerfile 实践 nginx镜像构建 先查看下本地的镜像,选取官网的centos作为base image: [root@server ~]# docker images REPOSITORY ...
- [转]docker之Dockerfile实践
本文转自:https://www.cnblogs.com/jsonhc/p/7767669.html 上一篇介绍了Dockerfile中使用的指令,现在开始进行指令实践 先查看下本地的镜像,选一个作为 ...
- docker之Dockerfile实践
上一篇介绍了Dockerfile中使用的指令,现在开始进行指令实践 先查看下本地的镜像,选一个作为base image: [root@docker ~]# docker images REPOSITO ...
- Docker入门学习总结
1. 什么是Docker Docker是一种虚拟化技术,其在容器的基础上进一步封装了文件系统.网络互联.进程隔离等等,从而极大地简化了容器的创建和维护.Docker使用 Google 公司推出的 Go ...
- Docker-容器数据卷
docker容器数据卷相当于外置的移动硬盘 docker容器数据卷主要功能是:容器的持久化.容器间继承+共享数据 特点: (1)数据卷可以容器之间共享或重用数据 (2)卷中更改可以直接生效 (3)数据 ...
- 【转】docker之Dockerfile实践
转自:https://www.cnblogs.com/jsonhc/p/7767669.html 上一篇介绍了Dockerfile中使用的指令,现在开始进行指令实践 先查看下本地的镜像,选一个作为ba ...
- dockerfile+ubuntu+nginx搭建web环境
准备目录 [root@izchz ~]# mkdir /usr/local/dockerfile1 该目录下准备Dockerfile文件 FROM ubuntu MAINTAINER xbf RUN ...
- Docker service update更新不成功的问题
一.基本信息 1.Docker版本 [root@ip---- ~]# docker --version Docker version , build a872fc2f86 2.系统版本 [root ...
随机推荐
- actions自动化部署gitpage
新增配置文件 .github/workflows/build.yml name: interview-book build work # 工作流name on: # 触发 workflow 的条件 p ...
- 前端开发系列004-基础篇之JavaScript的字符串
本文将重点介绍javaScript语言中字符串,操作字符串的常见方法以及具体的代码实现等. 一.字符串简单介绍 关于字符串(类型),其实在我的另一篇文章中 JavaScript语言基础已经有过下面这段 ...
- Skill Discovery | DoDont:使用 do + don't 示例视频,引导 agent 学习人类期望的 skill
论文标题:Do's and Don'ts: Learning Desirable Skills with Instruction Videos NeurIPS 2024 poster. arxiv:h ...
- 结构化网格 & 非结构化网格
简介 简单的名词释义 参考文献 基于迭代的六面体网格生成算法 结构化网格 又称为栅格,是指区域内所有的网格点都有相同的度.结构化网格的优点有生成速度快,存储结构简单,有许多优化措施,对形状简单的物体, ...
- SciTech-EECS-BigDataAIML-NN(神经网络): 常用的18种Activation(激活函数)
SciTech-EECS-BigDataAIML-NN(神经网络): 常用的18种Activation(激活函数) 简介 为什么要用激活函数 激活函数的分类 常见的几种激活函数 4.0.Softmax ...
- SciTech-Food-pH值 + 食品“酸碱度”: "食用碱"主成分(Na2CO3+NaHCO3) VS "自然碱水"主成分(K2CO3+Na2CO3) + "草木燃灰"制"碱水"
SciTech-Food 注意: 此处的 "酸", 不是"酸味"的"酸",而是pH值(酸碱度) 的"酸(pH值<7)&quo ...
- SciTech-EECS-电路设计- PCB设计-AD软件的“原理图绘制” 与 导出到“PCB编辑器”
原理图的绘制及检查 在绘制原理图前, 必须确认所有 Components(元器件) 的Symbol(原理图符号封装)和 PCB Package(PCB封装)都已可用. 如果AD软件或第三方没提供设计所 ...
- Rust从入门到精通02-安装
1.安装 Rustup 是rust 官方版本管理工具,安装rustup 会自动安装好 rust(还会自动安装Cargo,这是Rust 的构建系统和包管理器,很重要),所以我们只需要安装 rustup ...
- spring 的aop面试题
- 【转】-Java实现生产者和消费者的5种方式
Java实现生产者和消费者的5种方式 该博客转载自掘金的Java实现生产者和消费者的5种方式 1. 前言 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间 ...