docker file 笔记
FROM # FROM scratch, FROM centos, FROM ubuntu:latest
LABEL
RUN # 每运行一次RUN,image都会生成新的一层,为了美观,避免无用分层,尽量合并多条命令为一条, 比如 yum install vim && yum install gcc, 反斜线换行,最后清理cache rm -rf /var/lib/apt/lists/*
WORKDIR # 设定当前目录,类似linux cd, 没有目录会自动创建目录, 尽量是用绝对路径,不要使用RUN cd
ADD # 添加文件, 和copy类似,但是add可以解压缩, 大部分情况COPY优于ADD, 添加远程文件,使用curl或者wget
ENV # 设置环境变量, 增加可维护性
VOLUME
EXPOSE # 暴露端口
CMD # 设置容器启动后默认执行的命令; 如果docker run指定了其它命令,CMD命令会被忽略; 如果定义了多个CMD, 只有最后一个会执行
ENTRYPOINT # 容器启动时运行的命令; 容器以应用程序或者服务的形式运行; 不会被忽略,一定会执行; 最佳实践: 写一个shell脚本座位entrypoint, 很多官方的docker都用entrypoint启动服务
RUN 和 CMD有shell格式和Exec格式
shell格式
RUN apt-get install -y vim
CMD echo "hello world"
Exec格式
RUN ["yum", "install", "-y", "vim" ]
CMD ["bin/echo", "hello world"]
Shell格式,所有的命令,在一个shell里面执行,但是Exec格式,只是单纯执行了一个命令,这个命令的环境变量不受上一条命令的影响
ENTRYPOINT和CMD配合,可以在docker run的时候接受参数
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y stress
ENTRYPOINT ["/usr/bin/stress"]
CMD [] # 这里可以接收docker run 传的参数
docker build -t test/command .
docker run test/command --vm 1 --verbose # --vm 1 --verbose即是接收的参数
最新文章
- Node 连接Mysql并进行增删改查
- 当pip install不能正确安装的时候,try easy_install
- Python编写的Linux网络设置脚本,Debian Wheezy上测试通过
- HDU 4831 Scenic Popularity (段树)
- Python资料汇总(建议收藏)
- Android使用HttpClient请求服务器代码优化版
- vue init初始化项目后 npm run dev报错 10% building modules 1/1 modules 0 activeevents.js:182 throw er; // Unhandled 'error' event
- Redis学习笔记(2)——Redis的下载安装部署
- ReactJS之遍历对象的方法
- SkylineGlobe7.0.1版本 主页面如何和Popup里面的嵌入页面相互传值
- 3年java工作经验必备技能
- 爆炸销毁动画组件Explosions
- sql需注意事项
- 利用nodejs安装并运行express的三个坑
- Android数据存储:SQLite
- Keras 实现一个简单GAN
- RFS实例登录126邮箱/利用cookie登陆百度
- 《C++ Primer Plus》读书笔记之六—函数探幽
- python安装mysql
- CentOS查看操作系统信息(重要)
热门文章
- kubeadm 如何将节点加入集群
- bzoj4589-Hard Nim【FWT】
- Jmeter压测学习4--XPath提取器
- 深入浅出WPF-08.Event( 事件)01
- 鲲鹏展翅|SphereEx 获华为鲲鹏技术认证
- web_security学习路线
- CF280C Game on tree(期望dp)
- windows10安装MySQL8.0.27
- 《手把手教你》系列技巧篇(三十三)-java+ selenium自动化测试-单选和多选按钮操作-上篇(详解教程)
- SpringCloud微服务实战——搭建企业级开发框架(二):环境准备