高可用篇_A Docker容器化技术_II Docker环境搭建和常见命令
原创作者:田超凡(程序员田宝宝)
版权所有,引用请注明原作者,严禁复制转载
Docker安装
Docker 要求 CentOS7 系统的内核版本在 3.10以上 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
1、通过 uname -r 命令查看你当前的内核版本
uname -r |
- 使用 root 权限登录 Centos。确保 yum 包更新到最新。
yum -y update |
该过程大概需要维持10分钟左右 |
- 卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine |
- 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2 |
- 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo |
- 可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r |
- 安装docker
sudo yum install -y docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03.1 |
- 启动并加入开机启动
systemctl start docker systemctl enable docker |
- 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version |
Docker快速入门
Docker核心名词
镜像文件、容器、仓库
镜像:简单理解为就是一个安装包,里面包含容器所需要运行的的基础文件和配置信息
,比如:redis镜像、mysql镜像等。
镜像的来源方式:
- 自己做镜像 比如(自己开发微服务项目)
- 拉取别人制作好的镜像, 例如 nginx、mysql、redis等。
容器: 容器就是镜像运行的实例,容器状态分为:初创建、运行、停止、暂停、删除, 一个镜像可以创建多个不同的容器。每个镜像文件都有自己独立ip信息---轻量级的linux服务器 虚拟化,比如:镜像就是类 容器就是实例对象
仓库: 仓库可以简单理解为,专门存储镜像文件仓库, 类似于 谷歌手机市场,统一在
谷歌手机市场下载开发者的安装包。
Docker 公开仓库地址: Docker hub
https://hub.docker.com/
Docker官方仓库:https://hub.docker.com/ ----访问比较慢
宿主机:当前win7操作系统
需要制作镜像文件(springboot项目)------类似于开发者开发安装应用程序打包
需要将我们制作好的镜像文件提交到docker仓库中-----开发者将自己的app应用程序发布安卓手机助手中。
本地需要拉去我们docker仓库中下载镜像文件,在交给我们容器运行---用户从app市场中下载安装包运行。
1.在需要制作镜像文件,将该镜像文件发布到docker仓库
docker仓库 dockerhub ----谷歌安卓手机市场 国内加速镜像
阿里云、网易、科大()----360、小米、华为。
- 从docker仓库下载镜像文件-----用户从手机市场中,下载软件。
- docker运行镜像文件----容器---独立ip访问信息-----端口号码映射
Docker下载镜像原理
Docker pull 从远程docker 官方仓库下载 镜像,到本地,在使用容器运行该镜像。
注意的是:docker官方镜像仓库地址部署在国外,下载镜像可能比较慢,建议配置国内加速镜像
Docker加载镜像配置
https://hub.docker.com/search?q=redis&type=image ---在国外访问可能比较慢
国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:
科大镜像:https://docker.mirrors.ustc.edu.cn/
网易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:https://reg-mirror.qiniu.com
当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。
阿里云加速镜像配置
阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://66mzqrih.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker |
如何查看加速镜像安装成功
输入:docker info
Docker常用命令
docker --help 帮助命令
docker --version
docker -version
docker images
查看本地images 镜像缓存
docker images 查看本地镜像文件
docker rmi -f kibana:5.6.9 ---删除镜像文件
REPOSITORY 存储库名称
Tag 镜像的标签 不写版本号码 默认下载最新latest镜像
IMAGE ID 镜像id
CREATED 创建时间
SIZE 大小
docker images -a
docker images -q ---只显示镜像的id
docker images --digests ---显示镜像的摘要信息
docker images --no-trunc ---显示完整镜像信息
docker rmi tomcat(镜像文件名称)
docker search
docker search mysql
https://hub.docker.com/
docker search -s 30 mysql 列出点赞数超过30以上。
latest 表示为最新的镜像文件 mysql8.0版本
docker pull
latest -----tag 最新版本的镜像文件
docker pull nginx:latest --默认的情况下 下载最新版本的镜像 可以通过
容器管理
查看容器信息
Docker ps 获取到容器id
docker inspect 1e07cc5cc78d
运行容器
docker run
docker run -i(保持容器一直运行)-t(给容器一个伪终端)-d(后台运行,不直接进入容器) --name=tomcat9.2(给启动容器起名字)-p 8080:8080(宿主:docker容器)tomcat:9.2(启动的容器) 【参数】(加入容器初始化命令)
#通过 -it 启动的容器有两个特点 一创建就进入容器 exit退出容器 容器就会停止运行 ---交互式容器
#通过 -id 创建的容器 docker exec -it tomcat9.2(--name起的名称)进入容器 exit退出容器 容器不会停止运行 ---守护式容器
docker ps 查看正在运行的容器
docker ps -a 查看运行和已经运行关闭大的容器
docker stop tomcat8 关闭容器
docker start tomcat8 启动容器
docker rm tomcat8 删除容器
docker inspect tomcat8 查看容器信息
docker exec 参数 进入容器
docker run 运行原理
docker run tcf
简单描述:首先会先从本地获取获取tcf镜像文件,如果本地没有该镜像文件则会去
阿里云仓库查找该镜像文件,如果阿里云仓库也没有该镜像文件,则会报错找不到
镜像文件。
获取到镜像文件之后直接运行。
详细描述:
1.docker在本机缓存中 tcf镜像文件,如果本地存在该镜像文件
,则以该镜像文件作为模板在容器中运行。
2.如果本地缓存中,没有tcf镜像文件 则会从dockerhub 或者加速镜像中
查找,如果查找不到的话,则返回错误找不到该镜像。
- 如果能够查找到该镜像,则以该镜像作为模板运行。
每个容器都有自己独立的网络 ip信息 运行成功 就是一个轻量级linux操作系统
启动容器
docker start 容器id
停止容器
docker stop 容器id
删除容器
docker rm 容器id
进入容器中
# 首先使用下面的命令,查看容器ID(CONTAINER ID):
docker ps -a
# 然后用下面的命令进入容器,就可以使用bash命令浏览容器里的文件:
docker exec -it [CONTAINER ID] bash
# 有的镜像没有bash命令,可以用对应的shell,比如sh
docker exec -it [CONTAINER ID] sh
本文部分素材转载自蚂蚁课堂
相关文章:
高可用篇_A Docker容器化技术_II Docker环境搭建和常见命令
原创作者:田超凡(程序员田宝宝) 版权所有,引用请注明原作者,严禁复制转载 Docker安装 Docker 要求 CentOS7 系统的内核版本在 3.10以上 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。 …...

