Java最新Docker的基本使用和SpringBoot项目部署,详细到让你分分钟搞定Netty

线程、数据库、算法、JVM、分布式、微服务、框架、Spring相关知识

一线互联网P7面试集锦+各种大厂面试集锦

学习笔记以及面试真题解析

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

1、为什么要使用Docker

============================================================================

开发小明看到测试提交的bug,说:程序在我机器上跑得好好的,怎么到你那就不行了呢?

测试小王看到运维小刘发的问题报告,说:程序在这边测试得好好的,怎么到客户那边就不行了呢?

这其实是软件开发的日常,软件开发的一大麻烦问题就是:环境配置。

一个项目要跑起来,需要大量程序的支持,包括:jdk、tomcat、mysql、redis、nginx等等… 每个程序的环境配置都可能不同,这就很容易导致:在你的机器可以运行,在他的机器上就跑不起来。

那怎么解决这个难题呢?

1.1 容器化


答案就是:容器化

容器化就是把程序包装起来放到容器中,需要的时候再将容器复制出来,这样容器中的程序环境配置就能保持一致,从根本上解决了环境配置不一致的问题。

1.2 虚拟机和容器


想到容器化,有同学可能会想到我们前面使用过的虚拟机,虚拟机克隆后,里面的软件环境配置也是一样的。

虚拟机和容器的架构

在这里插入图片描述

可以看到虚拟机和容器最大的区别是:

虚拟机里面多了一个操作系统,而容器和宿主机共享操作系统,更加轻量级。

容器和虚拟机对比

| 特性 | 容器 | 虚拟机 |

| — | — | — |

| 启动时间 | 秒级 | 分钟级 |

| 硬盘使用 | 一般为MB | 一般为GB |

| 性能 | 接近原生 | 弱于原生 |

| 系统支持量 | 单机支持上千个容器 | 一般是几十个 |

容器在资源占用和性能方面比虚拟机更有优势,而虚拟机在系统功能和安全性方面要强于容器。

2、Docker简介

========================================================================

在这里插入图片描述

2.1 Docker是什么


Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker很像集装箱的运作系统,集装箱就是容器,里面就是我们需要的程序,这些集装箱彼此隔离,需要它们的时候,就从货轮上运过来,由码头工人装配到汽车、火车上,然后发往每个项目所在地。

2.2 Docker的架构


在这里插入图片描述

重要概念:

  • Host 主机(运行Docker的服务器)

  • Daemon 守护进程(在后台执行Docker的操作)

  • Registry 仓库服务注册(远程服务器,保存大量仓库)

  • Repository 仓库(保存镜像文件的位置)

  • Image 镜像(保存进程或软件的文件)

  • Container 容器(镜像运行后的进程)

Docker采用C/S模式(客户端/服务器模式),主要操作有build(构建)、pull(拉取)、run(运行),如用户需要使用mysql,就通过客户端连接主机,主机中的守护进程就会到远程服务注册中拉取mysql,保存到主机中镜像文件中,然后对mysql镜像进行构建,构建完成的镜像就可以创建出mysql容器,运行中的mysql容器就可以为用户提供服务。

3、安装Docker

========================================================================

1、删除旧版本的docker

yum remove docker \

docker-client \

docker-client-latest \

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate \

docker-selinux \

docker-engine-selinux \

docker-engine

2、安装依赖包

yum install -y yum-utils \

device-mapper-persistent-data \

lvm2

3、安装docker

yum install docker

4、启动docker

systemctl enable docker

systemctl start docker

5、查看安装结果

docker version

6、配置镜像

加速镜像下载,创建或修改 /etc/docker/daemon.json 文件,修改为如下形式

{

“registry-mirrors”: [

“https://registry.docker-cn.com”,

“http://hub-mirror.c.163.com”,

“https://docker.mirrors.ustc.edu.cn”

]

}

7、重启

systemctl restart docker

4、Docker的基本使用

===========================================================================

常用Docker命令

docker images 查看镜像

docker search 镜像名称 搜索镜像

docker ps 查看容器

docker stop 容器id 停止容器

docker rm 容器id 删除容器

docker rmi 镜像id 删除镜像

docker run 镜像id 运行镜像

docker pull 镜像名 拉取镜像

docker build 镜像名 . 创建镜像

1) 抓取仓库

docker pull library/hello-world

2) 查看镜像

docker images

4) 运行镜像

docker run hello-world

