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--多容器管理工具

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux中创建用户要自己设置密码

因为不知道Linux默认设置的密码,没办法接下来愉快的使用。如下: 而想要新建Linux用户密码,请您执行以下步骤: . 1.打开终端并以root身份登录; 2.输入命令“useradd username",其中username为您新建的用户名; 3.使用命令“passwd usernam…

SDXL prompt 笔记

模型 模型有两个,分别是 stable-diffusion-xl-base-1.0、stable-diffusion-xl-refiner-1.0。 base 模型是用来做文生图,refiner 模型是用来做图生图的。 SDXL 模型之 base、refiner 和 VAE_云水木石的博客-CSDN博客 分辨率 默认是1024*1024&#xf…

Springboot2 Pandas Pyecharts 量子科技专利课程设计大作业

数据集介绍 1.背景 根据《中国科学:信息科学》期刊上的一篇文章,量子通信包括多种协议与应用类型: 基于量子隐形传态与量子存储中继等技术,可实现量子态信息传输,进而构建量子信息网络,已成为当前科研热点&…

GDB的TUI模式(文本界面)

2023年9月22日,周五晚上 今晚在看GDB的官方文档时,发现GDB居然有文本界面模式 TUI (Debugging with GDB) (sourceware.org) GDB开启TUI的条件 GDB的文本界面的开启条件是:操作系统有适当版本的curses库 The TUI mode is supported only on…

ArrayList 的自动扩容机制

触发扩容 ArrayList 是一个数组结构的存储容器,默认情况下,数组的长度是 10 当然我们也可以在构建 ArrayList 对象的时候自己指定初始长度。随着在程序里面不断的往 ArrayList 中添加数据,当添加的数据达到 10 个的时候,ArrayLis…

web:[GXYCTF2019]Ping Ping Ping

题目 点进题目,页面只显示/?ip,没有其他信息 联系到题目名为ping,猜测题目于ping地址有关,先尝试一下 构造payload http://31e941af-c0d7-49c9-a3fe-84cb13d8adae.node4.buuoj.cn:81/?ip127.0.0.1 这里猜测可能为远程命令执行…

Linux(CentOS)安装msf

目录 一、安装MSF 1.1 在线安装 1.2 离线安装 二、安装Postgresql数据库 一、安装MSF 1.1 在线安装 需要挂梯子!挂完梯子需要reboot重启,多试几次就可以,国内网络我试了很久都不行。没条件没梯子的看1.2离线安装 cd /opt curl https://ra…

Cortex-M4之FPU单元

最近在学习实时操作系统,以下是我对学习实时操作系统过程中做的一些笔记。 一、FPU单元 在 Coretex-M4 处理器中有一个可选的单精度 FPU 单元,一般 STM32F429 就有 FPU 单元, 如果使能了 FPU 单元的话就可以使用它来对单精度浮点数进行计算…

【探索Linux世界|中秋特辑】--- 倒计时和进度条的实现与演示

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【Linux专栏】🎈 本专栏旨在分享学习Linux的一点学习心得,欢迎大家在评论区讨论💌 演示环境&#xff1…

栈的详细实现

一 定义 概念 栈是一种特殊的线性表,只允许在固定的一端进行操作。该端叫做栈顶,相对的另一端叫做栈底。 符合LIFO(后进先出)的规则 关于栈顶的两个操作: 压栈/入栈/进栈:在栈顶部插入数据 出栈:栈顶删…

2023华为杯研究生数学建模C题分析

完整的分析查看文末名片获取! 问题一 在每个评审阶段,作品通常都是随机分发的,每份作品需要多位评委独立评审。为了增加不同评审专家所给成绩之间的可比性,不同专家评审的作品集合之间应有一些交集。但有的交集大了,则…

软件测试缺陷报告详解

【软件测试行业现状】2023年了你还敢学软件测试?未来已寄..测试人该何去何从?【自动化测试、测试开发、性能测试】 缺陷报告是描述软件缺陷现象和重现步骤地集合。软件缺陷报告Software Bug Report(SBR)或软件问题报告Software Pr…

《动手学深度学习 Pytorch版》 7.5 批量规范化

7.5.1 训练深层网络 训练神经网络的实际问题: 数据预处理的方式会对最终结果产生巨大影响。 训练时,多层感知机的中间层变量可能具有更广的变化范围。 更深层的网络很复杂容易过拟合。 批量规范化对小批量的大小有要求,只有批量大小足够…

智能合约漏洞案例,NeverFall 漏洞复现

智能合约漏洞案例,NeverFall 漏洞复现 1. 漏洞简介 https://twitter.com/BeosinAlert/status/1653619782317662211 2. 相关地址或交易 https://explorer.phalcon.xyz/tx/bsc/0xccf513fa8a8ed762487a0dcfa54aa65c74285de1bc517bd68dbafa2813e4b7cb 攻击交易 攻击…

Python绘制X-bar图和R图 | 统计过程控制SPC

X-bar图和R图是用于统计过程控制(SPC)的两种常用工具,用于监测过程的平均值和范围(变异性)。这些图有助于识别过程中的变化和异常,以便及时采取纠正措施。 **X-bar图(平均值控制图)…

pcl--第十二节 2D和3D融合和手眼标定

2D&3D融合 概述 截止目前为止,我们学习了机器人学,学习了2D和3D视觉算法。我们也学习了2D相机(图像数据的来源)和3D相机(点云数据的来源)工作原理。 实际上,我们最终要做的,是一个手眼机器人系统。在这个系统里&#xff0c…

zookeeper + kafka

Zookeeper 概述 Zookeeper是一个开源的分布式服务管理框架。存储业务服务节点元数据及状态信息,并负责通知再 ZooKeeper 上注册的服务几点状态给客户端 Zookeeper 工作机制 Zookeeper从设计模式角度来理解: 是一个基于观察者模式设计的分布式服务管理框架&…

微信小程序底部安全区域高度获取

CSS 属性 safe-area-inset-bottom safe-area-inset-bottom 就是安全区的高度 padding-bottom:env(safe-area-inset-bottom); wx.getSystemInfoSync() wx.getSystemInfoSync()可以获取系统信息 let system wx.getSystemInfoSync() let bottomSafe system.screenHeight -…

yolov5使用最新MPDIOU损失函数,有效和准确的边界盒回归的损失,优于GIoU/EIoU/CIoU/EIoU(附代码可用)

文章目录 1. 论文1.1. 主要目的1.2. 设计思路2 代码3.总结1. 论文 MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression (一个有效和准确的边界框损失回归函数) 论文地址 1.1. 主要目的 当预测框与边界框具有相同的纵横比,但宽度和高度值完全不同时,大多数…

【湖科大教书匠】计算机网络随堂笔记第1章(计算机网络概述)

目录 1.1、计算机网络在信息时代的作用 我国互联网发展状况 1.2、因特网概述 1、网络、互连网(互联网)和因特网 2、因特网发展的三个阶段 因特网服务提供者ISP(Internet Service Provider) 基于ISP的三层结构的因特网 3、因特网的标准化工作 4、因特网的…