chapter6:SpringBoot与Docker

news2025/1/8 5:19:16

1. 简介

Docker是一个开源的轻量级应用容器引擎, 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到Linux机器中实现虚拟化。(沙箱机制)

Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。运行中的这个镜像称为“容器”,容器启动非常快速。

类似windows系统里面的ghost镜像操作系统,安装好后什么都有了。

windows镜像系统原理图:
在这里插入图片描述

Docker镜像系统原理图:
在这里插入图片描述

2. 核心概念

docker主机(Host): 安装了Docker程序的机器(Docker直接安装在操作系统上)

docker客户端(Client):连接docker主机进行命令或其他操作。

docker api: https://docs.docker.com/engine/api/

docker仓库(Registry):保存各种打包好的软件镜像。

Docker Hub(https://hub.docker.com) 提供了丰富的镜像集合给我们使用。

docker镜像(Images):软件打包好的镜像,放在docker仓库中。

docker容器(Container):镜像启动后的实例(软件应用)称为一个容器。
在这里插入图片描述
使用Docker的步骤:
1)安装Docker
2)去Docker仓库查找软件镜像
3)使用Docker运行软件镜像,这个镜像会产生一个Docker容器。
4)对容器的启动停止就是对软件的启动停止。

3. docker安装

1)安装linux虚拟机

VMWare安装CentOs7系统及使用

VMWare、VirtualBox安装;
导入虚拟机文件 CentOS-7.ova;
双击启动Linux虚拟机;
使用客户端连接Linux服务器;(secureCRT、Xshell、smarTTY、mobaXterm…)
设置虚拟机网络,桥接网络=》选好网卡=》接入网线;
设置好网络后使用命令重启虚拟机的网络 service network restart;
查看Linux的IP地址 ifconfig;ip addr;

2)在linux虚拟机上安装Docker

查看centos版本, docker要求centos系统的内核版本高于3.10

uname -r
#输出结果 3.10.0-1127.el7.x86_64

升级软件包及内核(选做)

yum update

安装docker, 启动docker

# 安装docker
yum install docker
# 启动docker
systemctl start docker
# 查看docker版本
docker -v
# 将docker服务设为开启启动
systemctl enable docker
# 停止docker
systemctl stop docker

4. docker操作

搜索软件镜像 ➡ 下载软件镜像 ➡ 运行软件镜像(产生一个运行的容器);

操作命令说明
检索镜像docker search keywordsdocker search mysql ;去docker hub上检索镜像的详细信息;
拉取镜像docker pull 镜像名:tag:tag是可选项,表示标签,多为软件的版本,默认是latest;
查看本地镜像列表docker images
删除镜像docker rmi image-id删除指定的本地镜像
运行镜像docker run --name container-name -d image-name–name: 自定义容器名称;
-d: 后台运行;
image-name: 指定镜像模板
比如:docker run --name mysql -d mysql
查看运行的镜像列表docker ps加上参数-a可以查看所有容器
停止docker stop container-name/id停止当前运行的容器,可以根据指定容器名称或容器ID停止;
启动docker start container-name/id启动容器;
删除docker rm container-name/id删除指定容器;
端口映射-p 6379:6379-p:主机端口映射到容器内部的端口;
比如:docker run --name myredis -p 6379:6379 -d docker.io/redis
容器日志docker logs container-name/id

更多操作命令查看 : https://docs.docker.com/engine/reference/commandline/docker/

5. 安装mysql镜像

查找mysql镜像, 同docker hub官网搜索一样

docker search mysql

在这里插入图片描述

下载mysql镜像 , tag指定版本, 默认latest

docker pull mysql:latest

查看所有镜像

docker images

在这里插入图片描述

启动mysql容器 docker run --name mysql01 -d mysql:latest发现没有成功启动,这种启动方式不对。
在这里插入图片描述
查看mysql容器启动的错误日志 docker logs **e5e1e3f963085fa113330af344需要配置密码参数。
在这里插入图片描述
查看docker官方文档有正确的启动方式
在这里插入图片描述

删除错误的mysql容器,重启启动一个新的mysql容器.

# 删除mysql01
docker rm 04675268478f5e110e01d6ad7eaf1403893d74e5e1e3f963085fa113330af344
# 启动mysql
docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
# 查看本地的容器
docker ps -a

