Docker生态架构

Docker Containers Are Everywhere

image-20220118165726624.png

生态架构

image-20220118170228476.png

Docker Host

用于安装Docker daemon的主机,即为Docker Host,并且该主机中可基于容器镜像运行容器。

Docker daemon

用于管理Docker Host中运行的容器、容器镜像、容器网络等,管理由Containerd.io提供的容器。

Registry

容器镜像仓库,用于存储已生成容器运行模板的仓库,用户使用时,可直接从容器镜像仓库中下载容器镜像,即容器运行模板,就可以运行容器镜像中包含的应用了。例如:Docker Hub,也可以使用Harbor实现企业私有的容器镜像仓库

Docker client

Docker Daemon客户端工具,用于同Docker Daemon进行通信,执行用户指令,可部署在Docker Host上,也可以部署在其它主机,能够连接到Docker Daemon即可操作。

Image

把应用运行环境及计算资源打包方式生成可再用于启动容器的不可变的基础设施的模板文件,主要用于基于其启动一个容器。

Container

由容器镜像生成,用于应用程序运行的环境,包含容器镜像中所有文件及用户后添加的文件,属于基于容器镜像生成的可读写层,这也是应用程序活跃的空间。

Docker Dashboard

Docker Dashboard 提供了一个简单的界面,使您能够直接从您的机器管理您的容器、应用程序和映像,而无需使用 CLI 来执行核心操作。

docker 容器镜像(images)

Docker Image

  1. Docker 镜像是只读的容器模板,是Docker容器基础
  2. 为Docker容器提供了静态文件系统运行环境(rootfs)
  3. 是容器的静止状态
  4. 容器是镜像的运行状态

    联合文件系统

  5. 联合文件系统(union filesystem)

  6. 联合文件系统是实现联合挂载技术的文件系统
  7. 联合挂载技术可以实现在一个挂载点同时挂载多个文件系统,将挂载点的原目录与被挂载内容进行整合,使得最终可见的文件系统包含整合之后的各层文件和目录

image-20220125080435098.png

docker 容器命令

1 查看本地容器镜像

  1. docker images
  2. docker image list

2. 查看docker容器镜像本地存储位置

  1. ## 考虑到docker容器镜像会占用本地存储空间,建议搭建其它存储系统挂载到本地以便解决占用大量本地存储的问题。
  2. ls /var/lib/docker

3. docker 容器搜索

  1. docker search centos

4. Docker 容器镜像下载

  1. docker pull centos

5. Docker容器镜像删除方法

  1. docker rmi <image_id>

6. docker 镜像 导入导出

  1. ## docker 容器镜像导出
  2. docker save -o centos.tar centos:latest
  3. ## docker 容器镜像导入
  4. docker load -i centos.tar

7. 导入导出正在运行的容器

  1. # docker 导出正在运行的容器
  2. docker export -o centos7.tar 355e99982248
  3. ## docker 导入容器
  4. docker import centos7.tar centos7:v1

docker 常用命令

1. 启动容器 docker run

  1. docker run -i -t --name c1 centos:latest bash
  2. # 命令解释
  3. # docker run 运行一个命令在容器中,命令是主体,没有命令容器就会消亡
  4. #-i 交互式
  5. #-t 提供终端
  6. #--name c1 把将运行的容器命名为c1
  7. # centos:latest 使用centos最新版本容器镜像
  8. #bash 在容器中执行的命令

2. 查看运行容器 docker ps

  1. ## docker ps 查看正在运行的容器,本案例由于没有命令在容器中运行,因此容器被停止了,所以本次查看没有结果。
  2. docker ps
  3. ## docker ps --all 可以查看正在运行的和停止运行的容器
  4. docker ps --all

3. 查看运行容器状态 docker inspect

  1. ## 可以看到容器处于运行状态 c2 为容器id docker inpect 查看容器详细信息
  2. docker inspect c2

4. 进入到容器中命令

  1. ##命令解释
  2. ## docker exec 在容器外实现与容器交互执行某命令
  3. ##-it 交互式
  4. ## c2 正在运行的容器名称
  5. ## /bin/bash 在正在运行的容器中运行相关的命令
  6. docker exec -it <container_id> /bin/bash

5.docker attach

  1. #命令解释
  2. # docker attach 类似于ssh命令,可以进入到容器中
  3. # c2 正在运行的容器名称
  4. docker attach c2
  5. ##说明 docker attach 退出容器时,如不需要容器再运行,可直接使用exit退出;如需要容器继续运行,可使用ctrl+p+q

6. 启动 关闭 删除 容器

  1. # 启动容器
  2. docker start <container_id>
  3. ## 停止容器
  4. docker stop <container_id>
  5. ## 删除容器
  6. docker rm <container_id>
  7. ## 停止所有容器
  8. docker stop $(docker ps -q)
  9. ## 删除所有容器
  10. docker rm $(docker ps -aq)
  11. ## 删除并停止所有容器(一条命令)
  12. docker stop $(docker ps -q) & docker rm $(docker ps -aq)
  13. ## 批量删除所有容器
  14. docker ps --all | awk '{if (NR>=2){print $1}}' | xargs docker rm

7. docker 拷贝命令

  1. #1 从宿主机拷文件到容器里面 project为容器名
  2. docker cp /opt/abx.txt project:/root/
  3. #2 从容器里面拷文件到宿主机 project 为容器名
  4. docker cp project:/root/abx.txt /opt/