初识Docker
Docker的诞生
Docker的首秀,是2013年3月15日的一个5分钟的”闪电演讲“,Solomon Hykes(dotCloud 公司,也就是 Docker 公司的创始人)首次向全世界展示了 Docker 技术
Docker的形态
目前使用Docker基本上有两个选择:Docker Desktop 和 Docker Engine
Docker Desktop
是专门针对个人使用而设计的,支持 Mac 和 Windows 快速安装,具有直观的图形界面,还集成了许多周边工具,方便易用。
不推荐使用:
- 它是商业产品,有一些自己的、非通用的东西,不利于后续的Kubernetes学习;
- 只是对个人学习免费,受条款限制不能商用,在日常工作中难免会“踩到雷区”。
Docker Engine
完全免费,但只能在Linux上运行,只能命令行操作,缺乏辅助工具,需要自己动手DIY运行环境。
推荐使用:
血脉最纯正,各个公司在生产环境中实际使用的Docker产品,毕竟机房里99%的服务器跑的都是Linux。
Docker 的安装
- 安装docker.io
sudo apt install -y docker.io #安装Docker Engine
- 启动Docker的后台服务
sudo service docker start #启动docker服务
sudo usermod -aG docker ${USER} #当前用户加入docker组
第一个 service docker start 是启动 Docker 的后台服务,第二个 usermod -aG 是把当前的用户加入 Docker 的用户组。这是因为操作 Docker 必须要有 root 权限,而直接使用 root 用户不够安全,加入 Docker 用户组是一个比较好的选择,这也是 Docker 官方推荐的做法。
上面的三条命令执行完之后,我们还需要退出系统(命令 exit ),再重新登录一次,这样才能让修改用户组的命令 usermod 生效。
验证Docker
可以使用命令 docker version 和 docker info,来验证Docker
docker version
docker version # 会输出 Docker 客户端和服务器各自的版本信息
docker info
docker info # 显示当前 Docker 系统相关的信息,例如 CPU、内存、容器数量、镜像数量、容器运行时、存储文件系统等
Docker的使用
docker ps
显示当前环境下运行的容器,可以类比Linux下的ps命令
docker pull
从外部的镜像仓库(Registry)拉取一个 busybox 镜像(image),你可以把它类比成是 Ubuntu 里的“apt install”下载软件包
docker pull busybox #拉取busybox镜像
docker images
列出当前 Docker 所存储的所有镜像
docker run
从某个镜像中启动容器
docker run busybox echo hello world
这个命令会在我们的终端上,输出“hello world”
docker ps -a
可以查看已经运行完毕的容器
Docker的架构
Docker client 可以通过 build、pull、run等命令向 Docker daemon 发送请求,而 Docker daemon 则是容器和镜像的“大管家”,负责从远端拉取镜像、在本地存储镜像,还有从镜像生成容器、管理容器等所有功能。
可以直接使用一个命令来查看Docker client 到 Docker daemon 再到 Registry 的详细工作流程。
docker run hello-world
总结:
- 容器技术起源于 Docker,它目前有两个产品:Docker Desktop 和 Docker Engine,我们的课程里推荐使用免费的 Docker Engine,它可以在 Ubuntu 系统里直接用 apt 命令安装。
- Docker Engine 需要使用命令行操作,主命令是 docker,后面再接各种子命令。
- 查看 Docker 的基本信息的命令是 docker version 和 docker info ,其他常用的命令有 docker ps、docker pull、docker images、docker run。
- Docker Engine 是典型的客户端 / 服务器(C/S)架构,命令行工具 Docker 直接面对用户,后面的 Docker daemon 和 Registry 协作完成各种功能。
《极客时间-Kubernetes入门实战课》学习笔记 Day2