简介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操作命令

// 列出本机所有的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, 后面应该会继续补充(大概)

  • 19
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值