初识容器Docker

目前使用 Docker 基本上有两个选择:Docker DesktopDocker EngineDocker Desktop 是专门针对个人使用而设计的,支持 Mac 和 Windows 快速安装,具有直观的图形界面,还集成了许多周边工具,方便易用。
不是太推荐使用Docker Desktop,原因有两个。第一个,它是商业产品,难免会带有 Docker 公司的“私人气息”,有一些自己的、非通用的东西,不利于我们后续的 Kubernetes 学习。第二个,它只是对个人学习免费,受条款限制不能商用,我们在日常工作中难免会“踩到雷区”。
Docker Engine则和Docker Desktop正好相反,完全免费,但只能在 Linux 上运行,只能使用命令行操作,缺乏辅助工具,需要我们自己动手 DIY 运行环境。不过要是较起真来,它才是Docker当初的真正形态,“血脉”最纯正,也是现在各个公司在生产环境中实际使用的 Docker 产品,毕竟机房里 99% 的服务器跑的都是 Linux。
sudo apt install -y docker.io安装docker。
初识容器Docker_第1张图片

完成之后如下图:
初识容器Docker_第2张图片

sudo systemctl start docker启动docker
在这里插入图片描述

sudo systemctl status docker可以看到状态是active (running)
初识容器Docker_第3张图片

sudo usermod -aG docker ${USER}把当前用户加入docker组,退出系统(命令 exit ),再重新登录一次,这样才能让修改用户组的命令 usermod 生效。
因为我使用的是root用户,所以不用执行。

sudo docker version会输出 Docker 客户端和服务器各自的版本信息:
初识容器Docker_第4张图片
可以看到,我使用的是Docker Engine 24.0.5,系统是Linux,硬件架构是amd64

sudo docker info会显示当前 Docker 系统相关的信息,例如 CPU、内存、容器数量、镜像数量、容器运行时、存储文件系统等等。
初识容器Docker_第5张图片

sudo docker info显示的这些信息,对于我们了解 Docker 的内部运行状态非常有用。

docker ps,它会列出当前系统里运行的容器,就像我们在 Linux 系统里使用 ps 命令列出运行的进程一样。
初识容器Docker_第6张图片

所有的 Docker 操作都是这种形式:以 docker 开始,然后是一个具体的子命令,之前的docker versiondocker info也遵循了这样的规则。你还可以用help或者--help来获取帮助信息,查看命令清单和更详细的说明。

docker pull,从外部的镜像仓库(Registry)拉取一个 busybox 镜像(image),你可以把它类比成是 Ubuntu 里的“apt install”下载软件包,docker pull busybox拉取busybox镜像。
初识容器Docker_第7张图片

docker images列出当前 Docker 所存储的所有镜像。
初识容器Docker_第8张图片

可以看到,命令会显示有一个叫busybox的镜像,镜像的 ID 号是一串 16 进制数字a416a98b71e2,大小是 4.26MB。

docker run busybox echo hello world输出计算机世界最著名的语句“hello world”。
在这里插入图片描述

docker ps -a列出来所有的镜像。

Docker 的架构

下面的这张图来自 Docker 官网(https://docs.docker.com/get-started/overview/),精准地描述了 Docker Engine 的内部角色和工作流程,对我们的学习研究非常有指导意义。
初识容器Docker_第9张图片
刚才我们敲的命令行 docker 实际上是一个客户端 client ,它会与 Docker Engine 里的后台服务 Docker daemon 通信,而镜像则存储在远端的仓库 Registry 里,客户端并不能直接访问镜像仓库。

Docker client 可以通过 build、pull、run等命令向 Docker daemon 发送请求,而 Docker daemon 则是容器和镜像的“大管家”,负责从远端拉取镜像、在本地存储镜像,还有从镜像生成容器、管理容器等所有功能。

所以,在 Docker Engine 里,真正干活的其实是默默运行在后台的 Docker daemon,而我们实际操作的命令行工具“docker”只是个“传声筒”的角色。
Docker 官方还提供一个“hello-world”示例,可以为你展示 Docker client 到 Docker daemon 再到 Registry 的详细工作流程,你只需要执行这样一个命令docker run hello-world

它会先检查本地镜像,如果没有就从远程仓库拉取,再运行容器,最后输出运行信息:
初识容器Docker_第10张图片

此文章为10月Day 5学习笔记,内容来源于极客时间《Kubernetes 入门实战课》

你可能感兴趣的:(Kubernetes入门实战课,docker,容器,运维)