编写dockerfile
#以openjdk:8-jre为基础镜像运行JAR包
FROM openjdk:8-jre
#WORKDIR指令用于挂载容器根目录, 容器启动时执行的命令会在该目录下执行,产生的文件与运行路径都以此为根路径。
WORKDIR /opt/docker/images/metabase/
#需要运行的JAR包放到容器根目录
ADD config.jar config.jar
# 运行的其他文件也同样复制转移
#ADD libs /libs
#暴露容器端口为3000 Docker镜像告知Docker宿主机应用监听了3000端口
EXPOSE 3000
#容器启动时执行的命令,
CMD java -jar config.jar
在linux系统中,docker可能是用sudo或管理员安装的,因此如果非root用户,请加上sudo命令前缀,否则会提示无权限
构建镜像
docker build -f DockerFile -t test/config:1.0.0 .
-f 可以指定配置文件路径, docker默认读取本目录的Dockerfile文件,如果不同名,需要指定
查询与运行镜像
使用以下命令查询已构建或导入的镜像
docker images
使用run命令运行已构建的镜像,-p将本机443端口映射到容器的3000端口,运行时,可以访问本机的443端口来访问容器的3000端口
docker run -d -p 443:3000 test/config:1.0.0
每运行一次都会新增一个容器,因此如果一个镜像已经运行了一次,就会创建容器。可以使用以下命令查询所有可运行的容器
docker ps -a # 会打印所有容器,显示CONTAINER ID,即容器ID,是管理容器的标识
-a指定显示所有容器,默认显示正在运行的容器
启动与停止容器
启动容器
docker start containerId
docker start 有两个参数。
-i 以交互模式启动容器,用户可以与容器中的程序进行输入输出交互。
-t 以附加进程启动
查看日志
docker logs containerId
停止容器
docker stop -t=10 containerId
docker stop有一个参数-t,关闭容器的时间限制,默认为10s,超过时间未关闭会使用kill强制结束
docker kill containerId # 强制关闭容器
重启一个容器
docker restart containerId