简介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, 后面应该会继续补充(大概)

相关推荐
mengao12346 分钟前
centos 服务器 docker 使用代理
服务器·docker·centos
Eternal-Student13 分钟前
【docker 保存】将Docker镜像保存为一个离线的tar归档文件
运维·docker·容器
不是二师兄的八戒15 分钟前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php
码农小丘21 分钟前
一篇保姆式centos/ubuntu安装docker
运维·docker·容器
Eternal-Student1 小时前
【1.2 Getting Started--->Installation Guide】
docker
灼烧的疯狂2 小时前
K8S + Jenkins 做CICD
容器·kubernetes·jenkins
wenyue11213 小时前
Revolutionize Your Kubernetes Experience with Easegress: Kubernetes Gateway API
容器·kubernetes·gateway
yunfanleo3 小时前
docker run m3e 配置网络,自动重启,GPU等 配置渠道要点
linux·运维·docker
梅见十柒5 小时前
wsl2中kali linux下的docker使用教程(教程总结)
linux·经验分享·docker·云原生
Python私教5 小时前
ubuntu搭建k8s环境详细教程
linux·ubuntu·kubernetes