Docker命令及部署Java项目

news/2024/4/29 0:11:30/文章来源:https://blog.csdn.net/weixin_40618306/article/details/137049019

文章目录

  • 简介
  • Docker镜像
    • 镜像列表
    • 查找镜像
    • 拉取镜像
    • 删除镜像
    • 镜像标签
  • Docker容器
    • 容器启动
    • 容器查看
    • 容器停止和重启
    • 后台模式和进入
    • 强制停止容器
    • 清理停止的容器
    • 容器错误日志
    • 容器别名及操作
  • Docker部署Java项目

简介

Docker是一种容器化技术,可以帮助开发者轻松打包应用程序和依赖,并在任何地方运作它们。
Docker镜像、容器、仓库是Docker技术中的三个重要概念。
Docker镜像是一个只读的模板,可以用来创建Docker容器。镜像可以包含操作系统、应用程序、依赖库、配置文件等。
Docker容器是Docker镜像的一个运行实例,可以理解为哦一个轻量级的虚拟机。容器包含了运行应用程序所需的所有组件,包括操作系统、应用程序、依赖库等。
Docker仓库:是用来存储和管理Docker镜像的地方,类似于代码仓库。Docker官方提供了Docker Hub仓库,可以在其中存储和分享Docker镜像。用户也可以自建私有仓库来存储和管理自己的Docker镜像。
通过使用Docker镜像、容器、仓库可以实现应用程序的快速部署、运行和管理,提高了应用程序的可移植性和可伸缩性。

Docker镜像

镜像列表

docker images

该命令将列出所有本地镜像的名称、标签、镜像ID、创建时间和大小等信息。例如
在这里插入图片描述

查找镜像

要查找Docker hub上的镜像,可以使用以下命令

docker search <image-name>

拉取镜像

拉取Docker镜像可以使用以下命令:

docker pull <镜像名称>:<标签>

其中,<镜像名称>是要拉取的Docker镜像的名称,<标签>是要拉取的Docker镜像的版本号或者标签。

删除镜像

删除Docker镜像可以使用以下命令

docker rmi <镜像名称>:<标签>

镜像标签

使用Docker镜像标签,可以方便地管理和使用不同版本地Docker镜像。

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

Docker容器

容器启动

启动容器地命令是

docker start [OPTIONS] CONTAINER [CONTAINER...]

其中, CONTAINER 表示要启动的容器名称或 ID,可以同时启动多个容器。 OPTIONS 包括以下常用选项:

  • -a ,表示将容器的标准输入、标准输出和标准错误输出连接到当前终端。
  • -i ,表示以交互模式启动容器。
  • -d ,表示以守护进程模式启动容器。
  • –attach ,等同于 -a 选项。
  • –interactive ,等同于 -i 选项。

容器查看

查看容器地命令是docker ps

docker ps [OPTIONS]

其中, OPTIONS 包括以下常用选项:
-a ,表示查看所有容器,包括已经停止的容器。
-q ,表示只显示容器的 ID。
-n ,表示显示最近创建的 n 个容器。
-s ,表示显示容器所占用的磁盘空间大小。
–format ,表示指定输出格式。
例如,要查看当前正在运行的容器,可以使用以下命令:

docker ps

如果要查看所有容器,包括已经停止的容器,可以使用以下命令:

docker ps -a

如果只想显示容器的 ID,可以使用以下命令:

docker ps -q

如果只想显示最近创建的 5 个容器,可以使用以下命令:

docker ps -n 5

如果想显示容器所占用的磁盘空间大小,可以使用以下命令:

docker ps -s

容器停止和重启

要停止容器,可以使用docker stop命令

docker stop [OPTIONS] CONTAINER [CONTAINER...]

其中, OPTIONS 包括以下常用选项:

-t ,表示停止容器的等待时间,单位为秒,默认为 10 秒。
例如,要停止 ID 为 123456 的容器,可以使用以下命令:

docker stop 123456

要重启已经停止的容器,可以使用 docker start 命令。其语法格式如下:

docker start [OPTIONS] CONTAINER [CONTAINER...]

其中, OPTIONS 包括以下常用选项:

-i ,表示启动容器并进入交互模式。
-a ,表示启动容器并附加到容器的标准输入、输出和错误输出。
-d ,表示以后台模式启动容器。
-p ,表示将容器的端口映射到主机的端口。
-v ,表示将主机的目录或文件挂载到容器中。
例如,要重新启动 ID 为 123456 的容器,可以使用以下命令:

docker start 123456

如果想以交互模式启动容器,可以使用以下命令:

docker start -i 123456

如果想以后台模式启动容器,可以使用以下命令:

