docker基本管理和概念

news2025/1/16 9:59:39

1、定义:一个开源的应用容器引擎,基于go语言开发,运行在liunx系统中的开源的、轻量级的“虚拟机”

docker的容器技术可以在一台主机上轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器

docker的宿主机是liunx系统,集装箱可以理解为相互隔离的容器(组件或应用程序APP),每个容器都是一个独立的应用程序

2docker设计宗旨

build,ship and run any app,anywhere一次封装,到处运行

build:封装好的程序,只要部署即可使用,一次封装

ship and run any app:一次封装完成之后的程序可以在任何环境运行

anywhere:任意宿主机

过程:封装、发布、部署、运行、维护、运行、销毁。可以一整套的方式管理应用程序的声明周期

3docker优点

(1)灵活:再复杂的应用也可以实现容器化

(2)轻量级:小型的、不完整的、最小化封装的程序,与宿主机共享一个内核

(3)可互换:可以随时升级、更新

(4)便携式:本地、云平台都可以构建、部署(在任何地方运行)

(5)可扩展:自动分发容器副本(自动进行部署)

(6)可堆叠:在一个宿主机上可以创建不同版本的同一容器,也可以是多个相同版本的同一容器

4、liunx命名空间namespace

namespace:是一种内核特性,允许将一组系统资源隔离,在一个命名空间的进程在系统中可以拥有独立的资源

【面试题】namespace的六项隔离措施

基于这六个隔离项,实现容器和容器之间、容器和宿主机之间的资源隔离

①UTS

系统调用参数:CLONE_NEWUTS

隔离内容:主机与域名。在UTS命名空间中创建进程,进程可以看见自己的主机与域名,与其他进程分隔开

②IPC

系统调用参数:CLONE_NEWIPC

隔离内容:信号量、消息队列、共享内存。在IPC命名空间中,进程可以拥有独立的进程间通信资源

③PID

系统调用参数:CLONE_NEWPID

隔离内容:每个进程都有自己独立的进程号空间

④network

系统调用参数:CLONE_NEWNET

隔离内容:网络设备、网络栈、端口。每个进程都有一个自己独立的网络资源、端口号

⑤mount

系统调用参数:CLONE_NEWNS

隔离内容:挂载点。在mount命名空间中,每个进程或设备都有一个自己的文件系统挂载点,相互之间互不干扰

⑥user

系统调用参数:CLONE_NEWUSER

隔离内容:用户和用户组

docker下载链接:https://hub.docker.com/

5、docker的核心组件

  1. 镜像:docker的基础,最小单位,类似于虚拟机ISO文件,可可理解为压缩包,但不是解压即用,是一个环境部署的脚本,甚至包含完整的操作系统。一个镜像就是一个可执行的包,包里包含运行这个程序的所有内容(代码、配置文件、环境变量等)
  2. 容器:docker的容器是基于镜像运行起来的实例,可以启动、停止、删除。每一个容器是相互隔离的,互不可见
  3. 仓库:保存镜像。所有的镜像都是从仓库中获取的。分为公有仓库和私有仓库。在linux系统中下载到本地,镜像、容器、日志默认在/var/lib/docker中

6、docker与传统虚拟机之间的区别【面试题。应届】

特性

docker

虚拟机

启动速度

秒级

分钟级

计算能力损耗

几乎无

损耗50%

性能

接近原生系统

弱于原生系统

系统支持量

上千个

根据硬件系统条件(几十个)

隔离性

资源隔离

完全隔离

安全性

安全性差

安全性好

7安装docker【docker只支持64位系统,最少2核4G】

(1)安装依赖包

yum -y install yum-utils device-mapper-persistent-data lvm2

yum-utils

提供yum-cofig-manager工具,可以远程自定义获取yum源

device-mapper-persistent

进行逻辑卷管理的通用设备映射机制

(2)设置阿里云镜像源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(3)安装 Docker-CE并设置为开机自动启动

yum -y install docker-ce docker-cs-cli contarnerd.io

systemctl start docker.service

systemctl enable docker.service

docker-ce

docker的社区版,面向开发者、小型团队和个人使用。免费

docker-cs-cli

提供docker的命令行工具

contarnerd.io

负责管理容器的生命周期(创建、运行、停止、继续、销毁)

docker安装完毕

(4)镜像加速下载

浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置

8、docker命令

查看 docker 版本信息

docker version

docker 信息查看

docker info

Docker 镜像操作

搜索镜像

