Docker命令及部署Java项目

文章目录

简介

Docker是一种容器化技术,可以帮助开发者轻松打包应用程序和依赖,并在任何地方运作它们。

Docker镜像、容器、仓库是Docker技术中的三个重要概念。
Docker镜像 是一个只读的模板,可以用来创建Docker容器。镜像可以包含操作系统、应用程序、依赖库、配置文件等。
Docker容器 是Docker镜像的一个运行实例,可以理解为哦一个轻量级的虚拟机。容器包含了运行应用程序所需的所有组件,包括操作系统、应用程序、依赖库等。
Docker仓库 :是用来存储和管理Docker镜像的地方,类似于代码仓库。Docker官方提供了Docker Hub仓库,可以在其中存储和分享Docker镜像。用户也可以自建私有仓库来存储和管理自己的Docker镜像。

通过使用Docker镜像、容器、仓库可以实现应用程序的快速部署、运行和管理,提高了应用程序的可移植性和可伸缩性。

Docker镜像

镜像列表

bash 复制代码
docker images

该命令将列出所有本地镜像的名称、标签、镜像ID、创建时间和大小等信息。例如

查找镜像

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

bash 复制代码
docker search <image-name>

拉取镜像

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

bash 复制代码
docker pull <镜像名称>:<标签>

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

删除镜像

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

bash 复制代码
docker rmi <镜像名称>:<标签>

镜像标签

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

bash 复制代码
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

Docker容器

容器启动

启动容器地命令是

bash 复制代码
docker start [OPTIONS] CONTAINER [CONTAINER...]

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

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

容器查看

查看容器地命令是docker ps

bash 复制代码
docker ps [OPTIONS]

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

-a ,表示查看所有容器,包括已经停止的容器。

-q ,表示只显示容器的 ID。

-n ,表示显示最近创建的 n 个容器。

-s ,表示显示容器所占用的磁盘空间大小。

--format ,表示指定输出格式。

例如,要查看当前正在运行的容器,可以使用以下命令:

bash 复制代码
docker ps

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

bash 复制代码
docker ps -a

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

bash 复制代码
docker ps -q

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

bash 复制代码
docker ps -n 5

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

bash 复制代码
docker ps -s

容器停止和重启

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

bash 复制代码
docker stop [OPTIONS] CONTAINER [CONTAINER...]

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

-t ,表示停止容器的等待时间,单位为秒,默认为 10 秒。

例如,要停止 ID 为 123456 的容器,可以使用以下命令:

bash 复制代码
docker stop 123456

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

bash 复制代码
docker start [OPTIONS] CONTAINER [CONTAINER...]

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

-i ,表示启动容器并进入交互模式。

-a ,表示启动容器并附加到容器的标准输入、输出和错误输出。

-d ,表示以后台模式启动容器。

-p ,表示将容器的端口映射到主机的端口。

-v ,表示将主机的目录或文件挂载到容器中。

例如,要重新启动 ID 为 123456 的容器,可以使用以下命令:

bash 复制代码
docker start 123456

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

bash 复制代码
docker start -i 123456

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

bash 复制代码
docker start -d 123456

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

bash 复制代码
docker start -p 80:80 123456

上述命令将容器的 80 端口映射到主机的 80 端口。

如果想将主机的目录或文件挂载到容器中,可以使用以下命令:

bash 复制代码
docker start -v /host/path:/container/path 123456

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

后台模式和进入

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

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

bash 复制代码
docker run -d myapp

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

bash 复制代码
docker exec -it myapp /bin/bash

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

强制停止容器

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

bash 复制代码
docker stop mycontainer

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

bash 复制代码
docker kill mycontainer

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

清理停止的容器

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

bash 复制代码
docker container prune

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

容器错误日志

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

bash 复制代码
docker logs [容器ID或容器名]

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

bash 复制代码
docker logs --tail [行数] [容器ID或容器名]

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

bash 复制代码
docker logs --tail 10 [容器ID或容器名]

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

容器别名及操作

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

为容器设置别名

bash 复制代码
docker rename [容器ID或容器名] [新别名]

启动容器

bash 复制代码
docker start [容器ID或容器名]

停止容器

bash 复制代码
docker stop [容器ID或容器名]

重启容器

bash 复制代码
docker restart [容器ID或容器名]

进入容器

bash 复制代码
docker exec -it [容器ID或容器名] /bin/bash

查看容器日志

bash 复制代码
docker logs [容器ID或容器名]

删除容器

bash 复制代码
docker rm [容器ID或容器名]

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

Docker部署Java项目

下面我们将介绍如何使用Docker部署java项目。下图展示了制作Docker镜像和运行容器的过程

【step1】创建Dockerfile文件

Dockerfile是用于创建Docker对象的脚本,先创建Dockerfile文件,可以在idea的项目中创建,文件内容模板如下:

bash 复制代码
//基于哪个镜像构建
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镜像,一定要在当前目录中,输入命令:
bash 复制代码
 docker build -t XXX .

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

  • 创建Docker镜像之后会出现加载的进度条
    【step4】运行Docker容器

  • 输入命令再次确认Docker镜像创建成功
  • 输入命令创建Docker容器
bash 复制代码
  docker run -p 8080:8080 my-java-app

其中,-p

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

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

再次确认Docker容器有没有运行。

相关推荐
m0_571957581 小时前
Java | Leetcode Java题解之第543题二叉树的直径
java·leetcode·题解
魔道不误砍柴功3 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
NiNg_1_2343 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
闲晨3 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
_.Switch3 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
2401_850410833 小时前
文件系统和日志管理
linux·运维·服务器
JokerSZ.4 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
芯盾时代4 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
测开小菜鸟5 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
心灵彼岸-诗和远方5 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops