idea手动打包Docker部署linux

1.安装Docker

下载docker Desktop for mac或者docker Desktop for windows
官网下载
docker由于历史原因有很多版本,各个版本适应不同环境,最新的是安装版,简单易用,不过对系统有要求

2.编写dockerfile

FROM anapsix/alpine-java:8_server-jre_unlimited
MAINTAINER abc
ADD ./target/kks-java-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Dspring.profiles.active=online","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

dockerfile没有后缀名 放在pom文件同级
在这里插入图片描述

FROM anapsix/alpine-java:8_server-jre_unlimited:指定基础镜像,alpine是精简版linux镜像,打包后体积会小很多,推荐
MAINTAINER abc: 维护者信息
ADD kks-java-0.0.1-SNAPSHOT.jar app.jar:将本地文件添加到容器中,本地kks-java-0.0.1-SNAPSHOT.jar放到app.jar中
RUN bash -c ‘touch /app.jar’:构建镜像时执行的命令,修改这个文件的访问时间和修改时间为当前时间
ENTRYPOINT [“java”,"-Dspring.profiles.active=online","-- Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]:配置容器,使其可执行化,ENTRYPOINT可以执行一些额外配置
参考dockerfile详解

3.打包镜像

这里要根据dockerfile放置你的jar包
在这里插入图片描述
打包语句

docker build -t kks-java:latest .

-t − 给镜像加一个Tag
kks-java − 给镜像起的名称
latest − 给镜像的Tag名,不写自动添加latest
. -Dockerfile所在目录必填
打开docker desktop软件,发现镜像已打包上去
在这里插入图片描述
测试镜像启动语句

docker run -d -p 9101:9101 --name kks-java  kks-java:latest

-d - 后台运行容器,并返回容器ID
-p - 指定端口映射,格式为:主机(宿主)端口:容器端口
–name kks-java kks-java:latest - kks-java为运行容器名称,kks-java:latest为images镜像名:版本号tag

在这里插入图片描述
镜像打包成tar文件 不打包无法找到镜像

docker save kks-java >kks-java.tar

在这里插入图片描述

4.部署linux

放置到服务器指定位置 rz 或者手托。

cd找到文件位置还原成镜像

cat kks-java.tar | docker load

在这里插入图片描述
运行容器

docker run -d -p 9101:9101 --name mms-kks  kks-java:latest

记住 -name 后面的是容器名重复是无法启动的
在这里插入图片描述
可能出现的报错
1.容器名已存
The image kksdocker:latest already exists, renaming the old one with ID sha256:05bc842111691c44f215a86b23310fbe74d6cd602ef9db922e4ec5899c13046d to empty string
Loaded image: kksdocker:latest
解决 删除容器就好或换名字 命令下面
2.docker 连接被删除
fa5b60865fd10cd052a18e48be12fde8d9342ba9de5ea35df3a3d87d88076502
docker: Error response from daemon: driver failed programming external connectivity on endpoint kksdocker (96cf2d0a709196604e0a66c0950fae07d7fef63425d5da889d1822f117b0401d): (iptables failed: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 172.18.0.3 --dport 80 -j ACCEPT: iptables: No chain/target/match by that name.
(exit status 1)).
解决重启docker

systemctl restart docker

需要替换记得删除容器 : 原有镜像被相同镜像覆盖后的废弃镜像

docker ps #查看运行容器
docker ps -a #查看容器
docker images #查看镜像
docker rmi <IMAGE  ID/REPOSITORY>  #删除镜像
docker stop <CONTAINER ID/NAMES>  #停止运行容器 id 和name都可以
docker start <CONTAINER ID/NAMES>  #启动容器 id 和name都可以
docker rm<CONTAINER ID/NAMES>  #删除容器 记住删除的是停止的 id 和name都可以

部署前端静态页面

 docker exec -it <CONTAINER ID/NAMES>  /bin/sh #进入容器
 chmod 777 -R htdocs/ #赋予htdocs文件夹权限 具体看你静态页面位置这是默认的

如果开了防护墙的一定记住放行端口
防火墙放行9101

firewall-cmd --zone=public --add-port=9101/tcp --permanent 
firewall-cmd --reload		#重启firewall
firewall-cmd --list-ports	#查看已经开放的端口
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值