在这里插入图片描述
用mysql客户端连接docker启动的mysql容器, 因为我的虚拟机系统之前安装过mysql,我先关闭原生mysql的服务。
在这里插入图片描述
使用mysql客户端连接失败,因为没有建立主机3306到docker的mysql容器3306端口的映射关系。
在这里插入图片描述
删除mysql01,重新启动一个建立端口映射关系的mysql容器后,连接成功。

docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 mysql:latest

在这里插入图片描述

使用客户端连接成功。
在这里插入图片描述
可以使用下面的命令进入容器内部

docker exec -it mysql01 /bin/bash

6. 安装tomcat镜像

搜索tomcat镜像

docker search tomcat

拉取tomcat镜像

docker pull tomcat
docker images

根据tomcat镜像启动容器

docker run --name tomcat01 -d tomcat:latest
docker ps -a
docker stop tomcat01
docker start tomcat01
docker stop tomcat01
# 必须是已经停止运行的容器才允许删除
docker rm tomcat01
# 将主机8888端口映射到容器的8080端口
docker run --name tomcat01 -d -p 8888:8080 tomcat:latest

在虚拟机外面主机浏览器访问 http://192.168.1.103:8888/ , 发现访问tomcat容器报错:
在这里插入图片描述
解决方案:

https://blog.csdn.net/qq_45589050/article/details/104559125

解决步骤:

进入tomcat容器的目录

docker exec -it tomcat01 /bin/bash

在这里插入图片描述

进入tomcat/webapps目录, 清除webapps目录下的所有内容.
在这里插入图片描述
将webapps.dist里面的内容复制到webapps目录下面
在这里插入图片描述
再次访问tomcat,成功。
在这里插入图片描述

一个镜像可以启动多个容器

docker run --name tomcat02 -d -p 8889:8080 tomcat:latest

在这里插入图片描述
在这里插入图片描述

# 查看防火墙状态 s
ervice firewalld status
# 关闭防火墙  
service firewalld stop
# 查看容器日志 
docker logs container-name/container-id

# 关闭防火墙
systemctl stop firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service
# 启动docker
systemctl start docker
# 重启docker
systemctl restart docker

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《数据库系统概论》期末考试手写笔记汇总+考试注意事项+反思(超全整理总结!!!)

