Docker核心原理与实操
第一章、Docker基本概念
1、概念:Docker是一种容器技术,可以解决软件跨环境迁移问题。
2、实现原理:是一个分层复用的文件系统;每一层都是一个独立的软件; 在最底层复用Linux系统的bootfs;
3、组成(7部分):
-
仓库:用于存放镜像
-
本地守护进程:这个就是软件运行的进程
-
客户端:命令行中的docker 命令
-
镜像:就是一个制作好的操作系统文件,类似安装操作系统的iso --静态的
-
容器:就是镜像运行起来的运行态系统 ;可被创建启动停止 --动态的
-
docker-compose:用于批量管理容器的工具
-
dockerfile:使用脚本来制作镜像的工具
镜像和容器就像是面向对象编程中的 类和实例。
4、Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器
5、Docker架构
第二章、Docker常用命令
1、Docker守护进程/服务的操作命令【6个】
- systemctl start docker
- systemctl stop docker
- systemctl restart docker
- systemctl status docker
- systemctl enable docker //开机自启动
- systemctl disenable docker
2、Docker 镜像的操作命令【7个】
远程镜像
-
docker search 镜像关键字 搜索远程仓库中的镜像
- 也可以通过hub.docker.com/网站进行搜索
-
docker pull 镜像名称:镜像版本 下载镜像到本地
-
docker push 把本地的镜像上传到远程仓库
本地镜像
-
删: docker rmi 镜像名称:镜像版本
- docker rmi 主键
- 有容器则不能删除对应的镜像
-
查: docker images 查询本地有啥镜像
- docker images -q 指查询镜像的主键
-
导入:docker load -i 压缩文件名称
-
导出: docker sava -o 压缩文件名称 镜像名称:版本
3、Docker容器的操作命令【10个】
-
查看容器 docker ps 查看当前有那些运行的容器
- docker ps -a 查看当前本机有那些容器(运行和停止的容器)
-
创建容器 docker run 参数 镜像名称:版本 启动后执行的命令
-
交互式:创建后立即进入容器,如果推出容器,则容器自动关闭(exit)
- docker run -it 镜像名称:版本 /bin/bash 权限问题要加参数
-
docker run -it --privileged=true -u=root --name=mysqlTest -v /root/data:/root/data_container mysql:5.7 /bin/bash
-
-
守护式:创建容器后,不自动进入,容器在后台运行
- docker run -id 镜像名称:版本 /bin/bash
-
-
进入容器:docker exec -it 【容器的名称、容器的ID】 /bin/bash
-
删除容器:docker rm 【容器的名称、容器的ID】
- 运行中的容器不能删除
-
启动容器:docker start 【容器的名称、容器的ID】
-
停止容器:docker stop 【容器的名称、容器的ID】
-
重启容器:docker restart 【容器的名称、容器的ID】
-
查看容器详情:docker inspect 【容器的名称、容器的ID】
-
把容器提交成镜像:docker commit 【容器的名称、容器的ID】 镜像名称:版本
-
查看容器日志:docker logs -f 容器名称
容器是个动态的 stop后依然占用着资源 restart后依然可以重启;但是删除后就彻底没有了!
第三章、Docker容器的数据卷
1、数据卷概念
为了实现容器与外部交互,但又不可以直接,所以在宿主机单独搞一个数据卷,也就是一个目录,让容器内也搞一个目录,将容器内的目录挂载到宿主机的目录(数据卷),并且同步共享数据。从而实现容器内数据持久化,容器与其他容器交互,与外部机器交互。
数据卷本质:宿主机的目录/文件
容器三大作用:数据持久化:容器与外部机器通信;容器之间数据交互
2、数据卷配置
创建启动容器时,直接使用 -v 参数配置数据卷
docker run... -v 宿主机目录(文件):容器目录(文件)
注意:目录必须为绝对路径;若目录不存在则自动创建;可挂载多个数据卷,添加多个-v
将容器目录挂载到宿主机目录,实现数据同步共享,当删除容器后 宿主机的目录及数据依然还在!容器的都没了。当其他容器挂载到此目录 就可以获取宿主机该目录下的数据 也就是实现宿主机与容器的交互。
俩容器交互 也就是将俩容器都挂载到同一宿主机的同一目录。
一个容器在数据卷内的任何操作的数据 另外一个容器在数据卷挂载的目录都可以获取。
3、数据卷容器
数据卷容器扮演一个中介的角色,只是为了在将容器目录挂载到数据卷上 书写简单些!!!
在查看各个容器mounts时,本质上:挂载到的仍然是宿主机的目录!!!
- 配置数据卷容器c3
使用参数 -v /自定的本地目录名
docker run -it --privileged=true -u=root --name=c3 -v /volume mysql:5.7 /bin/bash
数据卷容器 自动 挂载到宿主机某个目录下 !想知道使用docker inspect c3在mounts下可看见
- 创建容器c1挂载到数据卷容器c3
使用参数 --volumes-from 数据卷容器名
docker run -it --privileged=true -u=root --name=c1 --volumes-from c3 mysql:5.7 /bin/bash
- 创建容器c1挂载到数据卷容器c3
docker run -it --privileged=true -u=root --name=c2 --volumes-from c3 mysql:5.7 /bin/bash
第四章、应用部署
1、部署MySQL
上述可能报错,正确使用以下绝对路径:
docker run -id \
> -p 3307:3306 \
> --name=c_mysql \
> -v /root/mysql/conf:/root/mysql/etc/mysql/conf.d \
> -v /root/mysql/logs:/root/mysql/logs \
> -v /root/mysql/data:/root/mysql/var/lib/mysql \
> -e MYSQL_ROOT_PASSWORD=123456 \
> mysql:5.7
docker exec -it c_mysql /bin/bash进入容器 就是打开MySQL了!!!!
直接登录: mysql -uroot -p123456
就是亲切地 >mysql 操作界面了
Navicat连接数据库 可能会面临很多问题:防火墙、权限、端口开放、、、
2、部署redis
1、创建容器
docker run -it --privileged=true -u=root --name=redis -p 6379:6379 \
-v /home/redis/data:/data \
-v /home/redis/conf/redis.conf:/etc/redis/redis.conf \
redis:latest /bin/bash
2、启动容器
docker exec -it redis /bin/bash
3、打开服务端
root@d34513b96283:/data# redis-server
4、进入客户端
root@d34513b96283:/data# redis-server
远程连接 还要设置redis.conf ;打开6379端口 防火墙
# 允许任何主机连接、访问
bind 127.0.0.1 改为 bind 0.0.0.0
# 关闭保护模式
protected-mode yes 改为 protected-mode no
# 允许启动后在后台运行,即关闭命令行窗口后仍能运行
daemonize no 改为 daemonize yes
注意配置文件 redis.conf 使用了挂载 -v后面就是宿主机目录 直接操作就行了 可能是空的 该咋设置就咋设置
配置文件修改后要重启docker!
第五章、dockerfile
不常用,了解即可
dockerfile本质-----是用脚本来制作镜像的工具。
-
常用命令(8条):
- FROM,指定当前镜像的上一个镜像名称和版本
- COPY,拷贝宿主机上的文件到镜像中,不解压
- RUN 在镜像中执行一条linux命令,mkdir /home/123
- ADD,拷贝宿主机上的文件到镜像中,并且解压缩
- ENTRYPOINT,镜像运行启动后,执行的命令,不可覆盖
- CMD,镜像运行启动后,执行的命令,可覆盖
- ENV,设置环境变量
- EXPOSE,镜像运行成容器后,自动暴露的端口
例如部署springboot项目 将jar包制作成镜像 直接运行
[root@localhost ~]# mkdir docker-files
[root@localhost ~]# cd docker-files
[root@localhost docker-files]# ll
总用量 0
[root@localhost docker-files]# vim centos_dockerfile
//编辑完文件[root@localhost docker-files]# docker build -f ./centos_dockerfile -t mycentos:1 .
最终build镜像文件时 -f 指定文件路径 -t指定最终构造的镜像文件名称及版本
好奇 并不是按照/usr 启动而且也并不能使用vim?
重新build镜像 又好了 哈!
第五章、docker服务编排
Docker Compose--多容器管理工具
相关文章:
Docker核心原理与实操
第一章、Docker基本概念 1、概念:Docker是一种容器技术,可以解决软件跨环境迁移问题。 2、实现原理:是一个分层复用的文件系统;每一层都是一个独立的软件; …...
虚幻引擎 UE5 增强输入系统
用人话讲!虚幻引擎 UE5 增强输入系统(蓝图篇)_酥妃大魔王i的博客-CSDN博客 UE5 -- EnhancedInput(增强输入系统) - 知乎 (zhihu.com) 简单认识 虚幻引擎中的增强输入 | 虚幻引擎5.1文档 (unrealengine.com) 文档有较详细介绍 标记一下方便…...
Mac 安装软件各种报错解决方案
Mac 安装软件各种报错解决方案 文章目录 Mac 安装软件各种报错解决方案一. 打开允许“允许任何来源”二. 无法打开"xxx",因为它不是从App Store下载三. 无法打开"xxx",因为 Apple无法检查其是否包含恶意软件。四. "xxx"已…...
leetcode做题笔记142. 环形链表 II
给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整…...
DuDuTalk:4G语音工牌,如何实现家庭上门维修服务过程的智能化管理?
随着上门按摩、上门养老、上门买菜、上门维修等互联网上门服务的兴起,越来越多的居民开始采用线上下单,享受企业安排人员上门到家的服务。而家庭维修作为到家服务里面典型的一个场景,已成为许多人不可或缺的一部分。然而,与此同时…...
Mybatis常见面试题总结
梳理面试过程中Mybatis相关的常见问题。为保证知识点覆盖,参考了《Mybatis从入门到精通》、《深入浅出Mybatis技术原理与实战》、《Mybatis技术内幕》等书籍。 Mybatis 简介 Mybatis 是一款优秀的持久层框架(ORM框架),它支持自定义SQL、存储过程以及高…...
数字IC设计之时序分析基础概念汇总
1 时钟Clock 理想的时钟模型是一个占空比为50%且周期固定的方波。时钟是FPGA中同步电路逻辑运行的一个基准。理想的时钟信号如下图: 2 时钟抖动Clock Jitter 理想的时钟信号是完美的方波,但是实际的方波是存在一些时钟抖动的。那么什么是时钟抖动呢?时钟抖动&#…...
1.centos7安装docker
本文目录: 1.docker 安装1.安装步骤2.安装是否成功校验3.docker加速配置4.hello world来袭,验证安装是否ok 2.卸载docker3.卸载较旧版本docker 使用docker必备的三个官方网站: docker官网:https://www.docker.com docker官方仓库&…...
基于elasticsearch-8.8.2 kibana-8.8.2 搭建一个文搜图系统demo
数据来源是由 图片url,图片descript,图片keywords 外加一个id 基于此首先创建 索引, keywords是一组由单词或词组 组成的一组数据,所以以数组形式压入数据: descript 是由两条语句组合成的数据(针对图片的两种不同描述) # 这里创建的keywords 数组元素类型为text,即可以模糊匹…...
第26节-PhotoShop基础课程-形状工具组-画板
文章目录 前言1.基础图形1.正方形(shift/alt/两者加起来)2.描边3.合并形状 将多个图放在一个图层4.对齐只能在不同图层5.修改6.重叠,相交 2.多边形1.边数2.星形 3.直线工具1.正常2.箭头 4.自定义形状 前言 类似画图板,矢量图形。…...
第一次课,通过进程信息和服务信息识别当前计算机运行程序(预习版)
题目: 检测的目标进程: ydebugg ; “ImmunityDebugger.exe” _500], rax Exe ; “ollydbg.exe” _4F8], rax hackerE ; “ProcessHacker.exe” _4F0], rax Exe ; “tcpview.exe” _4E8], rax sExe ; “autoruns.exe” _4E0], rax scExe ; “autorunsc.ex…...
ChatGPT 或其它 AI,能用在文书创作上吗?
新的申请季已经正式开始,一些热门项目的ED截止日期也不再遥远,因此很多准留学生们都已经开始了关于文书的创作。 而随着科技的不断发展,以ChatGPT为首的一众AI工具也作为一种辅助手段愈发融入了我们的生活。 那么不免就会有一些同学在准备申…...
Java中锁的分类
Java中锁的分类 这篇文章介绍各种锁的分类。介绍的内容如下: 公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁 上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性&am…...
centos安装flink,通过windows访问webui
1. 安装flink 1.1. flink的下载 通过flink官网下载flink安装包 https://flink.apache.org/ 下载安装包 1.2 flink在centos上的安装 将下载好的flink-1.17.1-bin-scala_2.12.tgz安装包放到centos目录下 解压文件: [rootlocalhost ~]# tar -zxvf flink-1.17.…...
如何让两台手机相互远程控制?
你的两台手机是什么系统的?如果你的两台手机都是安卓系统,而且都是安卓7.0及以上版本的系统,那么恭喜你,这两台手机可以相互远程控制! 你可以利用两个软件实现将两台手机相互远程控制的想法。为了避免混淆,…...
预编译为什么能防止SQL注入?一看你就明白了。预编译原理详解
「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 预编译防止SQL注入 1、SQL执行过程2、预编译原理3、…...
【7z密码】7z压缩包密码忘记了,怎么办?i
7z压缩包设置了密码,解压的时候就需要输入正确对密码才能顺利解压出文件,正常当我们解压文件或者删除密码的时候,虽然方法多,但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么,忘记了7z压缩包的密码…...
部署云MYSQL(在线版)
在Methodot - 您的一站式云原生在线开发协作平台网站上可以部署免费的MYSQL,在应用商店里能看到可以搭建多种数据库:(前提是要注册登录,免费版只能是2人共享) 登陆好后,点击工作台,选择应用商店…...
Gin 框架 解决 跨域问题
Gin 框架解决跨域问题 一点废话 在学习 Axios 的时候发现 up 使用了一个网址来提供 json 数据。因为不想加什么公众号搞啥百度网盘的,然后又刚好会一点点 go,就想着自己用 gin 框架返回一个 json 到前端页面然后从这个页面获取 json 。 这是我的go代码…...
【Datawhale课程笔记-简单学点大模型】大模型的能力
大模型的能力 参考GITHUB:https://github.com/datawhalechina/so-large-lm/blob/main/第二章:大模型的能力.md 深入探讨GPT-3——这个具有代表性的大型语言模型的能力。我们的研究主要基于GPT-3论文中的基准测试,这些测试包括: …...
git使用说明
目录 前言1.安装1.1. windows1.1.1.git客户端1.1.2.配置git客户端1.1.3.安装TortoiseGit图形客户端1.1.4 关于文件换行问题 1.2.ubuntu1.2.1.ubuntu终端Git中文乱码1.2.2 git log中文乱码解决 2.建立版本库2.1.下载网上开源版本库2.1.1.复制下载地址2.1.2.使用命令行…...
【PowerQuery】PowerBI Pro账户的自动刷新
在数据和模型通过发布或者上传方式上传到PowerBI Pro中,如何来进行数据刷新呢?数据源依然在本地,而数据模型已经发布到PowerBI Pro云端服务中。如果数据源更新,我们的模型如何进行自动刷新呢? PowerBI Pro如果需要基于本地数据源更新进行模型更新需要部署相应的数据网关服…...
红黑树(思维导图详解版)
目录 资源已上传 实现代码 测试代码 资源已上传 部分图片 实现代码 注意判断是否为红黑树的代码实现,实现代码中红黑树的删除 #pragma once #include<iostream> using namespace std;enum Color_Type {Red,Black };template<class K,class V> str…...
javafx学习记录
1.布局 2.选择重写或实现方法(select methods to override/implements) ctrl o 3.javafx有init方法,start方法,stop方法 4.定义一个按钮,使用系统默认浏览器访问网站 5.使窗口的关闭栏,缩小扩屏栏,代码是倒数第二行 6.设置模态窗口,默认关闭模态的 下…...
友善Nona Pi开发板ubuntu22.04系统用Python3.8.17的pip安装PyQt5.15.2时报错“Q_PID”这个宏未定义的一种解决办法
安装命令: pip install PyQt55.15.2 --config-settings --confirm-license --verbose -i https://mirrors.aliyun.com/pypi/simple/ 遇到出错: 如图: 分析具体错误内容: These bindings will be built: Qt, QtCore, QtNetwo…...
HTML中name和class,id的区别和联系
在HTML中,name、class和id是用于标识和选择元素的属性。 区别: name属性:用于标识表单元素,特别是在提交表单时,用于识别表单数据。name属性可以在同一表单中的多个元素中重复使用。class属性:用于为一个…...
Google 开源库Guava详解(集合工具类)—Maps、Multisets、Multimaps
一、Maps Maps有许多很酷的实用程序,值得单独解释。 1、uniqueIndex Maps.uniqueIndex(Iterable,Function)解决了一个常见的情况,即有一堆对象,每个对象都有一些唯一的属性,并希望能够根据该…...
肖sir__mysql之介绍__001
mysql之介绍 一、认识数据库 (1)什么是数据库? 是存放数据的电子仓库。以某种方式存储百万条,上亿条数据,供多个用户访问共享。 如: (2)数据库分关系型数据库和非关系型数据库 a、…...
【实战项目开发技术分享】如何设置机器人禁行区/虚拟墙
文章目录 前言一、代价地图自定义图层1.1 Costmap组成1.2 costmap_2d1.3 实现过程1.3.1 安装插件1.3.2 在costmap_2d中插入障碍物1.3.3 修改launch文件1.3.4 设置障碍物坐标参数二、图像编辑器2.1 安装GIMP2.1.1 命令行方式安装2.1.2 使用图形界面安装GIMP:2.2 实现过程三、ro…...
每日一题~中序后序遍历构造二叉树
原题链接:106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode) 题目描述: 思路分析: 后序遍历分析图 中序遍历分析图 不难看出后序遍历的结果中的最后一个元素就是根节点,倒数第二个元素则是根节点的…...
大型门户网站源码/seo网站优化方
对于二进制表示的float类型的2.5,其在内存中的表示为01000000 00100000 00000000 00000000,如果我们想打印出它在内存中是如何表示的,那么我们可以用1进行移位,与每个比特进行与运算,还是看看代码吧: 对…...
福州专业网站建设网络公司/百度应用商店官网
在说LINQ之前必须先说说几个重要的C#语言特性 一:与LINQ有关的语言特性1.隐式类型(1)源起在隐式类型出现之前,我们在声明一个变量的时候,总是要为一个变量指定他的类型甚至在foreach一个集合的时候,也要为遍历的集合的元素&#x…...
js网站登录怎么做/qq群推广网站
Description 给你一个无向图,N(N<500)个顶点, M(M<5000)条边,每条边有一个权值Vi(Vi<30000)。给你两个顶点S和T,求一条路径,使得路径上最大边和最小边的比值最小。如果S和T之间没有路径,输出”IMPOSSIBLE”&a…...
专业网站建设模板下载/什么软件可以推广自己的产品
给出凸包的定义: 简要说一下思路: 首先将所有点按照x从小到大(x同则y从小到大)排序 把p1,p2放入凸包,从p3开始,当新点在凸包‘前进’方向的左边时继续,否则依次删除最近加入凸包的点,…...
wordpress虚拟阅读/学电脑在哪里报名
深燃(shenrancaijing)原创作者 | 黎明编辑 | 魏佳2022年对于中国新造车是一个特殊的年份。这一年蔚小理交付了新车型,零跑去香港上了市,华为以问界之名造起了车,比亚迪超过特斯拉夺得销冠,曾经不被看好的哪…...
医药网站制作/如何在百度上添加自己的店铺
矩阵在图形变换中的应用 让每个点的横坐标扩大a倍,纵坐标扩大b倍 让每个点关于x轴翻转。 需要找到一个矩阵T > T . (x , y) (x , -y) 由(x , y)得,T需要为两列, 由(x , -y)得,T需要为两行。 > > 因为 ax by x c…...