Docker基础知识

Docker基础知识

Scroll Down

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样

Docker核心概念

Docker Registry

存储容器镜像的仓库,主要的镜像来源为Docker Hub与用户自搭的镜像私库

Docker Image

Docker镜像,镜像是基于文件系统的一种层式结构,有一系列指令一步一步构建出来。可以把镜像当做容器的源代码 Docker镜像的最底层是一个引导文件系统bootfs,它在一个容器启动后会被卸载,同时容器被移到内存中,第二层是rootfs,可以是一种或多种操作系统,该层的操作系统是只读状态的,在系统上的修改将会以更多的文件系统叠加的形式呈现,该技术被称为联合加载

Docker Container

Docker容器,从镜像创建的运行实例,每个容器都是相互隔离的,容器是在只读的镜像层上面加载了一个读写文件系统

Docker镜像和容器之间的关系

镜像是由多个只读文件系统叠加而成的,我们无法直接在镜像上进行修改,容器基于镜像生成,在每个容器启动的时候,将会在它所基于的镜像上新建一个可写层,对容器所有的修改将会体现在这个可写层中,而在commit时,其实只提交了一个可写层,将它变成一个不可写的新镜像 2019022219511290320190318193154883.png

仓库、镜像、容器三者间的交互

  • 需要生成容器时使用docker pull命令从Docker仓库拉取镜像,然后使用docker run命令启动镜像
  • 需要将容器保存成镜像的时候使用docker commit命令(不推荐该方式,推荐使用DockerFile)将容器保存成镜像,然后使用docker push推送到Docker仓库
  • 仓库镜像容器三者交互 2019022219515615320190318193154861.png

Docker基础命令

  • docker run 新建并启动命令
    • -i选项:表示交互模式,始终保持输入流开放
    • -d选项:守护容器,后台运行
    • -t选项:表示分配一个伪终端
    • --name选项:指定启动容器的名字,不指定则随机分配
    • -v选项: 挂载一个系统中的volume,格式为[host-dir]:[container-dir]:[rw:ro]
    • -p选项:映射docker端口与宿主机的端口,常用格式为hostPort:containerPort
  • docker start/stop/restart 启动、停止重启已存在容器命令
    • 使用容器ID标识具体容器
  • docker pull 从Docker registry中拉取image或repository
  • docker push 将本地的image或repository推送到镜像库
  • docker images 列出本机的镜像,默认只列出最顶层的镜像
  • docker rmi 删除镜像
  • docker rm 删除容器
  • docker attach 连接至容器启动的终端
    • 不开启新的终端,多个用户同时使用时会阻塞
    • exit将会导致容器停止
  • docker exec 使用新的线程开启新的终端
    • 不同用户使用不同终端,不会阻塞
    • -d选项:运行后台进程,无交互需求
    • -i选项:运行交互进程
  • docker inspect 查看镜像或容器的详细信息
    • --format参数:制定输出的模板格式,以便输出特定信息
  • docker ps 查看容器相关信息
    • 默认显示正在运行的容器信息
    • -a参数:查看所有容器,包括停止的
    • -l参数 只查看最新创建的容器,包括不在运行的
  • docker commit 将一个容器固化为一个新的镜像
    • 保留容器的配置及安装的特定工具
    • 只能选用正在运行的容器来只做新的镜像
    • 临时性辅助命令,不推荐使用
  • docker events 查看Docker实时系统日志
  • docker history查看指定镜像历史版本信息
  • docker logs 查看容器中进程的运行日志
  • docker top 查看容器内部进程