这篇文章的目的是记录一下使用Dockerfile制作镜像的过程。例子我以我自己写的一个web-ssh程序为例。
Step 1 准备
首先是先有一个可执行的jar包,然后再创建一个Dockerfile文件,目录结构为下:
Step 2 编写Dockerfile
在Dockerfile按自己需求编写内容,我的web-ssh程序的Dockerfile文件内容如下:
FROM openjdk:8-jdk
MAINTAINER username: lijunpeng, email: 1635975742@qq.com
RUN mkdir -p /usr/local/web-ssh
COPY ./lib/web-ssh-1.0.5.jar /usr/local/web-ssh
WORKDIR /usr/local/web-ssh
EXPOSE 8080
CMD ["java", "-jar", "web-ssh-1.0.5.jar"]
Dockerfile 常用命令:
FROM: 设置基础镜像
MAINTAINER:设置作者信息
RUN:编辑镜像时运行的shell命令
CMD:设置镜像的启动命令。比如:参考上面的代码,当我们执行docker run -d ssh-web:1.0.5 就等于在镜像内执行了CMD里的命令
LABEL:设置镜像的标签
EXPOESE:设置镜像对外暴露的端口号
ENV:设置容器的环境变量
ADD:编译镜像时复制文件到镜像中,如果复制的是压缩包,这个命令自带解压缩命令
COPY:编译镜像时复制文件到镜像中
ENTRYPOINT:设置容器的入口程序
VOLUME:设置容器的挂载卷目录
WORKDIR:指定容器的一个目录, 容器启动时执行的命令会在该目录下执行
ARG:设置编译镜像时加入的参数
Step 3 执行Dockerfile
进入到含有Dockerfile的目录下,执行下面的命令进行镜像的构建:
# -f 指定Dockerfile文件,可省略,默认寻找当前目录下的Dockerfile文件
# -t 指定镜像名和版本
# . 指定运行时根目录,意思是Dockerfile内的绝对目录都是以这里为基本
docker build -f Dockerfile -t web-ssh:1.0.5 .
命令执行完不报错就说明完成啦。
# 查看构建的镜像
docker images
# 运行镜像
docker run -d -t --name ssh -p 8080:8080 web-ssh:1.0.5
# 查看已运行的容器
docker ps