一.概念讲解
- (一)dockerfile 最佳实践
- (二)dckerfile常用指令
1.FROM:指定base镜像,如果本地不存在会从远程仓库下载。
2.MAINTAINER:设置镜像的作者,比如用户邮箱等。
3.COPY:把文件从build context复制到镜像,支持两种形式:COPY src dest 和 COPY [“src”, “dest”],src必须指定build context中的文件或目录
4.ADD:用法与COPY类似,不同的是src可以是归档压缩文件,文件会被自动解压到dest,也可以自动下载URL并拷贝到镜像:ADD html.tar /var/www ADD http://ip/html.tar /var/www
5.ENV:设置环境变量,变量可以被后续的指令使用:ENV HOSTNAME sevrer1.example.com
实验开始:
6.EXPOSE:如果容器中运行应用服务,可以把服务端口暴露出去:,EXPOSE 80
7.VOLUME:申明数据卷,通常指定的是应用的数据挂在点:VOLUME ["/var/www/html"]
8.WORKDIR:为RUN、CMD、ENTRYPOINT、ADD和COPY指令设置镜像中的当前工作目录,如果目录不存在会自动创建。
9.RUN:在容器中运行命令并创建新的镜像层,常用于安装软件包:RUN yum install -y vim
10.CMD 与 ENTRYPOINT:这两个指令都是用于设置容器启动后执行的命令,但CMD会被docker run后面的命令行覆盖,而ENTRYPOINT不会被忽略,一定会被执行。docker run后面的参数可以传递给ENTRYPOINT指令当作参数。Dockerfile中只能指定一个ENTRYPOINT,如果指定了很多,只有最后一个有效。
二.Dockerfile常用指令的相关实验
(一)指令(run,copy,cmd的使用)
1.进入/tmp下删除所有内容并创建一个目录,在此目录下建立一个文件(此文件用于)
[root@server1 ~]# cd /tmp
[root@server1 tmp]# rm -rf *
[root@server1 tmp]# mkdir docker/
[root@server1 tmp]# cd docker/
[root@server1 docker]# vim Dockerfile
[root@server1 docker]# cat Dockerfile
文件中的内容如下:
FROM rhel7
2.删除掉没有用的读写层
#查看docker的镜像
[root@server1 docker]# docker images
#删除docker的v1镜像
[root@server1 docker]# docker rmi ubuntu:v1
#删除docker的v2镜像,发现会报错,因为之前没有关闭容器
[root@server1 docker]# docker rmi ubuntu:v2
#查看容器的进程
[root@server1 docker]# docker ps -a
#首先删除容器,必须先关闭容器,因为之前没有关闭容器(即没有使用ctrl+d或exit,而是使用了ctrl+q+p)
[root@server1 docker]# docker stop vm2
[root@server1 docker]# docker rm vm2
[root@server1 docker]# docker rmi ubuntu:v2
3.检查是否将没有用的内容全部删除
[root@server1 docker]# docker images
[root@server1 docker]# docker ps -a
4.将rhel7镜像导入并查看镜像以及分层结构
[root@server1 docker]# cd
[root@server1 ~]# docker load -i rhel7.tar
[root@server1 ~]# docker images
[root@server1 ~]# docker history rhel7:latest
5.创建r