Vue.js+SpringBoot开发食品生产管理系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 加工厂管理模块2.2 客户管理模块2.3 食品管理模块2.4 生产销售订单管理模块2.5 系统管理模块2.6 其他管理模块 三、系统展示四、核心代码4.1 查询食品4.2 查询加工厂4.3 新增生产订单4.4 新增销售订单4.5 查询客户 五、…...

Python面试笔记
Python面试笔记 PythonQ. Python中可变数据类型与不可变数据类型,浅拷贝与深拷贝详解Q. 解释什么是lambda函数?它有什么好处?Q. 什么是装饰器?Q. 什么是Python的垃圾回收机制?Q. Python内置函数dir的用法?Q…...
springboot 查看和修改内置 tomcat 版本
解析Spring Boot父级依赖 去到项目的根pom文件中,找到parent依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>${springboot.version}…...

003——移植鸿蒙
目录 一、顶层Make分析 二、添加一个新的单板 2.1 Kconfig 2.2 Makefile 2.2.1 顶层Makefile 2.2.2 platform下的Makefile 2.2.3 platform下的bsp.mk文件 2.3 编译与调试 2.4 解决链接错误 三、内核启动流程的学习 3.1 韦东山老师总结的启动四步 3.2 启动文件分析…...
罗马数字转整数-力扣通过自己编译器编译
学会将力扣题目用自己自带的编译软件编译---纯自己想的本题解法 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两…...

深入解析JVM加载机制
一、背景 Java代码被编译器变成生成Class字节码,但字节码仅是一个特殊的二进制文件,无法直接使用。因此,都需要放到JVM系统中执行,将Class字节码文件放入到JVM的过程,简称类加载。 二、整体流程 三、阶段逻辑分析 3…...

