先来编写一个最简单的 Dockerfile。
FROM nginx
RUN echo '<h1>使用Dockerfile构建镜像</h1>' > /usr/share/nginx/html/index.html
该 Dockerfile 非常简单,其中的 FORM 、 RUN 都是 Dockerfile 的指令。 FROM 指令用于指定基础镜像 RUN 指令用于执行命令 2. 在 Dockerfile 所在路径执行一下命令构建镜像:
docker build -t nginx:my .
其中,命令最后的点(.)用于路径参数传递,表示当前路径。
docker run -d -p 92:80 nginx:my
除了使用Dockerfile构建镜像,也可手工制作 Docker镜像,但这种方式烦琐效率低,一般不适合生产。
在前面的例子中,提到了FORM、RUN指令。事实上, Dockerfile有十多个指令,指令的一般格式为:指令名称参数。
注意: 1、src必须在构建的上下文内,不能使用例如:ADD ../somethine/something这样的命令,因为 docker bui1d命令首先会将上下文路径和其子目录发送到 docker daemon。 2、如果src是一个URL,同时dest不以斜杠结尾,dest将会被视为文件,src对应内容文件将会被下载到 dest。 3、如果src是一个URL,同时dest以斜杠结尾,dest将被视为目录,src对应内容将会被下载到dest目录。 4、如果 src 是一个目录,那么整个目录下的内容将会被复制,包括文件系统元数据。 5、如果文件是可识别的压缩包格式,则 doclcer 会自动解压。 示例: ADD wzq-swagger-mng.jar app.jar
#指定镜像
FROM java:8
#将本地文件夹挂载到当前容器
VOLUME /tmp
#复制文件到容器
ADD wzq-swagger-mng.jar app.jar
RUN bash -c 'touch /app.jar'
#声明需要暴露的端口
EXPOSE 10086
#配置容器启动后需要执行的命令
ENTRYPOINT ["java","-Djava.security.edg=file:/dev/.urandom","-jar","/app.jar"]
docker build -t itouch/wzq-swagger-mng .
4. 启动镜像
docker run -d -p 10086:10086 itouch/wzq-swagger-mng学习于:《Spring Cloud与Docker 微服务架构实战》 — 周立