116181533927865665
前言
Docker 可以依照 Dockerfile 的内容,自动化地构建镜像。 Dockerfile 是包含着用户想要如何构建镜像的所有命令的文本。(维基百科)
配置文件
- 镜像(Image):将应用程序及其需要的系统函数库、环境、配置、依赖打包而成的
- 基础镜像(BaseImage):应用依赖的系统函数库、环境、配置、文件等
- 入口(Entrypoint):镜像运行入口,一般是程序启动的脚本和参数
- 层(Layer):在基础镜像基础上添加安装包、依赖、配置等时,每次操作都形成一层
配置基础镜像
<system>:操作系统名
<version>:操作系统版本
Dockerfile
配置默认工作目录
<src_image>:镜像内的目录
Dockerfile
配置环境变量
<key>:环境变量键
<value>:环境变量值
Dockerfile
从宿主机复制文件到镜像内
<file_local>:本地文件
<src_image>:镜像内的目录
Dockerfile1
| COPY <file_local> <src_image>
|
从宿主机复制压缩包到镜像内并解压
<file_local>:本地文件
<src_image>:镜像内的目录
Dockerfile1
| ADD <file_local> <src_image>
|
镜像内执行Shell命令
<shell>:Shell命令
Dockerfile
指定对外暴露的端口号
<port>:端口号
Dockerfile
启动容器时执行的主程序
- 在启动容器时指定启动命令时(
docker run 镜像名 命令)不会被覆盖
Dockerfile1
| ENTRYPOINT java -Xmx512m -jar <file>.jar
|
- 在启动容器时指定启动命令时(
docker run 镜像名 命令)会被覆盖
Dockerfile1
| CMD ["java", "-Xmx512m", "-jar", "<file>.jar"]
|
- 组合使用,通过
EXTRYPONIT指定主程序,通过CMD指定参数
Dockerfile1 2
| ENTRYPOINT ["java"] CMD ["-Xmx512m", "-jar", "<file>.jar"]
|
配置文件案例
Java项目Dockerfile案例
java:8-alpine:包含了操作系统和jdk8环境的基础镜像
Dockerfile1 2 3 4 5
| FROM java:8-alpine COPY ./app.jar /app.jar EXPORT 8080 ENTRYPOINT java CMD ["-Xmx512m", "-jar", "app.jar"]
|
通过Dockerfile构建镜像
<image_name>:<tag>:镜像名和标签
<src_dockerfile>:Dockerfile配置文件所在的目录,如果是当前目录就指定为.
1
| docker build -t <image_name>:<tag> <src_dockerfile>
|
Dockerfile传递参数
Dockerfile中定义参数占位符
Dockerfile1 2
| RUN export HTTP_PROXY="${HTTP_PROXY}" RUN export HTTPS_PROXY="${HTTP_PROXY}"
|
通过Dockerfile构建镜像时传递参数
1 2 3
| docker build -t <image_name>:<version> <src_dockerfile> \ --build-arg HTTP_PROXY=http://<ip>:<port> \ --build-arg HTTPS_PROXY=http://<ip>:<port>
|
完成
参考文献
哔哩哔哩——黑马程序员