(一)期末考试手写笔记汇总 笔记内容为期末考试前整理(结合测试题PPT作业题目课本) 很多内容为纯手写,非常的全乎,预祝你期末可以考个好成绩🌹 第二章第三章(25分) (…

JS 深度克隆的实现方法

方法一:正统做法(扩展性高,推荐) function test() { this.a 1; this.b 2; } test.prototype.c 3; // 原型上的属性 const obj new test(); console.log("原对象", obj); console.log("克隆后的对象", dee…

Flume系列:案例-Flume负载均衡和故障转移

目录 Apache Hadoop生态-目录汇总-持续更新 逻辑: 2:案例需求-实现故障转移 3:实现步骤: 2.1:实现flume1.conf 2.2:实现flume2.conf - 端口4141 2.3:实现flume3.conf - 端口4142 3&#…

NIO编程总结

NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题…

【如何在Java中使用ForkJoinPool】

目录 背景1.使用ForkJoinPool的线程池2.工作窃取算法3.ForkJoinPool的主要类4.使用递归操作5.资源任务6.何时使用ForkJoinPool7.总结 背景 使用ForkJoinPool去分解计算密集型任务且且并行地执行他们以获得更好的Java应用程序的性能。 ForkJoinPool是一个功能强大的Java类&…

程序员进银行科技岗——简单总结

银行的分类 Top0—中央银行: 仅有一家,即中国人民银行。 Top1—政策性银行: 国家开发银行、中国进出口银行、中国农业发展银行 Top2—国有商业银行: 国有六大行(中国工商银行、中国农业银行、中国银行、中国建设…

【计算机网络】前后端分离,HTTP协议,网络分层结构,TCP

❤️ Author: 老九 ☕️ 个人博客:老九的CSDN博客 🙏 个人名言:不可控之事 乐观面对 😍 系列专栏: 文章目录 前后端分类HTTP协议HTTP组成HTTP的版本HTTP的请求方式HTTP请求头HTTP 响应状态码 AJAX发送请求 …

555定时器的基本原理和应用案例

前言 555定时器常用于脉冲波形的产生和整形电路中,之前在查找555定时器的原理图和基本管脚信息时,网上的内容大多含糊不清,没有讲的很详细,要么只是单一的管脚图,要么就是简单的文字解释,并且大多数缺乏基…

2023 年大厂实习前端面试题(一):跨域问题

1. 跨域 1.1 跨域问题来源 跨域问题的来源是浏览器为了请求安全而引入的基于同源策略(Same-origin policy)的安全特性。 同源策略是浏览器一个非常重要的安全策略,基于这个策略可以限制非同源的内容与当前页面进行交互,从而减少…

linux 条件变量 pthread_cond_signal

专栏内容:linux下并发编程个人主页:我的主页座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 目录 前言 简介 应用场景 与互斥量/信号量的区别 接口介绍 变量定义 初始化 等待被唤…

ROS:ROS的一些基本命令行

目录 一、打开小海龟1.1终端,启动ROS Master:1.2终端2,启动小海龟仿真器:1.3终端3,启动海龟控制节点: 二、查看系统中的计算图三、节点命令3.1查看节点下的命令rosnode3.2显示节点列表rosnode list3.3查看节…

[CISCN2023]unzip

[CISCN2023]unzip 环境搭建 1.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><form method"post" action"1.php" en…

Java 基础进阶篇(十六):多线程总结

文章目录 一、多线程概述二、多线程的创建1.1 方式一&#xff1a;继承 Thread 类1.2 方式二&#xff1a;实现 Runnable 接口匿名内部类实现方案 1.3 方式三&#xff1a;JDK 5.0新增: 实现 Callable 接口1.4 三种方式对比 二、Thread的常用方法三、线程安全与同步3.1 线程安全3.…

数据类型.

数据类型 数据类型分类 数值类型 tinyint类型 数值越界测试&#xff1a; mysql> create table tt1(num tinyint); Query OK, 0 rows affected (0.02 sec)mysql> insert into tt1 values(1); Query OK, 1 row affected (0.00 sec)mysql> insert into tt1 values(128…

数据仓库基础(通俗易懂,好文)数仓概念

1、数据仓库的概念 数据仓库&#xff08;英语&#xff1a;Data Warehouse&#xff0c;简称数仓、DW&#xff09;,是一个用于存储、分析、报告的数据系统。数据仓库的目的是构建面向分析的集成化数据环境&#xff0c;为企业提供决策支持&#xff08;Decision Support&#xff09…

CISCN WP ——R3vCr4ck

[CISCN-Misc] 签到卡 [CISCN-Misc] 被加密的生产流量 在过滤器中搜索modbus 发现类似base的编码 跟踪TCP流得到Base32密文 在线解密 [CISCN-Crypto]可信度量 非预期解 分析题目&#xff0c;发现修改程序后的测试程序位于容器内&#xff0c;使用winscp通过scp连接容器&#xff…

Flume系列:案例-Flume复制(Replicating)和多路复用(Multiplexing)

目录 Apache Hadoop生态-目录汇总-持续更新 1&#xff1a;案例流程描述 2&#xff1a;实现步骤&#xff1a; 2.1&#xff1a;实现flume1.conf 2.2&#xff1a;实现flume2_hdfs.conf 2.3&#xff1a;实现flume3_dir.conf 3&#xff1a;启动传输链路 Apache Hadoop生态-目录…

移动端开发之基础知识

移动端开发之流式布局 移动端基础浏览器现状手机屏幕现状移动端调试方法 视口布局视口视觉视口理想视口总结&#xff1a; meta视口标签标准的viewport设置 三倍图物理像素&物理像素比多倍图背景缩放 background-size背景图三倍图 多倍图切图 cutterman 移动端开发选择移动端…

这么可爱的彩虹屁老婆,真的不想“娶”一个放桌面上吗?

&#x1f4a7;这么可爱的 彩虹屁老婆 \color{#FF1493}{彩虹屁老婆} 彩虹屁老婆&#xff0c;真的不想“娶”一个放桌面上吗&#xff1f;&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &…

如何在华为OD机试中获得满分?Java实现【比赛评分】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述4. Java算法源码5. 测试6.解题思路1. 题目描述 一个有N个选手参加比赛,…