docker search 关键字

获取镜像

docker pull 镜像名称:标签

查看下载到本地的所有镜像

docker images

根据镜像的唯一标识 ID 号,获取镜像详细信息

docker inspect 镜像ID号

为本地的镜像添加新的标签

docker tag 名称:标签 新名称:新标签

删除镜像

docker rmi 仓库名称:标签

存储镜像:将镜像保存成为本地文件

docker save -o 存储文件名 存储的镜像

载入镜像:将镜像文件导入到镜像库中

docker load -i 存出的文件

上传镜像

docker tag nginx:latest soscscs/nginx:web

#新的标签时必须在前面加上自己的dockerhub的username

docker login

登录公共仓库

Username:annie1234

password:【常用密码】

docker push soscscs/nginx:web  #上传镜像

Docker 容器操作

创建容器

docker create [选项] 镜像

查看容器的运行状态

docker ps -a(所有容器)

docker ps (正在运行的容器)

启动容器

docker start 容器的ID/名称

直接创建并运行容器

docker run -itd --name 容器名称 镜像:标签 /bin/bash

进入容器(进入容器前,确保容器正在运行)

docker exec -it 容器ID/名称 /bin/bash

退出容器

exit

终止容器运行

docker stop 容器的ID/名称

本地文件复制到容器

docker cp 本地文件存放路径 容器名称:存放文件路径

容器的导出与导入

导出格式:docker export -o 文件名 容器ID/名称

导入格式:docker import 文件名 -- 镜像名称:标签

删除容器(正在运行的容器)

强制删除:docker rm -f 容器ID/名称

先停再删:docker stop 容器ID/名称

          docker rm 容器ID/名称

批量停止容器

docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop

批量删除所有容器【慎用】

docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm

批量删除none镜像

docker images | grep none | awk '{print $3}' | xargs docker rmi

批量清理后台停止的容器

docker rm $(docker ps -a -q)

①查看 docker 版本信息

docker version

②查看本机docker所有信息

docker info

docker安装完毕后,客户端和服务端都运行在一台机器上

Client

客户端

Server

服务端

overlay2

docker使用的文件系统驱动

overlayFS

overlay file system联合文件系统,用于适配宿主机的文件系统,可以自动适配

(1)docker的镜像操作

①搜索镜像

格式:docker search 关键字

name

镜像名称

description

描述信息

stars

点赞数

official

官方镜像

automated

自动化构建

②获取镜像(拉取镜像)

格式:docker pull 镜像名称[:标签]

#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签

#加上标签,下载的就是该版本的镜像

③查看下载到本地的所有镜像

docker images

repository

镜像所属的仓库

tag

镜像的标签信息,标记同一个仓库中的不同镜像

image id

镜像的唯一ID 号,唯一标识一个镜像(不重复)

created

镜像创建时间

size

镜像大小

④根据镜像的唯一标识 ID 号,获取镜像详细信息

格式:docker inspect 镜像ID号

lowerDir

底层目录。整个docker的底层文件系统,是一个或多个镜像文件的根文件系统

UpperDir

可写层。可以在容器运行时,在容器内进行写操作,实现容器的可写性

MergeDir

合并目录。lowerDir和UpperDir合并起来形成容器的文件系统,用户看到的也是这个合并视图

workDir

工作目录。处理文件系统变更,当在容器内进行写操作时,overlayfs使用workDir追踪文件系统的变更

⑤为本地的镜像添加新的标签

格式:docker tag 名称:标签 新名称:新标签

⑥删除镜像

方法1:

格式:docker rmi -f 镜像ID  #强制删除镜像

方法2:

格式:docker rmi 镜像名称:标签

#当一个镜像有多个标签时,只是删除其中指定的标签

格式:docker rmi 镜像ID号

#会彻底删除该镜像

注意:一个镜像有多个标签,删除时只是删除标签;只剩最后一个,删除的是镜像本身。若镜像已被容器使用,先停止容器,再删除容器,最后删除镜像

⑦存储镜像:将镜像保存成为本地文件

格式:docker save -o 存储文件名 存储的镜像

⑧载入镜像:将镜像文件导入到镜像库中

格式:docker load -i 存储的文件

⑨上传镜像

docker tag nginx:latest annie1234/nginx:1.22.0

#添加新的标签时必须在前面加上自己的dockerhub的用户名

docker login

#登录公共仓库

Username:annie1234

password:【常用密码】

docker push annie1234/nginx:1.22.0  #上传镜像

