docker的相关知识

一、docker的架构

docker包括三个基本概念:

  • 镜像(image):是一个文件,里面包含了一个微型操作系统+核心代码程序+依赖库环境。镜像文件越小越好
  • 容器(container):运行镜像的地方,容器本质上是一个进程,需要消耗cpu、内存、磁盘、网络等资源
  • 仓库(repository):分为公共镜像仓库和私人镜像仓库,用来保存镜像的

二、docker容器的使用

容器状态

1、up(运行状态)
2、create(新建状态)
3、exited(退出状态,就是容器没有启动,exited(1)是故障导致退出,exitrd(0)是正常退出)

容器相关命令

启动容器

docker run -d -p 宿主机端口:容器端口 --name "容器名称" "镜像"

参数说明
-d:后台允许
-p:宿主机和容器的端口之间的一个映射; 前面的是宿主机的端口,必须唯一
后面的是容器的端口,可以一样

查看所有容器
不接-a参数就查看正在运行的容器,接-a查看包括不在运行的容器

docker ps -a

启动、停止、重启或删除容器

启动容器:docker start
关闭容器:docker stop
重启容器:docker restart
删除容器:docker rm

查看容器进程

docker top "容器名"

查看容器的配置和相关信息

docker inspect

实时查看容器的资源使用统计信息

docker stats

进入容器
这里我们以MySQL为例子,加入我们创建了一个mysql的容器,我们想进入这个容器,就可以进行以下操作

docker exec -it mysql容器名称 bash

容器的网络类型

在 Docker 中,你可以使用以下命令创建一个用户自定义网络类型:

sudo docker network create -d bridge --subnet=192.168.100.0/24 my-bridge

上述命令中:

  • docker network create:用于创建 Docker 网络的命令。
  • -d bridge:指定网络驱动类型为bridge,这是一种常见的网络类型,类似于 Docker 默认的桥接网络。
  • –subnet=192.168.100.0/24:定义网络的子网范围,这里表示子网地址为192.168.100.0,子网掩码为255.255.255.0。
  • my-bridge:为创建的网络指定一个名称,你可以根据需要自定义这个名称。

创建好网络后,你可以使用以下命令将容器连接到该网络:

sudo docker run -d --name my-service --network=my-bridge nginx

这样,名为my-service的容器就会连接到my-bridge网络中,并使用该网络的配置进行通信。

1、bridge模式(默认模式)

2、host模式:使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好
在这里插入图片描述

3、none模式:使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等

这种网络模式下容器只有lo回环网络,没有其他网卡。none模式可以在容器创建时通过–network=none来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性

在这里插入图片描述

4、container模式:这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。

5、overlay:overlay网络用于连接不同机器上的docker容器,允许不同机器上的容器相互通信,同时支持对消息进行加密(实现跨主机的docker容器之间的通信)

三、镜像使用

列出镜像列表

docker images

在这里插入图片描述

各选项说明:

  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

拉取或推送镜像

拉取镜像:docker pull
推送镜像:docker push

将源码包制作成镜像

docker load -i

将镜像的源码包保存到linux系统

docker save -o

设置镜像标签

docker tag

删除镜像

docker rmi

四、docker底层技术

每个容器里都有一个微型的操作系统,但是操作系统里的内核是使用宿主机的内核

namespace(命名空间)

Namespace 是 Linux 内核提供的一种资源隔离机制。它使得在同一操作系统内核上运行的不同进程,能够拥有各自独立的资源视图,仿佛运行在不同的操作系统环境中。

1、Network Namespace(网络相关):隔离网络资源,包括网络设备、IP 地址、路由表、端口等。
2、PID Namespace(进程相关):提供独立的进程 ID(PID)空间,使得在不同的 PID Namespace 中,进程的 PID 编号可以重复。
3、IPC Namespace(进程间的通信):隔离进程间通信(Inter-Process Communication,IPC)资源,如信号量、消息队列和共享内存等。
4、Mount Namespace(文件系统相关):隔离文件系统的挂载点,使得不同的 Mount Namespace 可以有不同的文件系统挂载视图。
5、UTS Namespace(时间相关):用于隔离系统的主机名和域名。
6、User Namespace:隔离用户和用户组 ID 空间,使得容器内的进程可以有不同于宿主机的用户和用户组 ID 映射。

cgroup

Cgroup(Control Groups,控制组)是 Linux 内核提供的一种可以限制、记录和隔离进程组所使用的物理资源(如 CPU、内存、磁盘 I/O、网络带宽等)的机制。

Cgroup目前有两个版本,V1和V2。两个版本在功能、性能、使用方式、设计、内核兼容性等方面都存在一定的差异,以下是它们的对比:

  • 功能:cgroup V1的功能相对零散,cgroup V2改进了cgroup的层次结构,引入了统一的配置文件系统,简化了配置流程,提高了可用性和可维护性。
  • 性能:cgroup V2在性能方面有一定的提升,特别是在进程组的创建和销毁、资源分配和回收等方面。
  • 使用方式:cgroup V1和cgroup V2的使用方式有一些差异。cgroup V1使用文件系统接口来操作cgroup,而cgroup V2使用了新的API和工具。
  • 设计:cgroup V2在设计上进行了一些改进,使其更加灵活和可扩展。例如,cgroup V2支持层次化的cgroup结构,可以更好地管理大型系统中的资源。
  • 内核兼容性:cgroup V2需要较新的Linux内核版本支持,而cgroup V1则在较旧的内核版本中也可以使用。
  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一个客户端-服务器(C/S)架构的程序,它提供了一整套RESTful API以及命令行工具Docker来管理容器。你可以通过Docker客户端向Docker服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果。你可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。 Docker容器是通过Docker镜像创建的独立的运行环境。Docker容器包含了运行所需的所有文件系统、库文件和运行时环境,并且可以与宿主机隔离。你可以使用Docker命令来管理容器,比如创建、启动、停止和删除容器。删除已停止的容器可以使用命令docker rm 容器ID,而删除全部容器可以使用docker rm -f ${docker ps -qa}命令。 除了容器的基本管理,Docker还提供了DockerFile这个配置文件,它可以用来定义如何构建Docker镜像。DockerFile是一个文本文件,包含了一系列指令,告诉Docker如何构建镜像,并且可以通过转存图片并上传来自定义DockerFile。你可以通过解析DockerFile来了解如何构建镜像,并通过Docker实际运用来深入了解Docker的高级知识。 总结来说,Docker是一个用于管理容器的客户端-服务器架构程序,通过Docker镜像创建独立的运行环境,可以使用Docker命令进行容器的管理,同时可以使用DockerFile来定义镜像的构建过程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [史上最全Docker容器知识整理【精华内容】](https://blog.csdn.net/qq_41714882/article/details/105734855)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值