Docker
docker的介绍和基础操作
docker 单机容器
docker compose 单机多个容器
k8s 多机多个容器
container即容器,集装箱
docker就是搬运集装的码头工人,管理容器的管理工具
Docker的组成
Docker 主机(Host): 一个物理机或虚拟机,用于运行Docker服务进程和容器,也称为宿主机, node节点
Docker 服务端(Server): Docker守护进程,运行docker容器
Docker 客户端(Client): 客户端使用 docker 命令或其他工具调用docker API
Docker 镜像(Images): 镜像可以理解为创建实例使用的模板,本质上就是一些程序文件的集合
Docker 仓库(Registry): 保存镜像的仓库,官方仓库: https://hub.docker.com/,可以搭建私有仓库harbor
Docker 容器(Container): 容器是从镜像生成对外提供服务的一个或一组服务,其本质就是将镜像中 的程序启动后生成的进程
docker是什么样的逻辑帮我们运行容器的,核心技术是什么Namespace和control groups
Namespace
隔离类型 | 功能 | 系统调用参数 | 内核版本 |
MNT Namespace(mount) | 提供磁盘挂载点和文件系统的 隔离能力 | CLONE_NEWNS | 2.4.19 |
IPC Namespace(InterProcess Communication) | 提供进程间通信的隔离能力, 包括信号量,消息队列和共享内存 | CLONE_NEWIPC | 2.6.19 |
UTS Namespace(UNIX Timesharing System) | 提供内核,主机名和域名隔离能力 | CLONE_NEWUTS | 2.6.19 |
PID Namespace(Process Identification) | 提供进程隔离能力 | CLONE_NEWPID | 2.6.24 |
Net Namespace(network) | 提供网络隔离能力,包括网络 设备,网络栈,端口等 | CLONE_NEWNET | 2.6.29 |
User Namespace(user) | 提供用户隔离能力,包括用户和组 | CLONE_NEWUSER | 3.8 |
control group是实现资源限制的核心技术,依赖于内核
容器管理工具
核心管理工具docker
容器技术建议跑一些轻量级的应用,重量级应用慎用。如MySQL,排错效率太低
安装docker
安装docker服务端,二进制安装使用脚本(开启加速)
安装docker客户端,二进制安装使用脚本(开启加速)
包安装:apt install docker.io
查看服务
[root@ubuntu2004 ~]#systemctl status docker.service
包安装的多一个socket用于连接docker客户端的服务
安装docker后会增加一个新的网卡docker0
docker自动生成IPtables规则
docker version 查看版本
docker info 查看详细信息(包含加速信息)
拉取镜像:(可在阿里云/官网/自己搭建的仓库取拉取镜像)
[root@ubuntu2004 ~]#docker pull nginx
运行镜像:
[root@ubuntu2004 ~]#docker run -d --name nginx nginx
查看镜像列表及大小:
[root@ubuntu2004 ~]#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 9 months ago 141MB
查看运行的容器
[root@ubuntu2004 ~]#docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
83090c35f1dd nginx "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 80/tcp nginx
拉取的镜像存放位置
/var/lib/docker/overlay2/镜像ID
显示镜像完整ID
[root@ubuntu2004 ~]#docker images --no-trunc
查看镜像详细信息
[root@ubuntu2004 ~]#docker inspect nginx