docker start -d 123456

如果想将容器的端口映射到主机的端口,可以使用以下命令:

docker start -p 80:80 123456

上述命令将容器的 80 端口映射到主机的 80 端口。
如果想将主机的目录或文件挂载到容器中,可以使用以下命令:

docker start -v /host/path:/container/path 123456

上述命令将主机的 /host/path 目录或文件挂载到容器的 /container/path 目录中。

后台模式和进入

后台模式是指在容器中运行应用程序时,不占用当前终端窗口,而是在后台运行。这样可以让终端窗口继续执行其他命令,而不会被占用。

在 Docker 中,要在后台模式下运行容器,可以使用 -d 参数。例如,运行一个名为 myapp 的容器,并在后台模式下运行,可以使用以下命令:

docker run -d myapp

进入容器是指在已经运行的容器中打开一个新的终端窗口,以便在容器中执行命令。在 Docker 中,可以使用 docker exec 命令进入容器。例如,进入名为 myapp 的容器,可以使用以下命令:

docker exec -it myapp /bin/bash

其中, -it 参数表示进入交互模式,并打开一个新的终端窗口。 /bin/bash 表示进入容器后执行的命令,这里是打开一个新的 Bash 终端。在进入容器后,可以在容器中执行各种命令,如查看文件、修改配置文件等。

强制停止容器

可以使用 docker stop 命令来停止容器。例如,停止名为 mycontainer 的容器,可以使用以下命令:

docker stop mycontainer

如果容器无法正常停止,可以使用 docker kill 命令来强制停止容器。例如,强制停止名为 mycontainer 的容器,可以使用以下命令:

docker kill mycontainer

注意,使用 docker kill 命令会直接终止容器进程,可能会导致数据丢失或其他问题,应该尽量避免使用。

清理停止的容器

可以使用 docker container prune 命令来清理停止的容器。这个命令会删除所有已经停止的容器,释放占用的系统资源。例如,可以使用以下命令清理停止的容器:

docker container prune

在执行命令之前,可以使用 docker container ls -a 命令来列出所有容器,确认哪些容器已经停止。执行 docker container prune 命令后,所有已经停止的容器都会被删除,无法恢复,请谨慎使用。

容器错误日志

在 Docker 中,可以通过查看容器的错误日志来定位和解决容器运行中的问题。以下是查看容器错误日志的命令:

docker logs [容器ID或容器名]

该命令会输出容器的标准输出和标准错误信息。如果容器运行中出现了错误,可以通过查看错误日志来定位问题所在。可以使用以下命令来查看容器最近的错误日志:

docker logs --tail [行数] [容器ID或容器名]

其中, --tail 参数用于指定要查看的日志行数。例如,要查看容器最近的 10 行错误日志,可以使用以下命令:

docker logs --tail 10 [容器ID或容器名]

通过查看容器错误日志,可以快速定位和解决容器运行中的问题,提高容器的稳定性和可靠性。

容器别名及操作

在 Docker 中,可以为容器设置别名,方便对容器进行操作。以下是设置容器别名及常用操作的命令:
为容器设置别名

docker rename [容器ID或容器名] [新别名]

启动容器

docker start [容器ID或容器名]

停止容器

docker stop [容器ID或容器名]

重启容器

docker restart [容器ID或容器名]

进入容器

docker exec -it [容器ID或容器名] /bin/bash

查看容器日志

docker logs [容器ID或容器名]

删除容器

docker rm [容器ID或容器名]

通过为容器设置别名,可以方便地对容器进行操作,避免了频繁输入容器ID或容器名的麻烦。

Docker部署Java项目

下面我们将介绍如何使用Docker部署java项目。下图展示了制作Docker镜像和运行容器的过程
在这里插入图片描述
【step1】创建Dockerfile文件
Dockerfile是用于创建Docker对象的脚本,先创建Dockerfile文件,可以在idea的项目中创建,文件内容模板如下:

//基于哪个镜像构建
FROM openjdk:11.0.11-jdk-slim
//设置工作目录
WORKDIR /app
//将java应用程序复制到镜像中
COPY text.jar /app
//定义容器启动时的命令
CMD ["java", "-jar", "text.jar"]

FROM是java对应的jdk版本
WORKDIR指向构建镜像时使用的目录
COPY将jar包复制到容器中对应的文件中,示例代码jar包在当前文件中
CMD运行Docker容器之后执行的命令,这里是运行jar包的命令,此命令关闭服务器连接的时候,项目也会停止。
nohup java -jar XXX.jar & (nohup表示即使当前连接关闭也执行该命令,&表示放到后台运行)

