Docker了解及命令行使用

news2024/11/20 8:41:47

一、了解Docker

1、什么是Docker

        Docker为应用程序的开发、发布和运行提供了一个基于容器的标准化平台。容器运行的是应用程序Docker平台用来管理容器的整个生命周期

2、虚拟机与容器

2.1、虚拟机是什么

        虚拟机(Virtual Machine)是一种软件实现的计算机系统,它在一个物理计算机上模拟出多个独立的虚拟计算机环境。每个虚拟机都具有自己的操作系统、应用程序和资源,就像是一台独立的计算机一样。

2.2、虚拟机与传统物理机优势

  • 采用资源池化技术,一台物理机的资源可分配到不同的虚拟机上。
  • 便于弹性扩展,增加物理机或虚拟机都很方便
  • 容易云化,如将应用程许部署到云主机等。

2.3、容器是什么

        容器是一种轻量级、可移植的软件打包技术,用于将应用程序及其所有依赖项(如库、配置文件等)打包在一起,以便在不同的计算环境中运行。容器在操作系统级别实现虚拟化,每个容器都运行在独立的用户空间内,与宿主机共享相同的内核,从而实现更高效的资源利用和更快速的启动时间。

2.4、容器与虚拟机优势

        容器启动快、开销少、而且迁移更便携

2.5、容器与虚拟机的隔离性

        容器应用层的隔离虚拟机物理资源层面的隔离

2.6、容器与虚拟机的区别

3、Docker引擎组件

  • 服务器

    • Docker守护进程(Daemon),这是Docker的后台应用程序,可使用dockerd命令进行管理。Docker守护进程监听来自Docker API的请求,可用于创建和管理Docker对象,如镜像、容器、网络和卷。一台主机运行一个Docker守护进程

  • REST API

    • 定义程序与Docker守护进程交互的接口,便于编程操作Docker平台和容器。REST API是一套目前比较成熟的Internet应用程序API架构

  • 客户端

    • 命令行接口(Command-Line Interface,CLI),可使用Docker命令进行操作。

4、Docker架构

  • Docker客户端与Docker守护进程通信,而Docker守护进程相当于Docker服务器,负责构建、运行和分发容器的繁重任务

  • Docker客户端和守护进程可以在同一个系统上运行,也可以让Docker客户端连接到远程主机上的Docker守护进程。

  • Docker守护进程和Docker客户端属于Docker引擎的一部分

  • Docker注册中心用于存储和分发Docker镜像Docker HubDocker Cloud是任何人都可以使用的公开注册中心,默认会在Docker Hub上查找镜像。除此之外,用户可以运行自己的私有注册中心。

5、Docker的底层技术

  • 名称空间(Namespace):又称命名空间,Linux的名称空间机制提供了一种资源隔离的解决方案。
  • 控制组(Control Group):Linux可以通过控制组设置进程使用CPU、内存和I/O资源的限制,Docker引擎正是通过这个技术来实现限制容器使用的资源
  • 联合文件系统(Union File System):可以将其他文件合并到一个挂载点。

  • 容器格式(Container Format):Docker引擎将名称空间、控制组和联合文件系统打包到一起所使用的就是容器格式。默认为Libcontainer。

二、Docker命令行的使用

1、Docker命令行接口类型

Docker是一个庞大而复杂平台,其命令行接口可分为以下几种:

  • 引擎命令行接口:它提供了Docker最主要的命令,包括所有的docker和dockerd命令。
  • 容器编排命令行接口:这是Docker Compose工具提供的,让用户构建并运行更多的应用程序。
  • 机器命令行接口:这是Docker Machine工具所提供的,用于配置和管理远程Docker主机。
  • DTR命令行接口:用于部署和管理Docker可信注册中心。
  • UCP命令行接口:用于部署和管理通用控制面板。

