docker入门——dockerfile
Docker是一种开源的容器技术,可以让开发者和运维人员在一个统一的平台上构建、运行和部署应用程序。Docker的核心概念之一就是dockerfile,它是一个文本文件,包含了一系列的指令,用来定义如何创建和运行一个容器。
dockerfile的基本结构如下:
FROM 基础镜像
RUN 执行命令(构建镜像时执行的命令)
COPY 复制文件
ADD 添加文件(功能和copy类似,不过add添加的文件可以自动解压)
CMD 执行命令(启动容器时执行的命令)
ENTRYPOINT 启动容器时执行的指令,类似与cmd,死命令,容器启动后指令不可变更
EXPOSE 暴露端口
ENV 设置环境变量
WORKDIR 设置工作目录
VOLUME 挂载卷
USER 设置用户
ARG 设置构建参数
前面我们有提到过docker镜像是分层的,每一条指令都会创建一个新的镜像层,并对镜像进行更改。dockerfile中的指令是从上到下依次执行的,所以一般要把不经常变化的指令放在前面,以利用缓存机制提高构建速度。
下面是一个简单的dockerfile示例,用来创建一个运行nginx的容器:
[root@localhost docker]# vim dockerfile
FROM nginx
COPY index.html /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
要使用dockerfile构建镜像,可以使用docker build命令,如下:
[root@localhost docker]# docker build -t my-nginx1 .
其中,-t 参数用来指定镜像的名称和标签,. 表示当前目录,也就是dockerfile所在的目录。构建成功后,可以使用docker run命令运行容器,如下:
[root@localhost docker]# docker run -d -p 8080:80 my-nginx1
其中,-d 参数表示后台运行,-p 参数表示端口映射,将容器的80端口映射到主机的8080端口。这样就可以通过浏览器访问 http://10.0.0.56:8080 (IP地址为宿主机IP)看到nginx的欢迎页面了。因为我们上面修改过nginx首页,所以效果如图
查看镜像构建的过程
[root@localhost docker]# docker history my-nginx
dockerfile是一种非常灵活和强大的工具,可以帮助我们快速地创建和部署各种应用程序。更多关于dockerfile的内容,可以参考官方文档:https://docs.docker.com/engine/reference/builder/