(2)docker容器操作

①创建容器

格式:docker create -it 镜像

-it

宿主机和容器形成一个可以交互的shell命令行

-i

表示让容器开启标准输入,接收用户的输入命令

-t

给容器分配终端(虚拟的伪终端)

注意:创建容器后自动创建一个docker0

②查看容器的运行状态

docker ps -a #显示所有的容器

docker ps    #显示正在运行的容器

③启动容器

格式:docker start 容器的ID/名称

up表示容器正在运行

exited表示容器退出,不运行

④直接创建并运行容器

格式:docker run -itd --name 容器名称 镜像:标签 /bin/bash

-d

可以让创建的容器以守护进程形式在后台运行,容器运行的程序不会结束

问题1:没有镜像能不能直接run?

可以,会自动拉取镜像

问题2:运行的程序是什么?不运行会怎样?

/bin/bash。-d结合,会给容器一个直接运行的命令,后台没有指令,容器没有可运行的程序,将会直接退出

-it

形成交互式的shell命令

-name

给容器命名

nginx:latest

镜像名称和标签,若本地没有可以自动下载

⑤进入容器(进入容器前,确保容器正在运行)

格式:docker exec -it 容器ID/名称 /bin/bash

⑥退出容器exit

⑦终止容器运行

格式:docker stop 容器的ID/名称

⑧本地文件复制到容器

格式:docker cp 本地文件存放路径 容器名称:存放文件路径

⑨容器文件复制到本地

⑩容器的导出与导入

导出格式:docker export -o 文件名 容器ID/名称

导入格式:docker import 文件名 -- 镜像名称:标签

注意:导出的容器仍然是一个镜像,必须要运行run或create才能成为容器;已经配置好的导出的容器镜像,可以部署到其他主机直接使用(工作中,我们用的都是开发已设置、配置好的容器镜像)

docker特性:即使在创建过程中报错,容器仍会被创建,但此容器不可用;导入镜像,或者导入容器镜像,若标签和已有标签重复,导入的镜像或者容器镜像tag变成none

⑪删除容器(正在运行的容器)

格式:docker rm -f 容器ID/名称

方法1:强制删

方法2:先停再删

⑫批量操作【不建议使用批量操作】

批量停止容器

docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop

批量删除所有容器【慎用】

docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm

批量删除none镜像

docker images | grep none | awk '{print $3}' | xargs docker rmi

批量清理后台停止的容器

docker rm $(docker ps -a -q)

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

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

相关文章

Halcon threshold_sub_pix (Operator)

read_image(Image,fabrik) threshold_sub_pix(Image,Border,35) dev_display(Border)Image是输入的原始图像,Threshold是设定的阈值,Width和Height是像素值计算区域的大小,ThresholdedRegion是经过分割后得到的二值化结果。 在对图像进行二值…

Stable Diffusion AI绘画系列【20】:美丽动人的雀羽婚纱风,你心动了吗?

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

springboot基础(80):redis geo的应用