【step2】准备java应用程序。
将项目打包,下面的示例中使用的是SpringBoot项目,在idea中可以使用maven的打包功能。
在这里插入图片描述
在idea的maven工具栏中,点击Lifecycle,点击clean,点击package。项目打包成功之后会放在项目的target文件中。
【step3】构建Docker镜像
把准备好的Dockerfile和jar包发送到服务器中的同一个文件夹中,准备创建Docker镜像。
在这里插入图片描述

  • 创建Docker镜像,一定要在当前目录中,输入命令:
 docker build -t XXX .

XXX表示镜像名称,命令后面有个.

  • 创建Docker镜像之后会出现加载的进度条
    【step4】运行Docker容器
    在这里插入图片描述
    在这里插入图片描述
  • 输入命令再次确认Docker镜像创建成功
  • 输入命令创建Docker容器
  docker run -p 8080:8080 my-java-app

其中,-p
8080:8080指定了将容器的8080端口映射在主机的8080端口,my-java-app是镜像名称,可以根据实际情况进行修改,当你在主机上访问8080端口时,请求将被转发到容器的8080端口,从而访问容器内运行的应用程序。

在这里插入图片描述

  • 将会出现SpringBoot项目启动的那一幕
  • 启动成功后输入命令
  docker ps

在这里插入图片描述
再次确认Docker容器有没有运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1027474.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学透Spring Boot — [二] Spring 和 Spring Boot的比较

欢迎关注我们的专栏 学透 Spring Boot 一、创建一个简单Web应用 本篇文章&#xff0c;我们将会比较 Spring 框架和 Spring Boot 的区别。 什么是 Spring? 也许你在项目中已经可以很熟练的使用 Spring 了&#xff0c;但是当被问到这个问题时&#xff0c;会不会犹豫一下&#…

SQLyog连接MySQL8.0+报错:错误码2058的解决方案

最近把mysql从5.7迁移到8.3.0发现连接不上 因为 MySQL 从 8.0 版本开始&#xff0c;新增了caching_sha2_password授权插件 技术博客 http://idea.coderyj.com/ 1.更换sqlyog 更新到13.1.3之后的版本 2.取消mysql8的加密授权机制 mysql> ALTER USER sqlyog% IDENTIFIED WIT…

Nginx【概述:网页服务器 并发能力强】【常见命令】【部署实战】【反向代理】

Nginx-概述 介绍下载和安装下载安装重点目录和文件如下 Nginx-命令常用命令1). 查看版本2). 检查配置文件3). 启动4). 停止5). 重新加载 环境变量配置 Nginx-应用配置文件结构部署静态资源介绍测试1). 将静态资源上传到 /usr/local/nginx/html 目录2). 启动nginx3). 访问4). 配…

栈和队列——c语言实现栈

本节复习栈和队列中栈的增删查改。 首先回顾一下栈的性质&#xff1a; 栈的存储数据的原则是“后入先出”&#xff0c; 先入的在栈底&#xff1b; 后入的在栈顶。&#xff0c;弹出数据时在栈顶弹出。 目录 准备文件 创建栈的结构体蓝图 栈的初始化 入栈 出栈 获取栈顶元素 获…

MoonBit MeetUp回顾——张正、宗喆:编程语言在云原生与区块链领域的技术探索

宗喆和张正分别给我们带了 KCL 相关的最新进展&#xff0c;由蚂蚁集团开发的 Rust 编写的开源 DSL&#xff0c;目标是优化云原生策略配置和用户体验。它通过引入动态配置管理、配置校验和基础设施抽象等核心概念&#xff0c;解决开发者认知负担、配置膨胀和标准化工具缺乏的问题…

目标检测的相关模型图:YOLO系列和RCNN系列

目标检测的相关模型图&#xff1a;YOLO系列和RCNN系列 前言YOLO系列的图展示YOLOpassthroughYOLO2YOLO3YOLO4YOLO5 RCNN系列的图展示有关目标检测发展的 前言 最近好像大家也都在写毕业论文&#xff0c;前段时间跟朋友聊天&#xff0c;突然想起自己之前写画了一些关于YOLO、Fa…

自己编译SQLite或将SQLite移植到新的操作系统(六)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite中的动态内存分配&#xff08;五&#xff09; 下一篇&#xff1a;SQLite—系列文章目录 1.0 引言 对于大多数应用程序&#xff0c;推荐的构建方法 SQLite是使用合并代码 文件 sqlite3.c 及其相应的头文件 sqlite3.…

C# OpenCvSharp 轮廓检测

目录 效果 代码 下载 效果 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using OpenCvSharp; using OpenCvSharp.…

k8s1.28.8版本配置prometheus监控告警

