什么是Docker

Docker 是一种开源的平台即服务 (PaaS) 工具,用于构建、发布和运行应用程序的轻量级容器。容器是一种轻量级、独立于平台的软件包,其中包含了应用程序的所有必需组件,如代码、运行时环境、系统工具和系统库。

Keyword:容器化


为什么要用Docker,我用Docker干什么

Docker 允许开发人员轻松地创建、部署和运行应用程序,同时确保在不同的计算环境中一致性和可重复性。这种技术被广泛用于构建微服务架构、快速部署开发和测试环境以及简化软件开发和交付流程。

Keyword:环境一致


一些概念

*表示对于使用(而非编写)也很重要的概念

容器(Container)*

容器是 Docker 中的一个概念,它是一个独立运行的软件包,包含了应用程序的代码、运行时环境、系统工具和系统库等。容器利用操作系统级虚拟化技术,使得应用程序可以在隔离的环境中运行,与主机系统和其他容器相互隔离,但又共享主机系统的内核。这使得容器具有轻量、快速启动、可移植性和可扩展性等特点。

镜像(Image)*

镜像是 Docker 容器的基础,它包含了一个应用程序运行所需的所有内容,包括代码、运行时环境、系统工具和系统库等。镜像是只读的,它定义了容器的内容和启动方式。当我们运行一个容器时,实际上是从镜像创建了一个可写的容器实例,该实例可以修改和保存数据。

卷(Volume)

卷是 Docker 中用于持久化存储数据的机制。它允许容器与主机系统或其他容器共享文件系统的部分或全部内容。使用卷可以实现数据持久化、数据共享和数据备份等功能。卷通常用于存储应用程序的配置文件、日志文件、数据库文件等需要持久保存的数据。

栈(Stack)

栈是 Docker 中用于定义和管理多个服务的组合的概念。栈通常由一个或多个服务组成,每个服务都可以由一个或多个容器实例组成。栈的定义包括了服务之间的依赖关系、容器的配置信息、网络设置等。使用栈可以简化多个服务的部署和管理,提高了应用程序的可扩展性和可维护性。

Dockerfile

Dockerfile 是用于构建 Docker 镜像的文本文件。它包含了一系列的指令,用于描述如何构建一个特定的 Docker 镜像,包括基础镜像的选择、容器内安装的软件、环境变量的设置、文件复制等操作。通过编写 Dockerfile,开发人员可以定义应用程序的运行环境和依赖关系,并且可以实现可重复性的构建过程,使得应用程序可以在不同的环境中以相同的方式运行。

docker run*

docker run 是 Docker 命令行工具中用于启动一个容器的命令。它接受一系列的参数,包括容器镜像名称、容器名称、端口映射、环境变量设置等。当我们运行 docker run 命令时,Docker 会从指定的镜像创建一个新的容器实例,并且启动该容器执行其中的应用程序。docker run 命令也可以用于配置容器的各种运行参数,如资源限制、网络配置、数据卷挂载等。

docker-compose

docker-compose 是一个用于定义和运行多个 Docker 容器的工具。它使用 YAML 格式的配置文件(通常是 docker-compose.yml),通过该配置文件可以定义一组服务以及这些服务之间的依赖关系、运行参数、网络设置等。使用 docker-compose 可以简化多个容器的部署和管理,使得开发人员可以通过一个简单的命令就可以启动、停止、删除整个应用程序的所有容器实例。docker-compose 还支持通过命令行覆盖配置文件中的参数,以便灵活地管理容器的运行行为。


我不喜欢命令行怎么办

本地(在开发机上快速布置环境)

使用Docker Desktop(官方的图形化docker工具)

链接:Docker Desktop: The #1 Containerization Tool for Developers | Docker

云端(在服务器上可视化部署)

使用Portainer(可以作为一个docker容器部署)

链接:Portainer: Container Management Software for Kubernetes and Docker

作为‘CV’工程师最简单的工作流

  1. 构建镜像(使用dockerfile本地构建,或更多的从dockerhub上拉取镜像)
  2. 构建容器(使用docker run命令启动一个容器或使用docker-compose编排多个容器)
  3. 端口映射(将容器内的端口与容器外-我是说物理机-进行映射以便访问服务)