springcloud篇3-docker需熟练掌握的知识点
docker的原理请参考博文《Docker与Kubernetes》。
一、安装docker的指令
1.1 安装yum工具
yum install -y yum-utils \device-mapper-persistent-data \lvm2 --skip-broken

补充:配置镜像源
注意:
yum安装是在线联网下载安装,而很多的资源在国外,会去国外的网站安装,速度会很慢,此时需要配置镜像源。
命令如下:
yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed -i 's/download.docker.com/mirrors.aliyun\/docker-ce/g'yum makecache fast
1.2 安装docker
yum install -y docker-ce
说明:
-y 表示“遇到问题都选y”

1.3 启动docker
注意:
启动docker前,一定要关闭防火墙。
# 关闭防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
启动docker服务:
# 启动docker服务
systemctl start docker
# 查看状态
systemctl status docker

关于docker的一些其他指令:
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
docker -v #查看docker版本
1.4 配置docker镜像
以使用华为云的docker镜像加速器为例。
登录华为云账号(公司买的IAM用户,使用的是公司购买的华为云服务器)找到docker镜像服务。

先创建一个镜像配置文件:


# 使docker重新读取镜像库配置文件systemctl daemon-reload
# 重启docker服务
systemctl restart docker
说明:
每次修改daemon.json文件都要执行上面两个命令。
二、docker的基本操作
2.1 镜像的命令规范
镜像名称一般分为两部分:[repository]:[tag]
tag指镜像版本,若是没有该项则默认为最新版本的(lastest)。

2.2 docker的镜像操作

docker build构建镜像
docker pull 从镜像服务器拉取镜像
docker push 推送镜像到镜像服务器
docker img 查看镜像
docker rmi 删除镜像
docker save 保存镜像为一个压缩包
docker load 加载压缩包为镜像
例如:

三、容器相关命令
**docker run 创建容器(运行状态)
docker rm 删除容器(删除容器及硬盘上的文件)
docker pause 暂停容器(保留容器的内存及硬盘上的文件)
docker unpause 唤醒容器
docker stop 停止容器(删除容器的内存,保留硬盘上的文件)
docker start 启动容器
docker exec 进入容器执行命令
docker ps 查看所有运行的容器及状态
docker logs 查看容器运行日志
**

3.1 容器基本命令(创建、删除)

说明:

容器是与外界隔离的,任何人都无法访问。为了能使外部请求能够访问到容器, 需要暴露容器的端口(与宿主机端口关联)。
例如上图,nginx容器的端口为80,把容器端口与宿主机端口关联。当访问http://宿主机ip:80时,会把请求转发到nginx容器。
例如:


访问容器:


跟踪日志输出:



3.2 进入容器执行命令

创建一个容器后进行容器控制台:


3.2.1 案例1-修改nginx容器首页内容
从上图中可以看出,容器有自己的文件系统。
下面进行一个小案例来体验一下(修改nginx欢迎页内容):
找到index.html文件,

修改文件:
sed -i 's#Welcome to nginx#hello docker#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html

注意:都不要重启docker服务。
查看效果:


3.2.2 案例2-使用redis容器
docker run --name redis-docker -p 6379:6379 -d redis redis-server --appendonly yes
说明:
“–appendonly yes”执行可持支aof持久化。

创建docker后可以用redis desktop Mamager连接:


进入容器的控制台进行操作:

也可以直接进入redis的客户端:

查看效果:

四、数据卷命令
数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。且不同的容器可以共享同一个数据卷(适用于集群)。


实例-创建一个数据卷并查看它在宿主机上的位置:

4.1 案例1-使用数据卷修改nginx首页内容
docker run --name nm -p 80:80 -v html:/usr/share/nginx//html -d nginx
说明:
-v 是使用数据卷(注意:如果-v 指定的数据卷html不存在会自动新建)

编辑index.html文件:


效果:

4.2 案例2-创建一个MySQL容器,将宿主机目录直接挂载到容器

五、Dockerfile自定义镜像
5.1 镜像结构
以MySQL镜像为例。

5.2 Dockerfile
Dockerfile是一个文件,其中包含一个个的指令,用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
第一行必须是FROM,从一个基础镜像来构建。