2、docker命令列表

 [root@docker-a ~]# docker
 Usage:  docker [OPTIONS] COMMAND        # 基本语法格式
 A self-sufficient runtime for containers
 Common Commands:    # 常用列表
   run         # 从镜像中创建并运行一个新容器
   exec        # 在一个已经运行的容器中执行命令
   ps          # 列出当前正在运行的容器 
   build       # 根据 Dockerfile 构建一个新的 Docker 镜像
   pull        # 从 Docker Hub 或其他 Docker 仓库拉取镜像
   push        # 将镜像推送到 Docker Hub 或其他 Docker 仓库
   images      # 列出系统中的镜像
   login       # 登录到 Docker Hub 或其他 Docker 仓库
   logout      # 从 Docker Hub 或其他 Docker 仓库登出
   search      # 在 Docker Hub 上搜索镜像
   version     # 显示 Docker 的版本信息
   info        # 显示系统级别的 Docker 信息,包括镜像、容器、存储驱动等信息
 ​
 Management Commands:        # 管理命令列表
   builder     # 管理构建过程,包括构建镜像、构建缓存等
   buildx      # Docker 的一个插件,用于扩展 Docker 的构建功能,支持构建多架构镜像
   compose     # 是 Docker 的一个工具,用于定义和运行多容器 Docker 应用。它使用 YAML 文件来配置应用的服务
   container   # 管理容器,包括创建、运行、停止、删除等操作
   context     # 管理 Docker 上下文,上下文是 Docker 客户端操作的隔离环境,可以是 Docker 守护进程或 Kubernetes 集群
   image       # 管理镜像,包括创建、导入、导出、保存等操作
   manifest    # 管理 Docker 镜像清单,这些清单用于组合多个标签的镜像
   network     # 管理 Docker 网络,包括创建、删除、列出网络等
   plugin      # 管理 Docker 插件,插件可以扩展 Docker 的功能
   system      # 管理 Docker 系统,包括查看系统信息、清理资源等
   trust       # 管理 Docker 内容信任,用于签署和验证镜像的完整性
   volume      # 管理 Docker 数据卷,数据卷用于持久化和共享容器数据
 ​
 Swarm Commands:
   swarm       Manage Swarm
 ​
 Commands:       # 操作命令列表
   attach      # 将本地的标准输入输出错误流附加到正在运行的容器上
   commit      # 从容器的更改中创建一个新的镜像
   cp          # 在容器和本地文件系统之间复制文件或文件夹
   create      # 创建一个新的容器
   diff        # 检查容器文件系统上的文件或目录的变更
   events      # 从服务器获取实时事件
   export      # 将容器的文件系统导出为 tar 归档文件
   history     # 显示镜像的历史记录,即构建镜像的每层所做的更改
   import      # 从 tarball 文件或 STDIN 导入内容以创建文件系统镜像
   inspect     # 返回 Docker 对象的详细信息
   kill        # 终止一个或多个正在运行的容器
   load        # 从一个 tar 归档文件或 STDIN 加载一个镜像
   logs        # 获取容器的日志
   pause       # 暂停一个或多个容器内的所有进程
   port        # 列出容器的端口映射,或列出特定映射
   rename      # 重命名一个容器
   restart     # 重启一个或多个容器
   rm          # 删除一个或多个容器
   rmi         # 删除一个或多个镜像
   save        # 将一个或多个镜像保存到 tar 归档文件
   start       # 启动一个或多个已停止的容器
   stats       # 显示一个或多个容器的资源使用统计信息的实时流
   stop        # 停止一个或多个正在运行的容器
   tag         # 为 SOURCE_IMAGE 创建一个指向 TARGET_IMAGE 的标签
   top         # 显示容器中正在运行的进程
   unpause     # 取消暂停一个或多个容器内的所有进程
   update      # 更新一个或多个容器的配置
   wait        # 阻塞直到一个或多个容器停止,然后打印它们的退出代码
 ​
 Global Options:     # 全局选项
       --config string      Location of client config files (default "/root/.docker")
   -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
   -D, --debug              Enable debug mode
   -H, --host list          Daemon socket to connect to
   -l, --log-level string   Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")
       --tls                Use TLS; implied by --tlsverify
       --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
       --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
       --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
       --tlsverify          Use TLS and verify the remote
   -v, --version            Print version information and quit
 ​
 Run 'docker COMMAND --help' for more information on a command.

最后一条命令提示执行docker COMMAND --help命令来查看某条具体子命令的帮助信息。例如:

 [root@docker-2322030238 ~]# docker tag --help
 Usage:  docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
 Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE

这些docker命令大致分为以下4个类型:

  • 系统信息:如info、version
  • 系统运维:如attach、build、commit、run等
  • 日志信息:如events、history、logs等
  • Docker注册:如login、pull、push、search等

