简介Docker以及K8s

什么是Docker

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口以及操作系统级别的虚拟化。

更为直白的叙述就是,Docker可以将程序和环境(依赖库+配置+操作系统)打包并运行的工具软件。

基础镜像

总所周知,环境不同,程序运行的结果就会不同,甚至会失败。所以统一环境 是十分有必要的,其中最重要的就是操作系统的统一。让所有程序都跑在同一个操作系统上,利用操作系统的用户空间构建出应用程序所需的环境。

**镜像(image)**就是对应用程序及其依赖进行打包,通过该文件生成Docker容器及容器实例。同一个image文件可生成多个同时运行的容器实例。

Dockerfile

在有了基础镜像后,往往为构建复杂的应用程序,需要安装各种依赖以及文件夹。Dockerfile就是可以将这些需要安装的依赖相关的命令等列个清单,从而创建出一个适合程序运行的环境。

容器

当我们用命令执行docker build的时候, docker就会按着Dockerfile的说明,一行行构建环境+应用程序。最终将这个环境+程序,打包成一个类似"压缩包"的东西,我们称之为容器镜像(container image)

基于此,当我们执行docker run命令时,就会将容器镜像给"解压缩",获得一个独立的环境和应用程序并运行起来。也就是所谓的容器(container)

简而言之,容器就是镜像创建的运行实例,Docker利用容器来运行应用。每个容器都是相互隔离的、保证安全的平台。我们可以把容器看做是一个轻量级的Linux运行环境。

容器VS虚拟机

Docker容器:使用Docker引擎进行调度和隔离,提高了资源利用率,在相同硬件能力下可以运行更多的容器实例;每个容器拥有自己的隔离化用户空间。

VM:使用Hypervisor提供虚拟机的运行平台,管理每个VM中操作系统的运行。每个VM都要有自己的操作系统、应用程序和必要的依赖文件等。

一句话概括就是,容器本质上只是个自带独立运行环境的特殊进程 ,底层用的其实是宿主机的操作系统内核

什么是Docker compose

一个可以用来定义和分享多容器应用程序的工具。可以使用单一资源来运行一个有多容器的项目。在对容器部署顺序有要求的项目下使用十分便利(比如先启动数据库在启动身份验证最后启动web服务)

常见的docker操作命令

bash 复制代码
// 列出本机所有的image文件
docker image ls

// 运行指定image文件 自动抓取image文件。如果发现本地没有指定的image文件,就会从仓库自动抓取
docker container run xxx

// 列出本机正在运行的容器
docker container ls

// 列出本机所有容器,包括终止运行的容器
docker container ls --all

// 终止运行的容器文件
docker container rm [containerID]

// 启动已经生成已经停止运行的容器文件
docker container start [containerID]
	
// 查看docker容器里的输出 如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令查看输出
docker container logs [containerID]

// 将docker容器里正运行文件拷贝到本机
docker container cp [containID]:[/path/to/file]

// 本地image镜像重命名
docker tag imageName:TAG REGISTRYHOST/USERNAME/NAME:TAG
docker tag hello-world:latest registry.cn-shenzhen.aliyuncs.com/chenjinting/hello-world:v1.0.0

// 查看正在运行的容器 
docker ps

// 查看所有的容器
docker ps -a
	
// 附加到运行的容器
docker attach [name]/[containerId]

// 后台运行容器
docker run (--name xxx) -d xxx xxxx/xxx/xxx 

// 查看运行中容器的进程号
docker top xxx(name)

// 停止容器
docker kill xxx(name)

// 查看容器的具体信息
docker inspect  [name]/[containerId]

// 删除镜像文件
docker rmi 仓库名+标签名

// 删除所有标签及其镜像文件
docker rmi 【id】

// 查找镜像
docker search xxx

// 拉取镜像
docker pull xxx

// 导成tar包并使其具备可移植性:
docker save -o xxx.tar xxxx(name)

什么是K8s

一个开源的容器编排平台,可以自动化在部署、管理和扩展容器化应用过程中涉及的许多手动操作。可以轻松对服务器实现负载均衡以及弹性伸缩。

K8s与docker的关系

Docker 部署的容器 ,其实就是 k8s 调度的 Pod 里的 container ,它们都叫容器 ,其实是一回事。只不过 k8s 除了支持 Docker 的容器外,还支持别人家的容器。Docker Compose 基于多个 container 创建的一整套服务 ,其实就是 k8s 里的 pod

Docker 主要负责容器的创建和管理,而 Kubernetes 则负责这些容器的编排和管理。简单来说,Docker 解决的是"如何运行单个容器 "的问题,而 Kubernetes 解决的是"如何在大规模环境中管理和编排多个容器"的问题。

写在最后

简单介绍了下Docker,Docker常见命令以及K8s, 后面应该会继续补充(大概)

相关推荐
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS2 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
玉&心2 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing2 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
赵文宇(温玉)2 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang2 天前
上传本地镜像到harbor中
docker·容器·持续部署
张洛闻Eren2 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
羑悻的小杀马特2 天前
Dockerfile 全景指南:从入门编写dockerfile到生产环境镜像优化实战,一步步带你从啃透制作指令到镜像制作落地!
docker·dockerfile·镜像制作
BianHuanShiZhe2 天前
docker常见命令
docker
正经教主2 天前
【FDE系列】阶段2:Day 43:Docker Compose — 多容器一键编排
人工智能·docker·fde