文章目录 官方架构图组件的具体介绍kube-prometheus包含的组件简介&#xff1a;文件存储路径&#xff1a; 结构分析官网自带的一些规则自己总结流程 1-创建规则磁盘使用率报警规则 详解上面rule流程Alertmanagerg查看 2-报警接收器2.1-邮件报警修改Alertmanager配置查看现有的s…

实战|使用 Node.js 和 htmx 构建全栈应用程序

在本教程中&#xff0c;我将演示如何使用 Node 作为后端和 htmx 作为前端来构建功能齐全的 CRUD 应用程序。这将演示 htmx 如何集成到全栈应用程序中&#xff0c;使您能够评估其有效性并确定它是否是您未来项目的不错选择。 htmx 是一个现代 JavaScript 库&#xff0c;旨在通过…

Haproxy2.8.1+Lua5.1.4部署,haproxy.cfg配置文件详解和演示

目录 一.快速安装lua和haproxy 二.配置haproxy的配置文件 三.配置haproxy的全局日志 四.测试负载均衡、监控和日志效果 五.server常用可选项 1.check 2.weight 3.backup 4.disabled 5.redirect prefix和redir 6.maxconn 六.调度算法 1.静态 2.动态 一.快速安装lu…

【python】网络编程socket TCP UDP

文章目录 socket常用方法TCP客户端服务器UDP客户端服务器网络编程就是实现两台计算机的通信 互联网协议族 即通用标准协议,任何私有网络只要支持这个协议,就可以接入互联网。 socket socke模块的socket()函数 import socketsock = socket.socket(Address Family, type)参…

推动制药行业数字化转型:基于超融合架构的MES一体机解决方案

随着中国对信息化重视程度的不断加深&#xff0c;制药行业作为国民经济的重要支柱之一&#xff0c;也在积极寻求通过数字化手段提升产业效率与产品质量。自党的十六大提出“以信息化带动工业化”的战略以来&#xff0c;制药业的这一转型探索尤为迫切。 在现代制药生产中&#…

scala-idea环境搭建及使用

环境搭建 创建一个新项目&#xff0c;选择maven工程 点击next&#xff0c;写入项目名&#xff0c;然后finish 注意&#xff1a;默认下&#xff0c;maven不支持scala的开发&#xff0c;需要引入scala框架&#xff0c;右键项目点击-》add framework pport....&#xff0c;在下图…

基于java+SpringBoot+Vue的书籍学习平台设计与实现

基于javaSpringBootVue的书籍学习平台设计与实现 开发语言: Java 数据库: MySQL技术: SpringBoot MyBatis工具: IDEA/Eclipse、Navicat、Maven 系统展示 前台展示 后台展示 系统简介 整体功能包含&#xff1a; 书籍学习平台是一个基于Internet的在线学习资源平台&#xf…

Apache Hive的基本使用语法(二)

Hive SQL操作 7、修改表 表重命名 alter table score4 rename to score5;修改表属性值 # 修改内外表属性 ALTER TABLE table_name SET TBLPROPERTIES("EXTERNAL""TRUE"); # 修改表注释 ALTER TABLE table_name SET TBLPROPERTIES (comment new_commen…

音视频开发Day01

备注 ffmpeg 库相关函数记忆 FFmpeg 库简介 FFmpeg一共包含8个库: avcodec:编解码(最重要的库) avformat:封装格式处理。 avfilter:滤镜特效处理 avdevice:各种设备的输入输出。 avutil:工具库(大部分库都需要这个库的支持)。 postproc:后加工。 swresample:音频采样数据格式…

一分钟开服 《幻兽帕鲁》游戏专属服务器by京东云主机

使用京东云服务器搭建幻兽帕鲁Palworld游戏联机服务器教程&#xff0c;非常简单&#xff0c;京东云推出幻兽帕鲁镜像系统&#xff0c;镜像直接选择幻兽帕鲁镜像即可一键自动部署&#xff0c;不需要手动操作&#xff0c;真正的新手0基础部署幻兽帕鲁&#xff0c;阿腾云atengyun.…

OSCP靶场--pyLoader

OSCP靶场–pyLoader 考点(信息收集CVE-2023-0297) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -Pn -sC -sV 192.168.178.26 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-28 09:14 EDT Nmap scan report for 192.168.178.26 Host is up…

基于Python的电商特产数据可视化分析与推荐系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 利用网络爬虫技术从某东采集某城市的特产价格、销量、评论等数据&#xff0c;经过数据清洗后存入数据库&#xff0c;并实现特产销售、市场占有率、价格区间等多维度的可视化统计分析&#xff0c;并…