准备
springboot打包成的.jar
Dockerfile文件
开始
jar和Dockerfile在同一文件夹下
例如cloud-user-manage-8865-1.0-SNAPSHOT.jar和Dockerfile在同一文件夹下
Dockerfile文件内容如下
FROM java:8 MAINTAINER jfj ADD cloud-user-manage-8865-1.0-SNAPSHOT.jar cloud-user-manage-8865-1.0-SNAPSHOT.jar EXPOSE 8865 ENTRYPOINT ["java","-jar","cloud-user-manage-8865-1.0-SNAPSHOT.jar"]
解释:
from java:8 拉取一个jdk为1.8的docker image cloud-user-manage-8865-1.0-SNAPSHOT.jar 就是你上传的jar包,替换为cloud-user-manage-8865-1.0-SNAPSHOT.jar包的名称 cloud-user-manage-8865-1.0-SNAPSHOT.jar 是你将该jar包重新命名为什么名称,在容器中运行 expose 该容器暴露的端口是多少,就是jar在容器中以多少端口运行 entrypoint 容器启动之后执行的命令,java -jar cloud-user-manage-8865-1.0-SNAPSHOT.jar 即启动jar
打包成镜像
docker build -t yc/usermanage .
.表示当前文件夹下的Dockerfile
后台运行容器
docker run --net host -itd --name gateway -p 8801:8801 yc/gateway
docker run --net host -itd --name bankindex -p 8875:8875 yc/bankindex
docker run --net host -itd --name usermanage -p 8865:8865 yc/usermanage
docker run --net host -itd --name bankmanage -p 8870:8870 yc/bankmanage
docker run --net host -itd --name auth -p 8860:8860 yc/auth
报警告!
WARNING: Published ports are discarded when using host network mode
原因:
docker启动时指定--network=host或-net=host,如果还指定了-p或-P,那这个时候就会有此警告,并且通过-p或-P设置的参数将不会起到任何作用,端口号会以主机端口号为主,重复时则递增。
解决:
解决的办法就是使用docker的其他网络模式,例如--network=bridge,这样就可以解决问题,
docker的网络模式:
bridge模式: Docker的默认设置
host模式
none模式
container模式: 使用时要指定容器名
overlay模式
镜像部分
查看镜像
docker images
删除docker镜像
先删除镜像容器
docker rmi 镜像id容器部分
查看所有运行中的容器
docker ps
查看所有的容器
docker ps -a
进入一个容器bash
docker exec -it 容器id /bin/bash
docker打印容器日志后200行
docker logs --tail="200" auth
查看容器分配id
cat /etc/hosts
退出容器
CTRL + p + q
停止容器
docker stop 容器id
删除容器
先停止容器
docker rm 容器id
删除所有未运行的容器
docker rm $(sudo docker ps -a -q)



