自己是参考一些博客和官网自己使用总结,欢迎大佬点评
上传可执行jar到服务器(此处是使用mac终端上传)
put /user/app.jar /usr/local/docker
编写Dockerfile文件,若无vim 自行安装
vim Dockerfile
Dockerfile内容如下
FROM java:8
WORKDIR /app
COPY app.jar /app
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]
说明:
from 指定基本镜像,可以不用下载,在后面build进行创建镜像时会从镜像仓库直接拉取
workdir 是指容器的工作目录 以Dockerfile 文件所在的路径为跟路径,/app路径指的是宿主机的/usr/local/docker/app 目录
copy 将运行文件拷贝到容器目录,或者可以使用add ,自己没用过还不清楚
expose 指容器内部使用的端口,因为我是一个容器只运行一个东西,没有验证过这个
entrypoint 指容器启动时要运行的命令
另外说明:若是 需要配置存储log文件,或者文件存储,需要在运行时指定挂载宿主机的目录,否则容器销毁的时候,里面的东西都将不会存在,下面会说明如何挂载
构建镜像
docker build -t app_img_name .
-t : 指创建镜像都名称,不要忘了后面加一个 “.” 代表当前目录,这个指Dockerfile 文件所在的目录
创建并运行docker容器
docker run -dp 8088:8080 -v /usr/local/docker/log:/log --network app/net --name app app_img_name
说明:
run 运行镜像,创建并启动容器
-dp 组合命令,等于 -d -p ,-d 表示后台运行,-p 指定端口映射,8088为容器占用的宿主机端口,8080为容器内部使用的端口
-v 挂载宿主机目录,/usr/local/docker/log为宿主机目录,/log为容器内部路径,即程序中指定的log路径
--network 指定网路,若是数据库也使用docker运行(此处不讲docker运行数据库),需要指定同一个网络 ,可使用如下命令创建网络
docker network create app/net
--name 指创建容器的名称
app_img_name 为镜像的名称,镜像id也可以
若没有提示错误,则表示运行成功,可以使用如下命令查看
docker ps
docker ps -a
其他的一些常用命令
docker ps 查看容器
docker ps -a
docker images 查看镜像文件
docker image ls
docker inspect 容器id 查看容器信息
docker image history --no-trunc 创建图像中每个图层的命令
docker rm 【容器id/名称】 删除容器
docker rm -f 删除容器
docker rmi 删除镜像
docker logs -f 容器id 查看日志