python redis中blpop和lpop的区别
python redis中lpop()方法是获取并删除左边第一个对象。 def lpop(self,name: str,count: Optional[int] None,) -> Union[Awaitable[Union[str, List, None]], Union[str, List, None]]:"""Removes and returns the first elements of the list name.By de…...

第四百一十回
文章目录 1. 概念介绍2. 方法与细节2.1 获取方法2.2 使用细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取当前系统语言"相关的内容,本章回中将介绍如何获取时间戳.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…...
程序员的README——编写可维护的代码(一)
用户行为不可预测,网络不可靠,事情总会出错。生产环境下的软件必须一直保持可用状态。 编写可维护的代码有助于你应对不可预见的情况,可维护的代码有内置的保护、诊断和控制。 切记通过安全和有弹性的编码实践进行防御式编程来保护你的系统&a…...

数据库管理-第160期 Oracle Vector DB AI-11(20240312)
数据库管理160期 2024-03-12 数据库管理-第160期 Oracle Vector DB & AI-11(20240312)1 向量的函数操作to_vector()将vector转换为标准值vector_norm()vector_dimension_count()vector_dimension_format() 2 将向量转换为字符串或CLOBvector_seriali…...
(C++进阶)boost库笔记
目录 1、boost::function 1.1 概述 1.2 boost包装器和C11包装器对比 1.2、代码示例 1、boost::function 1.1 概述 boost::function 是 Boost 库中提供的一个通用函数对象包装器,它可以存储指向任何可调用对象的指针,并且可以在任何时候通过 operat…...
MapReduce面试重点
文章目录 1. 简述MapReduce整个流程2. join原理 1. 简述MapReduce整个流程 数据划分(Input Splitting):开始时,输入数据被分割成逻辑上的小块,每个块被称为Input Split。 映射(Map):每个Input Split 由一个或多个Map任务处理&…...
C语言简单题(7)从主函数中输入10个等长字符串,用一个函数对他们排序,然后在主函数输出这10个已排好序的字符串
从主函数中输入10个等长字符串,用一个函数对他们排序,然后在主函数输出这10个已排好序的字符串 /* 从主函数中输入10个等长字符串,用一个函数对他们排序,然后在主函数输出这10个已排好序的字符串 */ #include<stdio.h> …...
光伏科普|太阳能光伏发电应用场景有哪些?
太阳能光伏发电的应用领域其实非常广泛,很多人会不相信,但在我们的日常生活中随处可见太阳能光伏产业,本文将详细介绍其应用场景有哪些。 一、工业领域厂房 太阳能光伏发电作为一种清洁、可再生的能源,安装在工业领域厂房&#…...
Go 构建高效的二叉搜索树联系簿
引言 树是一种重要的数据结构,而二叉搜索树(BST)则是树的一种常见形式。在本文中,我们将学习如何构建一个高效的二叉搜索树联系簿,以便快速插入、搜索和删除联系人信息。 介绍二叉搜索树 二叉搜索树是一种有序的二叉…...

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的交通信号灯识别系统(深度学习+UI界面+训练数据集+Python代码)
摘要:本研究详细介绍了一种采用深度学习技术的交通信号灯识别系统,该系统集成了最新的YOLOv8算法,并与YOLOv7、YOLOv6、YOLOv5等早期算法进行了性能评估对比。该系统能够在各种媒介——包括图像、视频文件、实时视频流及批量文件中——准确地…...
以太坊开发学习-solidity(三)函数类型
目录 函数类型 函数类型 solidity官方文档里把函数归到数值类型 函数类型是一种表示函数的类型。可以将一个函数赋值给另一个函数类型的变量, 也可以将一个函数作为参数进行传递,还能在函数调用中返回函数类型变量。 函数类型有两类:- 内部&…...
教你把公司吃干抹净、榨干带走
大家好: 衷心希望各位点赞。 您的问题请留在评论区,我会及时回答 正文 打工人一定要做到够自私,把公司的一切为我所用,你要知道闷头打工是没有出路的。聪明的人会以最快的速度榨干带走公司的一切资源、人脉、技能,为…...
开发指南007-导出Excel
平台上开发导出Excel比过去的单体架构要复杂些,因为前端和后台不在一个进程空间里。 后台的操作是先生成excel文件,技术路线是jxl <dependency><groupId>net.sourceforge.jexcelapi</groupId><artifactId>jxl</artifactId&g…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...

WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
智能职业发展系统:AI驱动的职业规划平台技术解析
智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...