什么是Dockerfile
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。(本质:dockerfile能生成镜像)
1、对于开发人员:可以为开发团队提供一个完全一致的开发环境;
2、对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了;
3、对于运维人员:在部署时,可以实现应用的无缝移植。
注意: 文件名字必须叫 Dockerfile
常用命令
命令 | 作用 |
---|---|
FROM image_name:tag | 定义了使用哪个基础镜像启动构建流程 |
MAINTAINER user_name | 声明镜像的创建者 |
ENV key value | 设置环境变量 (可以写多条) |
RUN command | command是linux命令,是Dockerfile的核心部分(可以写多条) |
ADD source_dir/file dest_dir/file | 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 |
COPY source_dir/file dest_dir/file | 和ADD相似,但是如果有压缩文件并不能解压 |
WORKDIR path_dir | 等同于cd命令, 可以用来设置工作目录 |
EXPOSE | 对外开放的端口,后续也可以启动容器时通过 -p 来映射端口 |
VOLUMES | 挂载目录卷,有名挂载与匿名挂载,后续也可启动容器时通过 -v 收到挂载 |
CMD | 指定容器在启动时要运行的命令,只有最后一个会生效,会被顶替 |
ENTRYPOINT | 指定容器在启动时要运行的命令,可以追加命令 |
VOLUMES 挂载目录卷的作用可以实现容器数据共享(同步)
挂载是将容器目录挂载到宿主机上
测试 CMD与 ENTRYPOINT 区别
案例
在python下安装django 1.11.9 和requests模块
(1)创建目录
mkdir –p /usr/local/dockerdjango
(2)创建文件Dockerfile
vim Dockerfile # 官方推荐命名,若按照此命名,在docker build时可不指定-f参数
(3) 在Dockerfile文件中写入一下内容:
FROM python:3.6 MAINTAINER xionger # 指定创建镜像的用户 RUN pip3 install django==1.11.9 RUN pip3 install requests WORKDIR /home
(4)执行命令构建镜像
docker build -f /root/docker/Dockerfile -t xxx/django1.11.9:1.0 .
注意后边的空格和点,不要省略
(5)查看镜像是否建立完成
docker images
(6) docker history 镜像id 查看镜像的构建过程
(7) docker inspect 容器id 查看容器信息
docker inspect --format '{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' 容器ID
docker inspect --format '{{.LogPath}}' 容器ID