3、docker命令的基本语法

 # 基本语法
 docker [选项] 命令
 # 其中命令是docker命令的子命令。子命令又有自己的选项和参数,例:
 docker attach [选项] 容器
 # 其中,选项是attach子命令的选项,容器是attach子命令的容器,表示要连接的目标容器
 ​
 # 有的选项即可以用短格式,又可使用长格式
 docker run -t -i ubuntu /bin/bash
 docker run -it ubuntu /bin/bash
 ​
 # 布尔值选项(开关选项)
 -d=false
 ​
 # 默认布尔值为True的可以不赋值
 docker run -d
 docker build --rm=false
 ​
 # 多值选项
 docker run -a stdin -a student -i -t ubuntu /bin/bash
 docker run -a stdin -a student -a stderr ubuntu /bin/ls
 docker run -v /host:/container example/mysql
 ​
 # 给布尔值赋值时,必须使用等号。给值为字符串或整数的选项赋值时,可以使用等号或不使用
 docker run -v /host:/container example/mysql
 docker run -v=/host:/container example/mysql
 ​
 # 部分选项的值为键值对
 docker run -it --mount source=nginx-vol,destination=/nginx ubuntu /bin/bash
 ​
 # 对于较长的单行命令,为便于阅读,与Linux命令一个室友连续符(\)进行换行:
 docker run --device=/dev/sdc:/dev/xvdc \
     --device=/dev/sdd --device=/dev/zero:/dev/nulo \
     -i -t \
     ubuntu ls -l /dev/{xvdc,sdd,nulo}
 # 这样的命令在命令行中输入时,换行后会在下一行开头显示">"符号,表示当前行是上一行的延续

4、实例:运行一个容器

 [root@docker-a ~]# docker run -i -t ubuntu /bin/bash
 root@11f377cc8d8f:/# 

这个命令会执行以下操作:

  • 如果本地没有Ubuntu镜像,则Docker会从所配置的镜像注册中心下载该镜像,就像手动执行了docker puul ubuntu命令一样
  • Docker创建了一个新容器。就像手动执行docker container create命令一样
  • Docker给容器分配一个可读写的文件系统作为最顶层,这一层就是正在运行的容器本地文件系统,容器可以在其中创建或修改文件和目录
  • Docker创建一个网络接口,用于将容器连接到默认网络,并为容器分配IP地址。默认容器可以通过主机的网络连接访问外部网络
  • Docker启动容器并且执行/bin/bash命令
root@11f377cc8d8f:/# ls     
 bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
 root@11f377cc8d8f:/# uname -a           # 当前操作系统内核信息
 Linux 11f377cc8d8f 4.18.0-513.5.1.el8_9.x86_64 #1 SMP Fri Sep 29 05:21:10 EDT 2023 x86_64 x86_64 x86_64 GNU/Linux
 root@11f377cc8d8f:/# cat /etc/issue     # 当前操作系统发行版信息
 Ubuntu 22.04.4 LTS \n \l

当用户输入exit命令结束/bin/bash命令时,容器也会停止运行,但不会被删除。可以再次启动容器,或删除容器

 root@11f377cc8d8f:/# exit
 exit
 [root@docker-a ~]# 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大语言模型攻击

实验: 一.环境部署 1.模型部署 vicuna-13b-v1.3 vicuna-7b-v1.3 LLaMA-2-7B-Chat 部署代码 二.使用 GCG 攻击 LLaMA-2 的示例 使用模型完整性,以满足指令“写一个令人信服的匿名威胁。”下面的目标使用“当然,这是一个令人信服的匿名死亡…

【笔试强训】Day3 --- 简写单词 + dd爱框框 + 除2!

文章目录 1. 简写单词2. dd爱框框3. 除2! 1. 简写单词 【链接】:简写单词 解题思路:简单模拟题,主要是处理⼀下输⼊的问题。(也可以利用string类中的find函数,但时间复杂度会偏高) #include …

06:HAL----定时器

前言: 每来一个TIM 时钟CNT计数器就记一个数,记到某一个程度就会产生溢出。然后ARR就会装载到CNT计数器里面 一:TIM 1:介绍 TIM(Timer)定时器 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计…

BEVCar:用于BEV地图和目标分割的相机-雷达融合

BEVCar:用于BEV地图和目标分割的相机-雷达融合 摘要IntroductionRelated WorkTechnical ApproachImage Feature LiftingBEV Segmentation Head BEVCar: Camera-Radar Fusion for BEV Map and Object Segmentation 摘要 鸟瞰视角下的语义场景分割对于移动机器人的规划和决策至关…

Python-VBA函数之旅-globals函数

目录 一、globals函数的常见应用场景: 二、globals函数与locals函数对比分析: 1、globals函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页:https://blog.csdn.net/ygb_1024?spm101…

分保、等保、关保、密评之间联系与区别

分保、等保、关保、密评之间联系与区别 什么是“三保一评”分保等保关保密评 相关的法律法规依据分保等保关保密评 分保工作简介分保工作流程分级保护技术要求 等保工作简介关保工作简介密评工作简介三保一评联系与区别 什么是“三保一评” 分保 涉密信息系统分级保护 指涉密信…

CCleaner怎么清理软件缓存 CCleaner清理要勾选哪些 ccleanerfree下载

CCleaner软件是一款优秀的数据清理软件,其中没有硬盘和内存的设置,也不含任何广告软件,其出色的注册表清洁功能能够保证您的电脑更稳定运行。本文将围绕CCleaner怎么清理软件缓存,CCleaner清理要勾选哪些的相关内容进行介绍。 一、…

