chapter6:SpringBoot与Docker

news/2024/11/8 6:29:04/

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.ppmy.cn/news/99834.html

相关文章

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

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

NIO编程总结

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

JAVA之数组2

添加元素 从后往前进行迭代,最后在末尾插入元素 tip:为避免数字在覆盖过程中丢失,故从后往前覆盖 删除元素 从前往后迭代,最后将末尾赋值为0 tip: 以覆盖的数arr【i】为基准,构造循环 共同处Tip: 范围均为【index1&…

图【数据结构】

目录 一、图的定义和基本术语 二、图的类型定义 三、图的存储结构 1、数组(邻接矩阵)表示法 二、邻接表(链式)表示法 三、图的邻接表的存储表示 四、十字链表与邻接多重链表 (1)十字链表 &#xff…

如何在华为OD机试中获得满分?Java实现【IPv4地址转换成整数】一文详解!

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

Redis数据库简介

1.Redis数据库介绍 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 2.Redis数据库特性 Redis支持数据的持久化&#xff0c;可以将内存中的数据保存在磁盘中&#xff0c;重启的时候可以再次加…

基于51单片机的项目作品汇总

篇记录下自己做的项目作品&#xff0c;作品有实物也有仿真&#xff0c;以实物居多&#xff0c;主要是以单片机为主&#xff0c;单片机有HC32,STM32,STC,51等&#xff0c;本人从事单片机行业5年&#xff0c;拥有丰富的经验。也涉及QT&#xff0c;LVGL&#xff0c;嵌入式&#xf…

哈夫曼树(Huffman)【数据结构】

目录 ​编辑 一、基本概念 二、哈夫曼树的构造算法 三、哈夫曼编码 假如<60分的同学占5%&#xff0c;60到70分的占15%…… 这里的百分数就是权。 此时&#xff0c;效率最高&#xff08;判断次数最少&#xff09;的树就是哈夫曼树。 一、基本概念 权&#xff08;we…