本地JAR打镜像,并启动

本文介绍了使用Docker的相关操作,包括准备jar和Dockerfile文件、打镜像、查看镜像,针对双端口服务给出启动命令,还说明了如何优化服务随Docker开启而启动。此外,详细阐述了启动Redis容器的高级应用,最后提及删除未启动容器的多种方法。

1.准备好jar,和Dockerfile文件。

2.使用命令打镜像

docker build -t wstest .

 3. 查看镜像

4. 由于服务是两个端口。使用以下命令

 

 5.优化怎么随着docker的开启而启动

docker run --restart=always -d -p 8089:8089 -p 8069:8069 wsserver

docker run --restart=always -d -p 8089:8089 -p 8069:8069 --name wstest wsserver

docker run --restart=always -d -p 8089:8089 -p 8069:8069 -v /home/springboot/application.yaml:/etc/conf/application.yaml --name wstest wsserver

docker run --restart=always -d -p 8089:8089 -p 8069:8069 wsserver

docker run --restart=always -d -p 8089:8089 -p 8069:8069 --name wstest wsserver

docker run --restart=always -d -p 8089:8089 -p 8069:8069 -v /home/springboot/application.yaml:/etc/conf/application.yaml --name wstest wsserver

-- 设置挂载,日志,配置文件

docker run --restart=always -d -p 8089:8089 -p 8069:8069 -v /home/springboot/wstest/conf:/etc/conf/ -v /home/springboot/wstest/logs:/build/logs/ --name ws wstest 

执行后,可以看到,

6. 高级应用 启动redis 容器

docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /home/redis/myredis/myredis.conf:/etc/redis/redis.conf -v /home/redis/myredis/data:/data -d redis redis-server /etc/redis/redis.conf  --appendonly yes  --requirepass 000415

--restart=always 总是开机启动
--log是日志方面的
-p 6379:6379 将6379端口挂载出去
--name 给这个容器取一个名字
-v 数据卷挂载
- /home/redis/myredis/myredis.conf:/etc/redis/redis.conf 这里是将 liunx 路径下的myredis.conf 和redis下的redis.conf 挂载在一起。
- /home/redis/myredis/data:/data 这个同上
-d redis 表示后台启动redis
redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的/home/redis/myredis/myredis.conf
–appendonly yes 开启redis 持久化
–requirepass 000415 设置密码 (如果你是通过docker 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置,我被搞过,可以看这篇文章“阿里云服务器中毒‘Kirito666’经历”)
成功界面

成功界面

7.删除未启动的容器

方法一:

1

2

3

4

5

6

7

#显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID,

sudo docker ps -a|grep Exited|awk '{print $1}'

#查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器

sudo docker rm `docker ps -a|grep Exited|awk '{print $1}'`

方法二: 

1

2

#删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)

sudo docker rm $(sudo docker ps -a -q)

方法三:

1

2

3

#根据容器的状态,删除Exited状态的容器

sudo docker rm $(sudo docker ps -qf status=exited)

方法四:

1

2

3

4

#Docker 1.13版本以后,可以使用 docker containers prune 命令,删除孤立的容器。

sudo docker container prune

#删除所有镜像

sudo docker rmi $(docker images -q)

### 创建 Dockerfile 文件 要将 Java 的 JAR 文件打包成 Docker 镜像,需要创建一个 Dockerfile 文件,在其中定义构建镜像的步骤。以下是一个标准的 Dockerfile 示例: ```dockerfile # 使用基础的 Java 镜像作为运行环境 FROM openjdk:17-jdk-slim # 设置工作目录 WORKDIR /app # 将本地JAR 文件复制到镜像中 COPY your-application.jar app.jar # 暴露应用程序使用的端口 EXPOSE 8080 # 定义容器启动时执行的命令 ENTRYPOINT ["java", "-jar", "app.jar"] ``` ### 构建 Docker 镜像 完成 Dockerfile 文件编写后,可以使用 `docker build` 命令来构建镜像。确保 JAR 文件与 Dockerfile 文件位于同一目录下,然后运行以下命令: ```bash docker build -t my-java-app:1.0 . ``` 在此命令中: - `-t` 参数用于指定镜像的标签名称和版本。 - 最后的 `.` 表示当前目录为上下文路径,Docker 会从该路径查找文件。 ### 启动 Docker 容器 构建完成后,可以使用 `docker run` 命令启动容器: ```bash docker run -d --name=my_java_app -p 8080:8080 my-java-app:1.0 ``` 通过此命令,容器会在后台运行,将主机的 8080 端口映射到容器的 8080 端口。用户可以通过访问主机 IP 地址及端口访问应用。 ### 保存和加载镜像 为了便于迁移,可以将镜像保存为 tar 包。使用以下命令进行保存: ```bash docker save -o my-java-app.tar my-java-app:1.0 ``` 在其他服务器上加载镜像: ```bash docker load -i my-java-app.tar ``` 加载完成后,即可通过 `docker images` 查看镜像信息,按照上述方法启动容器[^2]。 ### 相关问题 1. 如何选择适合的基础镜像? 2. ENTRYPOINT 和 CMD 指令有什么区别? 3. COPY 和 ADD 指令之间有什么不同? 4. 如何优化 Dockerfile 提高构建效率?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值