0%

Docker基础概念

主要包括三个基本核心概念:

  • 镜像(image):相当于一个静态的文件系统,类似于未安装的windows ios文件,相当于是一个未挂载的root文件系统
  • 容器(container):容器是镜像运行时的实体,可以启动、创建、停止以及删除。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间
  • 仓库(Repository):镜像中心,类似于maven的依赖包中心,用来保存镜像,最常使用的公共仓库是官方的Docker Hub

基本架构(cs架构):

守护进程(daemon)是生存期长的一种进程,没有控制终端。它们常常在系统引导装入时启动,仅在系统关闭时才终止

  • Docker 客户端(Client):与docker host中的守护进程进行通信,通过命令执行实际的操作(cs架构中的c)
  • Docker 主机(Host):运行容器,存储镜像的机器
  • Docker Registry:一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

从hello-word可以得到docker执行的基本流程

  1. client 连接 hosts 的daemon进程
  2. daemon进程查看本地镜像,如果不存在,向远程Registry获取镜像
  3. daemon进程为镜像启动容器
  4. daemon进程将信息发送给client

几个基本概念

1. 容器与虚拟机的区别

虚拟机,相当于一套真的操作系统,在os层上增加了一层hypervisor,用来虚拟化硬件,每个虚拟机以层虚拟化的硬件为基础,建立自己的OS层(GuestOa),应用层.

容器,更偏向于一个进程隔离空间,空间内包含特定进程执行所需要的环境(镜像),容器之间互不干扰,但是共同调用底层的os接口,由daemon进程统一管理

2. Dockerfile相关总结

Docker基本使用(以某个项目部署为例)

  1. 在项目中添加Dockerfile(该文件用来提供构建镜像文件的必要信息)

  2. docker builder 构建镜像文件

    • 首先拉取基础docker镜像,之后将应用程序复制到docker容器中,根据应用程序依赖信息加载相关依赖,加载完成后执行初始run命令
    • -t 指明生成镜像文件的tag
    • . 指明dockerfile位置
  3. docker run 指定并绑定端口后运行项目

docker基础镜像构建(搭建基础机器学习+深度学习环境)

To stop a container, use CTRL-c. This key sequence sends SIGKILL to the container. If --sig-proxy is true (the default),CTRL-c sends a SIGINT to the container. If the container was run with -i and -t, you can detach from a container and leave it running using the CTRL-p CTRL-q key sequence.

  1. 使用ubuntu作为基础镜像,安装anaconda

    • docker cp 复制文件到镜像中

    • docker attach 切换到前台

    • sh Anaconda3-2021.05-Linux-x86_64.sh 执行安装脚本

  2. 退出容器,将当前容器导出为镜像 docker commit

  3. 推送远程仓库(镜像名称中的用户名一定要与远程仓库用户名一致,否则报错)