说明:
(1)EXPOSE指令后的端口后用于docker run的-p参数后的端口值。
5.3 案例-基于Ubuntu构建一个运行java项目的新镜像
创建前的资源如下:

Dockerfile的内容如下:
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local# 拷到jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar# 安装JDK
RUN cd $JAVA_DIR \&& tar -xf ./jdk8.tar.gz \&& mv ./jdk1.8.0_144 ./java8# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app/jar
执行创建镜像指令:
docker build -t javaweb:1.0 .
说明:
上述指令最后的"."表示Dockerfile所在目录。



效果如下:

补充:简化Dockerfile
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local# 拷到jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/# 安装JDK
RUN cd $JAVA_DIR \&& tar -xf ./jdk8.tar.gz \&& mv ./jdk1.8.0_144 ./java8# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 前面的命令在安装基础镜像和JDK,每次都写很重复COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app/jar
如上,安装前几层(基础镜像和jdk)的步骤可以单独打包。
事实上,有一个名为java:8-alpine的镜像,基于它,可以将一个Java项目构建为镜像。
Dockerfile简化如下:
# 指定基础镜像
FROM java:8-alpineCOPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app/jar
六、DockerCompose
Docker Compose可以基于Compose文件帮我们快速地部署分布式应用,而无需手动一个个创建和运行容器。
Compose文件是个文本文件,通过指令(其实是把docker run和docker-build指令转换了一下)定义集群中的每个容器如何运行。
Compose文件示例如下:

