Docker学习笔记

Docker是一种轻量级的容器化技术,相比传统虚拟机具有更高的资源利用率、更快的启动时间、更好的可移植性、更高的部署效率和更少的系统开销。它提供了更便捷、一致的环境和部署方式,适用于构建、交付和运行应用程序。它是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的运行环境到一个可移植的容器中。

特性 普通虚拟机 Docker
跨平台 通常只能在桌面级系统运行,例如 Windows/Mac,无法在不带图形界面的服务器上运行 支持的系统非常多,各类 windows 和 Linux 都支持
性能 性能损耗大,内存占用高,因为是把整个完整系统都虚拟出来了 性能好,只虚拟软件所需运行环境,最大化减少没用的配置
自动化 需要手动安装所有东西 一个命令就可以自动部署好所需环境
稳定性 稳定性不高,不同系统差异大 稳定性好,不同系统都一样部署方式

体系结构

Docker 可以被视为一个具有客户端-服务器(Client-Server,简称 CS)架构特征的系统

请添加图片描述

Docker 的体系结构主要由以下几个关键组件构成:

  • 客户端(Client): 用户与 Docker 交互的主要方式是通过 Docker 客户端。客户端是一个图形界面或命令行界面(CLI),用户可以通过它发送请求到 Docker 守护进程。
  • 守护进程(Daemon): Docker 守护进程是 Docker 架构的核心,运行在 Docker 主机上。它接收来自客户端的请求,并管理 Docker 对象,如镜像、容器、网络和卷。
  • Dockerfile: Dockerfile 是一个文本文件,包含了一系列的指令,用于自动化构建 Docker 镜像的过程。
  • 多容器 Docker Compose: Docker Compose 允许用户通过 YAML 文件定义多容器应用,然后使用单个命令启动所有服务。这为开发、测试和生产环境中的多容器应用提供了便利。
  • 网络(Networking): Docker 提供了一套网络机制,允许容器之间以及容器与外界之间进行通信。这包括容器间的链接、自定义网络等。
  • 卷(Volumes): 卷是持久化数据的一种方式,它允许数据在容器之间共享,并且独立于容器的生命周期。
  • 镜像(Image): 镜像是一个只读模板,包含了运行应用所需的所有内容——代码、运行时、库、环境变量和配置文件。镜像是创建容器的基础。
  • 容器(Container): 容器是镜像的运行实例。它是一个轻量级、可移植的、自给自足的软件运行环境,运行在 Docker 主机上。
  • 仓库 Docker Hub / Registry: Docker Hub 是一个服务,用于分享和管理 Docker 镜像。它是一个中央仓库,用户可以上传(push)和下载(pull)镜像。Docker Registry 是一个更通用的概念,指的是任何可以存储和分发 Docker 镜像的仓库

更进一步,Docker还可以用于分布式和微服务中

  • 分布式架构: Docker 可以运行在多个主机上,并通过 Docker Swarm 或 Kubernetes 等工具实现容器的编排和管理。这使得 Docker 不仅仅是一个简单的 CS 架构,而是一个可以扩展到分布式系统的架构。
  • 微服务架构: Docker 通常与微服务架构一起使用,每个微服务可以运行在独立的容器中。这种架构提高了应用的可扩展性和可维护性。

核心概念

请添加图片描述

  • DockerFile(自动化脚本):类似于Java Maven项目中的pom.xml,Python项目中的requirements.txt,NodeJS项目中的package.json,该文件定义了镜像的构建步骤
  • Image(镜像):可以想象成通过pom.xml/requirements.txt/package.json经过构建命令,按照DockerFile中的定义,下载相关依赖,于是项目现在除了自己编写的代码,还包含了很多第三方的库。镜像可以通过DockerFile运行命令生成,也可以通过命令直接pull Docker仓库中现成的镜像,也好比可以直接下载第三方库,也可以自己构建一个库
  • Container(容器):可以想象成将项目运行起来的状态,也和项目类似,可以启动、停止等

常用命令

Docker 提供了一系列命令来管理和操作容器,如下图所示

请添加图片描述

下面是一些常用 Docker 命令,看起来比较多,实际上主要就是对容器的构建、查看、启动、停止、重启、删除等操作

单容器

docker build -t myimage:latest .: # 从当前目录中的 Dockerfile 构建镜像
docker tag myimage:latest myimage:1.0: # 给镜像指定一个新的标签,通常用于版本控制
docker commit mycontainer mynewimage:latest: # 从更改过的容器实例创建一个新的镜像

docker ps或docker container ls: # 查看当前运行中的容器
docker images或docker image ls: # 查看镜像列表

docker exec -it mycontainer bash: # 在现有容器内部执行命令(进入交互式终端)
docker run -it --rm ubuntu:18.04 bash: # 启动新的容器并运行指定的命令(进入交互式终端)
docker run -d --name mycontainer myimage:latest: # 创建并启动一个新的容器在后台运行
docker start/stop/restart mycontainer: # 启动/停止/重启指定 id 的容器

docker rmi image-id: # 删除指定 id 的镜像
docker rm mycontainer: # 删除指定 id 的容器
docker container rm trusting_newton: # 删除指定容器
docker container prune: # 清理未被使用的容器

多容器

docker-compose up --build: # 运行 Docker Compose 并构建、启动所有服务
docker-compose up --build -d: # 以守护进程方式运行 Docker Compose,构建并启动所有服务

docker-compose ps: # 查看运行状态
docker-compose logs [service-name]# 查看容器运行log

docker-compose up -d: # 以守护进程方式运行 Docker Compose 中的所有服务
docker-compose stop: # 停止运行
doc
  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值