## docker分层
用来构建docker镜像的文件
![](https://img.kancloud.cn/9f/f2/9ff21ef3c9cc0515162243c0609494e2_555x369.png)
## 常用命令
![](https://img.kancloud.cn/c4/23/c423af48b3163ae987f5e1025cee6948_472x247.png)
~~~
CMD 指定容器启动的时候运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT 指定容器启动的时候运行的命令,可以追加命令
ONBUILD 当构建一个被继承Dockerfile,这时候会运行ONBUILD指令,触发指令
COPY 将文件拷贝到镜像中,类似ADD
ENV 设置环境变量
~~~
## 实战测试
DockerHub中大多数镜像都是从这个基础镜像来的,FROM scratch,然后配置需要的软件和配置
示例构建一个centos
~~~
FROM centos
MAINTAINER wzj<wusir666666@163.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash
~~~
列出镜像变更历史(构建步骤):docker history 镜像id
ENTRYPOINT 和 CMD区别
~~~
CMD 指定容器启动的时候运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT 指定容器启动的时候运行的命令,可以追加命令
~~~
测试CMD
~~~
构建镜像:
FROM centos
CMD ["ls", "-a"]
运行后显示
E:\study\docker\dockerfile>docker run centos_test:v1
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
如果此时想要追加一个命令 -l
E:\study\docker\dockerfile>docker run centos_test:v1 -l
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"-l\": executable file not found in $PATH": unknown.
CMD情况下 -l 替换了 ["ls", "-a"],但是-l不是一个有效命令,所以报错
~~~
测试ENTRYPOINT
~~~
构建镜像:
FROM centos
ENTRYPOINT ["ls", "-a"]
运行后显示
E:\study\docker\dockerfile>docker run centos_test:v1
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
如果此时想要追加一个命令 -l
E:\study\docker\dockerfile>docker run centos_test1:v1 -l
total 56
drwxr-xr-x 1 root root 4096 Nov 25 09:23 .
drwxr-xr-x 1 root root 4096 Nov 25 09:23 ..
-rwxr-xr-x 1 root root 0 Nov 25 09:23 .dockerenv
lrwxrwxrwx 1 root root 7 May 11 2019 bin -> usr/bin
drwxr-xr-x 5 root root 340 Nov 25 09:23 dev
drwxr-xr-x 1 root root 4096 Nov 25 09:23 etc
drwxr-xr-x 2 root root 4096 May 11 2019 home
lrwxrwxrwx 1 root root 7 May 11 2019 lib -> usr/lib
lrwxrwxrwx 1 root root 9 May 11 2019 lib64 -> usr/lib64
drwx------ 2 root root 4096 Aug 9 21:40 lost+found
drwxr-xr-x 2 root root 4096 May 11 2019 media
drwxr-xr-x 2 root root 4096 May 11 2019 mnt
drwxr-xr-x 2 root root 4096 May 11 2019 opt
dr-xr-xr-x 124 root root 0 Nov 25 09:23 proc
dr-xr-x--- 2 root root 4096 Aug 9 21:40 root
drwxr-xr-x 11 root root 4096 Aug 9 21:40 run
lrwxrwxrwx 1 root root 8 May 11 2019 sbin -> usr/sbin
drwxr-xr-x 2 root root 4096 May 11 2019 srv
dr-xr-xr-x 13 root root 0 Nov 25 09:23 sys
drwxrwxrwt 7 root root 4096 Aug 9 21:40 tmp
drwxr-xr-x 12 root root 4096 Aug 9 21:40 usr
drwxr-xr-x 20 root root 4096 Aug 9 21:40 var
~~~
- Python学习
- Python基础
- Python初识
- 列表生成式,生成器,可迭代对象,迭代器详解
- Python面向对象
- Python中的单例模式
- Python变量作用域、LEGB、闭包
- Python异常处理
- Python操作正则
- Python中的赋值与深浅拷贝
- Python自定义CLI三方库
- Python并发编程
- Python之进程
- Python之线程
- Python之协程
- Python并发编程与IO模型
- Python网络编程
- Python之socket网络编程
- Django学习
- 反向解析
- Cookie和Session操作
- 文件上传
- 缓存的配置和使用
- 信号
- FBV&&CBV&&中间件
- Django补充
- 用户认证
- 分页
- 自定义搜索组件
- Celery
- 搭建sentry平台监控
- DRF学习
- drf概述
- Flask学习
- 项目拆分
- 三方模块使用
- 爬虫学习
- Http和Https区别
- 请求相关库
- 解析相关库
- 常见面试题
- 面试题
- 面试题解析
- 网络原理
- 计算机网络知识简单介绍
- 详解TCP三次握手、四次挥手及11种状态
- 消息队列和数据库
- 消息队列之RabbitMQ
- 数据库之Redis
- 数据库之初识MySQL
- 数据库之MySQL进阶
- 数据库之MySQL补充
- 数据库之Python操作MySQL
- Kafka常用命令
- Linux学习
- Linux基础命令
- Git
- Git介绍
- Git基本配置及理论
- Git常用命令
- Docker
- Docker基本使用
- Docker常用命令
- Docker容器数据卷
- Dockerfile
- Docker网络原理
- docker-compose
- Docker Swarm
- HTML
- CSS
- JS
- VUE