Docker
简介
Docker 是一个用于开发、发布和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分离,以便您可以快速交付软件。使用 Docker,您可以像管理应用程序一样管理基础设施。
Docker 中有非常重要的三个基本概念:镜像(Image),容器(Container),仓库(Repository)
一句话概括容器
容器就是将软件打包成标准化单元,以用于开发、交付和部署。
虚拟化技术
Docker 基于 LXC 虚拟容器技术
LXC 技术主要是借助 Linux 内核中提供的 CGroup 功能和 name space 来实现的,通过 LXC 可以为软件提供一个独立的操作系统运行环境。
- namespace 是 Linux 内核用来隔离内核资源的方式。 通过 namespace 可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的资源,这两拨进程根本就感觉不到对方的存在。具体的实现方式是把一个或多个进程的相关资源指定在同一个 namespace 中。Linux namespaces 是对全局系统资源的一种封装隔离,使得处于不同 namespace 的进程拥有独立的全局系统资源,改变一个 namespace 中的系统资源只会影响当前 namespace 里的进程,对其他 namespace 中的进程没有影响。
- CGroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组 (process groups) 所使用的物力资源 (如 cpu memory i/o 等等) 的机制。
Docker运行原理和流程
常用命令
systemctl start docker # 启动Docker
docker version # 查看当前版本号,是否启动成功
systemctl enable docker # 设置开机自启动
yum remove docker-ce docker-ce-cli containerd.io # 卸载依赖
rm -rf /var/lib/docker # 删除资源 . /var/lib/docker是docker的默认工作路径
docker version #查看docker的版本信息
docker info #查看docker的系统信息,包括镜像和容器的数量
docker 命令 --help #帮助命令(可查看可选的参数)
docker images #查看本地主机的所有镜像
docker search #搜索镜像
docker rmi -f 镜像id #删除 镜像
docker ps #列出容器 -a # 列出所有容器的运行记录
docker rm 容器id # 删除指定的容器,不能删除正在运行的容器,强制删除使用 rm -f
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前运行的容器
docker kill 容器id #强制停止当前容器
docker logs -tf 容器id #查看日志
docker logs --tail number 容器id #num为要显示的日志条数
docker top 容器id #查看容器中进程信息
docker exec -it 容器id /bin/bash #进入容器后开启一个新的终端,可以在里面操作
docker attach 容器id #进入容器正在执行的终端,不会启动新的进程
docker cp 容器id:容器内路径 目的主机路径 #拷贝容器文件到主机