【笔记2】容器基本概念及docker入门

一、理解容器

容器来源于英文中的 container 一词,也有集装箱的意思。
容器的作用:
为进程提供一个独立的运行环境,屏蔽运行环境差异所带来的问题。

容器是使用两大技术实现独立的运行环境

1、文件系统隔离

  • 每个容器有独立的文件系统(chroot),容器内文件的操作不影响其他容器和宿主机

2、资源隔离

  • 使用namespace技术实现进程间隔离
  • 使用Cgroup技术实现限制资源使用

二、容器与虚拟化

虚拟化是利用hypervisor程序模拟硬件,并在其模拟的硬件环境上安装操作系统并运行应用的技术,与传统应用部署方式相比,虚拟化技术能够集中化管理服务器。提高资源利用率,对服务器进行动态调整资源配置,降低能源消耗,通过虚拟化软件的集群功能提供高可靠性等。
但不可忽视的是,由于其实现方式是通过软件模拟硬件,并运行了一个完整的操作系统,执行系统指令的时候需要通过一个软件层进行翻译,存在额外的性能损耗。
硬件辅助虚拟化仅仅解决了翻译层,但还是要运行完整的操作系统。

容器化技术是直接运行在操作系统上,与所有容器共享一个操作系统,且每个容器仅包含了运行该应用所需的必要文件,所以相比虚拟化,容器技术更加轻便快捷,且性能损耗进一步降低,节省运维成本。

三、容器的基本概念

  • LXC:是linux container 的缩写,是一个基于linux内核功能特性实现的容器技术。LXC在操作系统上为进程提供执行环境,并利用Cgroup和namespace技术将进程隔离
  • 容器隔离:容器将操作系统管理的资源划分到独立的容器中,并让各个容器占用独立的资源。
  • 容器共享:容器在相互隔离的同时还提供了资源共享机制

四、常见容器引擎

  • Docker:使用量最大的容器引擎
  • containerd:K8S v1.24及以上版本默认容器引擎
  • Podman:红帽公司开源的容器引擎
  • iSulad:华为开源的容器引擎
  • Pouch:阿里云开源的容器引擎

五、K8S弃用docker

K8S在1.5版本中引入了一个新的接口标准:CRI。这个接口主要规定了如何调用容器运行时来管理容器和镜像,但这个接口标准与docker调用标准有差异,导致两者不兼容。K8S开发了个dockershim作为一个翻译层,与CRI兼容来使用docker。
在2020年K8S发布1.20版本时声明,在1.24版本中移除了dockershim应用,直接调用docker内部的containerd

六、docker入门

1、安装工具并配置阿里云仓库

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast

2、选择合适的版本并安装

yum list docker-ce --showduplicates
yum install -y docker-ce-18.09.9-3.el7
systemctl enable docker.service && systemctl start docker

3、配置国内镜像仓库和cgroup

vim /etc/docker/daemon.json
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"],	# 镜像仓库
  "exec-opts": ["native.cgroupdriver=systemd"]	# 将cgroup配置为systemd
}
systemctl restart docker

4、常用命令

docker search nginx			# 搜索nginx镜像
docker pull nginx:1.23.2	# 下载nginx镜像
docker images ls			# 查看当前服务器的镜像
docker save -o nginx.tar nginx:1.23.2	# 将镜像导出成文件
docker load -i nginx.tar	# 将镜像导入docker
docker tag nginx:1.23.2 test.reg.com/nginx:v1	# 给镜像打标签
docker run --name "nginx" -d nginx:1.23.2	# 启动容器并命名为nginx
docker ps 					# 查看正在运行的容器
docker stop nginx			# 关闭容器
docker start nginx			# 开启容器
docker restart nginx		# 重启容器
docker rm nginx				# 删除容器
docker rmi nginx:1.23.2	# 删除镜像
docker logs -f --tail 10 nginx	# 查看日志输出最近10行并监视后续写入的日志
docker exec -it nginx bash	# 进入容器内部执行操作
docker commit 				# 保存修改后的容器并提交为新容器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值