在这里插入图片描述

5、Docker安装MySQL

=============================================================================

1)安装MySQL

docker pull mysql:5.7

2)运行MySQL镜像

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql镜像ID

-p 后面的端口是本机端口,映射到docker中MySQL的3306端口,后面设置了root密码

-d 是后台运行

3)查看容器ID

docker ps

在这里插入图片描述

4)上传数据库脚本到Linux,然后将脚本复制到docker的root目录中

docker cp bookdb.sql 21db7dd6618e:\root

5)进入docker容器

docker exec -it 21db7dd6618e bash

6)进入MySQL

mysql -uroot -p123456

7)设置编码、创建数据库

set names utf8;

create database bookdb;

use bookdb;

8)导入sql脚本

source /root/bookdb.sql;

9)修改远程访问权限:

select host,user,plugin,authentication_string from mysql.user;

ALTER USER ‘root’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;

flush privileges;

最后

这份《“java高分面试指南”-25分类227页1000+题50w+字解析》同样可分享给有需要的朋友,感兴趣的伙伴们可挑战一下自我,在不看答案解析的情况,测试测试自己的解题水平,这样也能达到事半功倍的效果!(好东西要大家一起看才香)

image

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

ALTER USER ‘root’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;

flush privileges;

最后

这份《“java高分面试指南”-25分类227页1000+题50w+字解析》同样可分享给有需要的朋友,感兴趣的伙伴们可挑战一下自我,在不看答案解析的情况,测试测试自己的解题水平,这样也能达到事半功倍的效果!(好东西要大家一起看才香)

[外链图片转存中…(img-EHj6OemI-1715367751330)]

[外链图片转存中…(img-2689zUtO-1715367751331)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用 Jenkins 和 Docker 进行 CentOS 部署 Spring Boot 项目的详细步骤和命令: 1. 在 CentOS 中安装 DockerDocker Compose ```bash # 安装 Docker sudo yum update sudo yum install docker # 安装 Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` 2. 在 CentOS 中拉取 Docker 镜像 ```bash # 从 Docker 仓库中拉取镜像 sudo docker pull your-docker-registry/image-name:tag ``` 3. 在 CentOS 中运行 Spring Boot 镜像 ```bash # 运行 Spring Boot 镜像 sudo docker run -d -p 8080:8080 your-docker-registry/image-name:tag # 如果你的 Spring Boot 应用需要使用数据库,你需要为其配置一个数据库服务。你可以使用 Docker Compose 来管理容器编排。 # 在服务器上创建一个文件夹来存储 Docker Compose 配置文件 mkdir ~/docker-compose # 在该文件夹中创建一个 docker-compose.yml 文件 nano ~/docker-compose/docker-compose.yml # 编辑该文件并添加以下内容: version: "3" services: app: image: your-docker-registry/image-name:tag ports: - "8080:8080" db: image: postgres environment: POSTGRES_USER: your-db-user POSTGRES_PASSWORD: your-db-password POSTGRES_DB: your-db-name # 启动 Docker Compose cd ~/docker-compose sudo docker-compose up -d # 如果你需要停止 Docker Compose sudo docker-compose down ``` 4. 在 Jenkins 中配置 Maven 插件和 Docker 插件 - 在 Jenkins 中安装 Maven 插件和 Docker 插件。 - 在 Jenkins 中配置 Docker 插件,确保 Jenkins 可以与 Docker 交互。 5. 在 Jenkins 中创建一个新的构建项目 - 在 Jenkins 中创建一个新的 Maven 项目,并配置 Git 代码库以获取源代码。 - 在构建项目中配置 Maven 构建步骤,构建出可执行的 Spring Boot jar 包。 - 在构建项目中添加一个后置操作步骤,使用 Docker 插件进行 Docker 镜像的构建。你需要为 Docker 镜像指定一个名称和标签,并指定构建上下文。 - 在构建项目中添加另一个后置操作步骤,使用 Docker 插件将构建好的镜像推送到 Docker 仓库中。 6. 在目标服务器上使用 Docker 运行 Spring Boot 镜像 - 在目标服务器上拉取构建好的 Spring Boot 镜像。 - 在目标服务器上使用 Docker 运行 Spring Boot 镜像,你可以使用 Docker Compose 或 Docker Stack 进行容器编排和管理。 以上是使用 Jenkins 和 Docker 进行 CentOS 部署 Spring Boot 项目的详细步骤和命令,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值