文章目录 前言redis GEO如何从地图上获取经纬度springboot 的相关方法调用准备redis服务器引用的依赖预设位置的keyGEOADD 添加位置GEORADIUS 获取指定经纬度附件的停车场(deprecated)GEORADIUS 获取指定成员附件的停车场(deprecated&#xf…

百面嵌入式专栏(岗位分析)大疆嵌入式工程师【通信/流媒体】

文章目录 一、岗位简介二、解析2.1、网络协议2.2、音视频传输算法2.3、大规模音视频会议或直播系统 三、简历 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将对大疆嵌入式工程师【通信/流媒体】岗位进行分析 。 一、…

uni-app 微信小程序之好看的ui登录页面(三)

文章目录 1. 页面效果2. 页面样式代码 更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程…

Redis--12--Redis分布式锁的实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Redis分布式锁最简单的实现如何避免死锁?锁被别人释放怎么办?锁过期时间不好评估怎么办?--看门狗分布式锁加入看门狗 redissonRe…

Rask AI引领革新,推出多扬声器口型同步技术,打造本地化内容新纪元

“ Rask AI是一个先进的AI驱动视频和音频本地化工具,旨在帮助内容创作者和公司快速、高效地将他们的视频转换成60多种语言。通过不断创新和改进产品功能,Rask AI正塑造着未来媒体产业的发展趋势。 ” 在多语种内容创作的新时代,Rask AI不断突…

C++新经典模板与泛型编程:将trait类模板用作模板参数

将trait类模板用作模板参数 template<typename T> struct SumFixedTraits;template<> struct SumFixedTraits<char> {using sumT int;static sumT initValue() {return 0;} };template<> struct SumFixedTraits<int> {using sumT __int64;sta…

【PTA-C语言】编程练习4 - 数组Ⅰ

如果代码存在问题&#xff0c;麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 编程练习4 - 数组Ⅰ&#xff08;1~7&#xff09; 7-1 评委打分&#xff08;分数 10&#xff09;7-2 组合数的和&#xff08;分数 10&#xff09;7-3 找不同&#xff08;分数 15&#xff09;7-4 利用二分查找…

在前端开发中,什么是SEO(Search Engine Optimization)?如何优化网站的SEO?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

聚观早报 |华为畅享 70正式开售;梦饷科技双12玩法

【聚观365】12月8日消息 华为畅享 70正式开售 梦饷科技双12玩法 华为Mate X5应对火海挑战 谷歌发布AI模型Gemini 字节跳动开启新一轮回购 华为畅享 70正式开售 精致外观与创新科技兼具的华为畅享 70正式开售&#xff0c;1199元起搭载6000mAh超大电池&#xff0c;带来超强…

高并发爬虫用Python语言适合吗?

不管你用什么语言没在进行高并发前&#xff0c;有几点是需要考虑清楚的&#xff0c;&#xff1b;例如&#xff1a;数据集大小&#xff0c;算法、是否有时间和性能方面的制约&#xff0c;是否存在共享状态&#xff0c;如何调试&#xff08;这里指的是日志、跟踪策略&#xff09;…

如何对售后服务的全流程进行精细化的管理?

——“如何对售后服务的全流程进行精细化的管理&#xff1f;” ——“售后又是一个十分复杂的过程&#xff0c;仅靠手工或者电子表格记录这些内容&#xff0c;肯定是低效率、易出错的。最好的办法是借助合适的管理工具进行精细化的过程管理。” 假设你购买了一台新的家用电器…

大规模敏捷的7个容易被误解的真相

大规模敏捷不只是将敏捷实践从团队扩展到组织&#xff0c;而是需要改变思维和组织架构&#xff0c;将以管理为主的组织观念转变为以人为中心的组织观念&#xff0c;将组织改造为简化、自治的团队&#xff0c;实现可持续的价值交付。原文: The Uncomfortable Truth of Scaling A…

selenium 解决 id定位、class定位中,属性值带空格的解决办法

一、前置说明 selenium遇到下面这种元素&#xff1a; <th id"demo id" class"value1 value2 value3 ">1、虽然id一般不会有空格&#xff0c;但是前端错误的这种写法(如下图)&#xff0c;会造成使用id定位不到元素&#xff0c;如&#xff1a; find…

Windows11如何找到桌面聚焦图片的位置并获取(不是锁屏聚焦图片的位置)

如题&#xff0c;windows11有个独享功能&#xff0c;在win10及之前里都没有&#xff0c;即在桌面的个性化设置背景里&#xff0c;可以直接选择使用windows聚焦&#xff0c;让聚焦来给桌面换背景&#xff0c;如下&#xff1a; 注意&#xff0c;这是设置桌面的背景图片为聚焦&am…

深入理解网络 I/O 多路复用:SELECT、POLL

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…

K-means算法通俗原理及Python与R语言的分别实现

K均值聚类方法是一种划分聚类方法&#xff0c;它是将数据分成互不相交的K类。K均值法先指定聚类数&#xff0c;目标是使每个数据到数据点所属聚类中心的总距离变异平方和最小&#xff0c;规定聚类中心时则是以该类数据点的平均值作为聚类中心。 01K均值法原理与步骤 对于有N个…

Redis安全与性能

文章目录 第1关&#xff1a;持久化第2关&#xff1a;复制第3关&#xff1a;Redis事务与流水线 第1关&#xff1a;持久化 1、创建快照的方式有&#xff1a; A、执行 SAVE 命令 B、执行 BESAVE 命令 C、使用 save 选项配置自动快照 D、通过客户端发送关闭服务器请求 E、以上…

Python---time库

目录 时间获取 时间格式化 程序计时 time库包含三类函数&#xff1a; 时间获取&#xff1a;time() ctime() gmtime() 时间格式化&#xff1a;strtime() strptime() 程序计时&#xff1a;sleep() perf_counter() 下面逐一介绍&#…