docker部署springboot项目及docker配置和常用命令
docker配置:
安装完docker之后修改配置文件/etc/docker/daemon.json来使用加速器,daemon.json添加配置如下:
{
"registry-mirrors":["https://82m9ar63.mirror.aliyuncs.com"]
}
- 编写Dockerfile文件并配置相关内容,将jar包与Dockerfile文件放置同一目录下。
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER fengjie
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
VOLUME /sys_logs
# 将jar包添加到容器中并更名为xxx.jar
ADD demo-0.0.1-SNAPSHOT.jar xxx.jar
# 运行jar包
RUN bash -c 'touch /xxx.jar'
#相当于java -jar命令,还可以增加其他的启动参数如:"-Dfile.encoding=utf-8"等
ENTRYPOINT ["java","-jar","/xxx.jar"]
- maven打好jar包并上传到服务器,使用docker build命令制作镜像(注意末尾的点!)
执行 docker build -t trace_system .
-t 参数是指定此镜像的tag名
-
制作完成后使用
docker images
命令查看制作的镜像
-
启动容器
docker run -d -p 8088:8081 trace_system
#-d参数是让容器后台运行
#-p 是做端口映射,此时将服务器中的8088端口映射到容器中的8081(项目中端口配置的是8081)端口
更多情况是需要将java项目的日志输出到宿主机上方便后续排查问题,可使用 -v将项目日志目录挂载到宿主机上的指定目录
-
首先在宿主机上创建容器需要挂载映射的目录,注意权限最好是可读可写可执行
-
启动容器
docker run -d -p 8088:8088 --name mycontainer -v /home/sys_logs:/sys_logs myimages
# --name mycontainer 是指定容器名称为mycontainer
# -v 代表将宿主机上的文件目录 "/home/sys_logs"与容器内目录"sys_logs"挂载映射
# myimages 是自己的镜像名称
# -d 后台运行
# -p 端口映射
如上启动之后项目的日志信息就会输出到宿主机的对应目录下。也可以使用docker inspect 容器ID
命令查看挂载情况。
也可以像上面一样使用-v同时挂载jar包路到宿主机上,这样一来后续更新项目只需要替换更新宿主机上指定位置的jar包即可。
docker run -d -p 8080:8080 --name mycontainer -v /home/sys_logs:/sys_logs -v /home/xxx_app.jar:/xxx_app.jar myimage
注意:
如果服务器的MySQL、Redis等不是docker进行安装的,使用宿主机上的数据库需要修改项目连接地址为docker的地址。
- 先查看docker的地址
ifconfig
- 找到redis的配置文件redis.conf,找到bind 127.0.0.1这一行,添加刚才的地址,重载配置后即可连接成功。
bind 127.0.0.1 172.17.0.1
- 相关常用命令
docker info #显示docker的系统信息,包括镜像和容器的数量
docker version #显示docker的版本信息。
#镜像命令
docker images #查看所有本地主机上的镜像 可以使用docker image ls代替
docker search #搜索镜像
docker pull #下载镜像 docker image pull
docker rmi #删除镜像 docker image rm
#容器命令
docker run 镜像id #新建容器并启动
docker ps 列出所有运行的容器 docker container list
docker rm 容器id #删除指定容器
#删除所有容器
docker rm -f $(docker ps -aq) #删除所有的容器
docker ps -a -q|xargs docker rm #删除所有的容器
#启动和停止容器
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
#退出容器
exit #容器直接退出
ctrl +P +Q #容器不停止退出 ---注意:这个很有用的操作
#其他常用命令
docker run -d 镜像名 #后台启动命令
docker logs #查看日志
docker top 容器id #查看容器中进程信息ps
docker inspect 容器id #查看镜像的元数据
docker exec #进入当前容器后开启一个新的终端,可以在里面操作。(常用)
docker attach # 进入容器正在执行的终端
docker cp 容器id:容器内路径 主机目的路径 #从容器内拷贝到主机上