Dockerfile 是一个文本文件,它包含了一系列的指令,用于构建一个 Docker 镜像。下面是 Dockerfile 中常用命令的详细解释和示例。
1. 获取镜像的三种方式
通过命令拉取镜像
bash
docker pull 镜像名称
从镜像仓库拉取指定的镜像。
通过容器创建镜像
bash
docker commit 容器id 镜像名称
从已存在的容器创建一个新的镜像。
通过Dockerfile构建镜像
编写 Dockerfile 文件来自定义和构建镜像。
流程图:获取镜像的三种方式
开始 docker pull 镜像名称 从仓库拉取镜像 开始 docker commit 容器id 镜像名称 从容器创建镜像 开始 编写Dockerfile 构建自定义镜像
2. Dockerfile基础指令
FROM
定义基础镜像信息。
dockerfile
FROM nginx
MAINTAINER
作者维护者信息。
dockerfile
MAINTAINER 作者名 <邮箱>
RUN
运行Linux命令,制作镜像操作指令。
dockerfile
RUN echo '<meta charset=utf8>佳哥带你用docker运行nginx服务' > /usr/share/nginx/html/index.html
ADD
添加文件到容器内,支持自动解压和远程文件下载。
dockerfile
ADD 文件路径 /容器内路径
COPY
复制本地文件到容器内,不自动解压。
dockerfile
COPY 文件路径 /容器内路径
WORKDIR
设置工作目录。
dockerfile
WORKDIR /etc/mysql
USER
切换执行用户。
dockerfile
USER root
USER test
VOLUME
定义挂载卷。
dockerfile
VOLUME /data
EXPOSE
指定对外的端口。
dockerfile
EXPOSE 80
CMD
指定容器启动时要执行的命令。
dockerfile
CMD ["nginx", "-g", "daemon off;"]
ENTRYPOINT
指定容器启动时要执行的程序及参数。
dockerfile
ENTRYPOINT ["nginx", "-g", "daemon off;"]
ENV
设置环境变量。
dockerfile
ENV NAME value
ARG
构建时设置变量。
dockerfile
ARG NAME=value
流程图:Dockerfile基础指令
FROM 定义基础镜像 MAINTAINER 定义维护者信息 RUN 执行命令 ADD 添加文件/目录 COPY 复制文件/目录 WORKDIR 设置工作目录 USER 切换用户 VOLUME 定义挂载卷 EXPOSE 暴露端口 CMD 指定启动命令 ENTRYPOINT 指定启动程序 ENV 设置环境变量 ARG 构建时设置变量
3. Dockerfile构建示例
构建Docker镜像
bash
docker build --no-cache -t 'jiage3122/my_flask_web' .
打标签
bash
docker tag 镜像id 镜像名称
运行容器
bash
docker run -d -p 80:80 my-nginx
流程图:Dockerfile构建示例
编写Dockerfile docker build 构建镜像 docker tag 打标签 docker run 运行容器
内容汇总表格
章节 | 命令 | 说明 |
---|---|---|
获取镜像 | docker pull |
从仓库拉取镜像 |
获取镜像 | docker commit |
从容器创建镜像 |
获取镜像 | 编写Dockerfile | 通过Dockerfile构建镜像 |
基础指令 | FROM |
定义基础镜像 |
基础指令 | MAINTAINER |
定义维护者信息 |
基础指令 | RUN |
执行命令 |
基础指令 | ADD |
添加文件/目录 |
基础指令 | COPY |
复制文件/目录 |
基础指令 | WORKDIR |
设置工作目录 |
基础指令 | USER |
切换用户 |
基础指令 | VOLUME |
定义挂载卷 |
基础指令 | EXPOSE |
暴露端口 |
基础指令 | CMD |
指定启动命令 |
基础指令 | ENTRYPOINT |
指定启动程序 |
基础指令 | ENV |
设置环境变量 |
基础指令 | ARG |
构建时设置变量 |
构建示例 | docker build |
构建Docker镜像 |
构建示例 | docker tag |
打标签 |
构建示例 | docker run |
运行容器 |