失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > idea手动打包Docker部署linux

idea手动打包Docker部署linux

时间:2022-01-13 13:08:50

相关推荐

idea手动打包Docker部署linux

1.安装Docker

下载docker Desktop for mac或者docker Desktop for windows

官网下载

docker由于历史原因有很多版本,各个版本适应不同环境,最新的是安装版,简单易用,不过对系统有要求

2.编写dockerfile

FROM anapsix/alpine-java:8_server-jre_unlimitedMAINTAINER abcADD ./target/kks-java-0.0.1-SNAPSHOT.jar app.jarRUN 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#重启firewallfirewall-cmd --list-ports#查看已经开放的端口

如果觉得《idea手动打包Docker部署linux》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。