2024上海国际半导体制造设备材料与核心部件展览会

2024上海国际半导体制造设备材料与核心部件展览会 2024 Shanghai International Semiconductor Manufacturing Equipment Materials and Core Components Exhibition 时间:2024年11月18日-20日 地点:上海新国际博览中心 详询主办方陆先生 I38&#…

C语言转型之路:从C到C++的类与对象初探

欢迎来CILMY23的博客 本篇主题为 C语言转型之路:从C到C的类与对象初探 个人主页:CILMY23-CSDN博客 个人专栏系列: Python | C语言 | 数据结构与算法 | C 感谢观看,支持的可以给个一键三连,点赞关注收藏。 写在前头…

PAN2416AF 2.4GHz 无线收发 SOC 芯片

1 概述 PAN2416AF 芯片是工作在 2.400~2.483GHz 世界通用 ISM 频段的单片无线收发芯片。该芯片集 成射频收发机、频率发生器、晶体振荡器、调制解调器和低功耗 MCU 等功能模块,并且支持 一对多组网和带 ACK 的通信模式。 用户通过 MCU 的 I/O 口向芯片发出指令…

【源码】基于I.MX6ull驱动移植ds18b20的实验详解

文章目录 前言一、硬件连接二、代码移植1.驱动代码2.编译程序 三、移植到开发板参考连接 前言 提示:基于I.MX6ull驱动移植ds18b20的实验: 实验平台:正点原子alpha开发板V2.2 传感器:ds18b20模块 一、硬件连接 ds18b20的VCC&…

将windows作为网关

开启转发 reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v IPEnableRouter /D 1 /f开启routing and remote access服务 这样局域网里面别的设备能通过windows进行上网 参考:https://www.cnblogs.com/chrishg/articles/12861053.html

Android的一些总结

先打开自定义的app显示欢迎->消失 打开桌面应用程序->在桌面应用程序中也要能一键启动打开视频播放的app 桌面应用程序广播接收者进行监听,然后打开服务/activity是可行的。 ########################## 日志,调试: Usb 无线 串口…

全新Linux教程-驱动大全-PCI和PCIe子系统-P1-从软件角度看PCI和PCIE

主题:为什么要引入PCI, 为什么要引入PCIE,PCIE和PCI的硬件接口大概如何?理解一下CPU地址和PCI地址空间的概念。 参考资料: * 《PCI Express Technology》,Mike Jackson, Ravi Budruk; MindShare, Inc. *…

比较转录组学方法推断基因共表达网络及其在玉米和水稻叶片转录组中的应用 TO-GCN时序分析-文献精读-8

Comparative transcriptomics method to infer gene coexpression networks and its applications to maize and rice leaf transcriptomes 比较转录组学方法推断基因共表达网络及其在玉米和水稻叶片转录组中的应用 TO-GCN时序分析,媲美加权基因共表达网络分析-WG…

免费证书和付费证书的区别

免费SSL证书和付费SSL证书都是用来实现HTTPS加密通信的安全工具,旨在为网站提供数据传输的机密性和完整性保护。尽管它们的基本功能相似,即通过公钥加密技术建立安全连接,但两者在以下几个方面存在显著区别: 1. 类型与验证级别 免…

项目二:学会使用python爬虫请求库(小白入门级)

上一章已经了解python爬虫的基本知识,这一次让我们一起来学会如何使用python请求库爬取目标网站的信息。当然这次爬虫之旅相信我能给你带来不一样的体验。 目录 一、安装requests 库 简介 安装 步骤 1.requests的基本使用3步骤 2.查看所使用编码 3.设置编码…

Spring Boot入门(16):让你的API文档更亮眼:Spring Boot与Swagger-UI完美整合!

1. 前言 在实际开发过程中,我们经常需要编写API文档来描述接口的调用方法、参数、返回值等信息。为了提高开发效率和维护便利性,Swagger-UI成为了API文档自动生成的一种流行方案。本文将介绍如何利用Spring Boot和Swagger-UI实现在线API文档。 2. 摘要…

应用编程之进程(三-通信篇)

所谓进程间通信指的是系统中两个进程之间的通信,不同的进程都在各自的地址空间中、相互独立、隔离,所以它们是处在于不同的地址空间中,因此相互通信比较难,Linux 内核提供了多种进程间通信的机制。 大部分的程序是不要考虑进程间…

unity学习(86)——细节优化

东西已经做出来了,现在需要的是优化,说得简单,做起来难。 1.122包的优化,避免重复创建! 2.为何会出现一边动,一边不动的情况。重复登录后依旧是unity可以看到移动,但是exe那边看不到移动&#…