Docker


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:容器内路径 目的主机路径     #拷贝容器文件到主机

  目录