6.1 DockerCompose安装
(后续补充)
6.2 部署微服务集群
(后续补充)
七、Docker镜像仓库(搭建企业私有镜像)
(后续补充)
相关文章:
springcloud篇3-docker需熟练掌握的知识点
docker的原理请参考博文《Docker与Kubernetes》。 一、安装docker的指令 1.1 安装yum工具 yum install -y yum-utils \device-mapper-persistent-data \lvm2 --skip-broken补充:配置镜像源 注意: yum安装是在线联网下载安装,而很多的资源…...
基于单片机的直流稳压电源的设计(论文+源码)
1.系统方案设计 在本次直流稳压电源的设计中,其关键指标如下: 系统输入电压220V交流系统输出直流0到12V可调,步进可以达到0.1V电流最大输出可以到2A具有短路保护功能可以通过液晶或者数码管等显示设备显示当前输出电压 2. 电路图...
uniapp-vue3 实现, 一款带有丝滑动画效果的单选框组件,支持微信小程序、H5等多端
采用 uniapp-vue3 实现, 是一款带有丝滑动画效果的单选框组件,提供点状、条状的动画过渡效果,支持多项自定义配置,适配 web、H5、微信小程序(其他平台小程序未测试过,可自行尝试) 可到插件市场下载尝试&…...
解锁 C 语言字符函数密码,开启高效编程之路
文章目录 一、字符函数的构成二、字符函数的分类1、字符分类函数1、isalnum函数2、isalpha函数3、isdigit函数4、islower函数5、isupper函数6、ispunct函数7、isspace函数8、iscntrl函数9、isxdigit函数10、isgraph函数11、isprint函数 2、字符转换函数 三、字符函数的应用 一、…...
LLM之RAG实战(五十一)| 使用python和Cypher解析PDF数据,并加载到Neo4j数据库
一、必备条件: python语言Neo4j数据库python库:neo4j、llmsherpa、glob、dotenv 二、代码: from llmsherpa.readers import LayoutPDFReaderfrom neo4j import GraphDatabaseimport uuidimport hashlibimport osimport globfrom datetime …...
力扣-数组-01两数之和
解析 遍历i和第i1,两个for循环查就可以,时间复杂度是 代码 class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {vector<int> ansewer;bool flag false;for(int i 0;i < nums.size(); i){for(in…...
Flutter中的网络请求图片存储为缓存,与定制删除本地缓存
Flutter中的网络请求图片存储为缓存,与定制删除本地缓存 1:封装请求图片函数 2:访问的图片都会转为本地缓存,当相同的请求url,会在本地调用图片 3:本地缓存管理【windows与andriod已经测试】【有页面】【有…...
保障移动应用安全:多层次安全策略应对新兴威胁
在数字化时代,移动应用的安全问题变得越来越重要。随着网络威胁的不断升级,确保移动应用的安全性不仅是保护敏感数据的关键,也是维护用户信任的基础。为了应对复杂的安全挑战,企业必须采取先进的技术和多层次的安全策略࿰…...
【Linux】函数
一、函数 1、创建函数 如果定义了同名函数,则新定义的函数就会覆盖原先的定义的函数,而且在运行时不会报错。 创建函数的语法: 方法1:使用关键字function function name { commands } shell脚本中的函数名不能重复 方法2&#x…...
Maven中管理SNAPSHOT版本含义及作用
在开发过程中突然产生了一个疑问:IDEA中 maven deploy的依赖包的版本号,比如 1.0.0-SNAPSHOT是在哪配置的?在远程仓库中的版本和这个有关系吗 ? 在 Maven 中,-SNAPSHOT 后缀是用于标识项目版本为快照(Snapshot…...
win10 VS2019上libtorch库配置过程
win10 VS2019上libtorch库配置过程 0 引言1 获取libtorch2 在VS上配置使用libtorch库3 结语 0 引言 💻💻AI一下💻💻 libtorch库是一个用于深度学习的C库,是PyTorch的官方C前端。它提供了用于构建和训练深度学习模…...
【计算机网络】课程 实验二 交换机基本配置和VLAN 间路由实现
实验二 交换机基本配置和VLAN 间路由实现 一、实验目的 1.了解交换机的管理方式。 2.掌握通过Console接口对交换机进行配置的方法。 3.掌握交换机命令行各种模式的区别,能够使用各种帮助信息以及命令进行基本的配置。 4&…...
Oracle Dataguard(主库为单节点)配置详解(4):将主库复制到备库并启动同步
Oracle Dataguard(主库为单节点)配置详解(4):将主库复制到备库并启动同步 目录 Oracle Dataguard(主库为单节点)配置详解(4):将主库复制到备库并启动同步一、…...
OpenCL(贰):浅析CL内核程序接口函数
目录 1.前言 2.获取平台信息 1.cl_int类型 2.cl_platform_id类型 3.clGetPlatformIDs():查询系统OpenCL平台数量或获取具体的平台信息 4.clGetPlatformInfo():查询指定OpenCL平台的信息,例如平台名称、供应商、版本等 3.设置OpenCL上下文…...
Leetcode 3407. Substring Matching Pattern
Leetcode 3407. Substring Matching Pattern 1. 解题思路2. 代码实现 题目链接:3407. Substring Matching Pattern 1. 解题思路 这一题是一道leetcode easy的题目,照说应该没啥的,不过实际我做的时候在这里卡了一下,所以还是拿…...
学英语学压测:02jmeter组件-测试计划和线程组ramp-up参数的作用
📢📢📢:先看关键单词,再看英文,最后看中文总结,再回头看一遍英文原文,效果更佳!! 关键词 Functional Testing功能测试[ˈfʌŋkʃənəl ˈtɛstɪŋ]Sample样…...
Vue笔记-001-声明式渲染
https://cn.vuejs.org/tutorial/#step-2https://cn.vuejs.org/tutorial/#step-2 Vue 单文件组件 (Single-File Component,缩写为 SFC) 单文件组件是一种可复用的代码组织形式,它将从属于同一个组件的 HTML、CSS 和 JavaScript 封装在使用 .vue 后缀的文件…...
26考研资料分享 百度网盘
26考研资料分享考研资料合集 百度网盘(仅供参考学习) 基础班: 通过网盘分享的文件:2026【考研英语】等3个文件 链接: https://pan.baidu.com/s/1Q6rvKop3sWiL9zBHs87kAQ?pwd5qnn 提取码: 5qnn --来自百度网盘超级会员v3的分享…...
.NET 8 + Ocelot + Consul 实现代理网关、服务发现
.NET 8 Ocelot Consul 实现代理网关、服务发现 本文环境:.NET 8 Ocelot 23.4.2 Consul 1.7.14.6 1 实现网关 分别创建3个WebApi工程:OcelotGw、TestGwAService、TestGwBService;在OcelotGw工程中安装Ocelot包:Install-Packag…...
使用 Nginx 轻松处理跨域请求(CORS)
使用 Nginx 轻松处理跨域请求(CORS) 在现代 Web 开发中,跨域资源共享(CORS)是一种重要的机制,用于解决浏览器的同源策略限制。CORS 允许服务器声明哪些来源可以访问其资源,从而确保安全性与可用…...
Langchain Agent实战避坑:用通义千问调用高德API,我踩过的异步和工具定义那些坑
Langchain Agent实战避坑指南:异步调用与工具定义的那些坑 在构建基于Langchain的智能代理时,异步调用和工具定义是两个最容易让开发者踩坑的领域。本文将分享我在使用通义千问模型调用高德API过程中遇到的实际问题及其解决方案。 1. 异步调用的常见陷阱…...
手把手教你用Python玩转CALCE锂电池数据集:从数据清洗到LSTM/Transformer模型实战
手把手教你用Python玩转CALCE锂电池数据集:从数据清洗到LSTM/Transformer模型实战 锂电池作为新能源领域的核心组件,其剩余寿命预测一直是工业界和学术界的研究热点。CALCE数据集作为马里兰大学发布的权威锂电池老化数据,包含了多组电池在不同…...
嵌入式无锁任务队列:裸机与RTOS下的零内存分配串行化方案
1. 项目概述TaskQueue 是一个轻量级、无依赖的嵌入式任务序列化库,专为资源受限的裸机(Bare-Metal)或实时操作系统(RTOS)环境设计。其核心工程目标明确且务实:在不引入复杂同步原语(如互斥锁、信…...
和AI一起搞事情#:边剥龙虾边做个中医技能来起号图
1. 核心概念 在 Antigravity 中,技能系统分为两层: Skills (全局库):实际的代码、脚本和指南,存储在系统级目录(如 ~/.gemini/antigravity/skills)。它们是“能力”的本体。 Workflows (项目级):…...
Elevator Saga终极指南:如何用JavaScript编程控制电梯运输系统
Elevator Saga终极指南:如何用JavaScript编程控制电梯运输系统 【免费下载链接】elevatorsaga The elevator programming game! 项目地址: https://gitcode.com/gh_mirrors/el/elevatorsaga Elevator Saga是一款极具挑战性的电梯编程游戏,通过Jav…...
聊一聊 C# 中的闭包陷阱:foreach 循环的坑你还记得吗?藏
. GIF文件结构 相比于 WAV 文件的简单粗暴,GIF 的结构要精密得多,因为它天生是为了网络传输而设计的(包含了压缩机制)。 当我们用二进制视角观察 GIF 时,它是由一个个 数据块(Block) 组成的&…...
数字丝路新基建:HAKUNA MATATA发布OpenClaw智能系统,为中非合作打造双向“数字龙虾“
——非洲驻华使馆专属智能发布系统暨中国企业对非智能决策平台正式上线【中国,北京/杭州,2026年4月12日】 在2024年中非合作论坛北京峰会精神持续深化落实、中非经贸合作迈向"真实亲诚"新时代的背景下,非洲综合服务平台HAKUNA MATA…...
linux——TCP多线程并发服务器
多线程服务器 可以同时处理多个客户端旧版:一次只能接一个客户,客户不走,别人连不进来。新版:来一个客户,创建一个线程专门服务,同时支持 N 个客户端!主函数加了一个while(1)循环pthread_t tid…...
备考策略:针对职场人的时间与精力,提供AI认证考试的高效备考与避坑方案
CAIE注册人工智能工程师(简称CAIE认证、赛一认证或CAIE(赛一)认证),是由CAIE人工智能研究院颁发的聚焦人工智能领域的专业技能等级认证,旨在培养和评估具备理论基础实战能力的复合型AI人才,覆盖零基础小白、职场赋能者…...
html页面间调用
一、简单情况1、父页面通过iframe套子页面情况子页面通过window.parent调用父页面的函数2、多层嵌套window.top找到最顶层3、父界面通过open打开子界面子界面通过window.opener得到父界面二、复杂情况根据上述关系,进行各种组合,例如window.top.opener举…...
