小白的Docker学习

Docker

常用指令
yaml 复制代码
docker run: 运行一个容器。
示例:docker run <image>

docker ps: 列出正在运行的容器。
示例:docker ps

docker images: 列出本地已有的镜像。
示例:docker images

docker pull: 从远程仓库下载镜像。
示例:docker pull <image>

docker stop: 停止一个运行中的容器。
示例:docker stop <container>

docker rm: 删除一个容器。
示例:docker rm <container>

docker rmi: 删除一个镜像。
示例:docker rmi <image>

docker build: 构建一个镜像。
示例:docker build -t <image_name> <dockerfile_path>

docker exec: 在运行中的容器中执行命令。
示例:docker exec <container> <command>

docker logs: 查看容器的日志。
示例:docker logs <container>

docker-compose up: 使用Docker Compose启动容器。
示例:docker-compose up

docker-compose down: 停止并移除使用Docker Compose启动的容器。
示例:docker-compose down

docker network ls: 列出Docker网络。
示例:docker network ls

docker network create: 创建一个Docker网络。
示例:docker network create <network>

docker network connect: 将容器连接到一个Docker网络。
示例:docker network connect <network> <container>

docker volume ls: 列出Docker卷。
示例:docker volume ls

docker volume create: 创建一个Docker卷。
示例:docker volume create <volume>

docker volume rm: 删除一个Docker卷。
示例:docker volume rm <volume>

docker inspect: 检查容器、镜像、网络等的详细信息。
示例:docker inspect <container/image/network>

docker tag: 创建一个标签来标识镜像。
示例:docker tag <image> <tag>

docker push: 将镜像推送到远程仓库。
示例:docker push <image>

docker login: 登录到远程Docker仓库。
示例:docker login

docker logout: 从远程Docker仓库注销。
示例:docker logout

docker restart: 重启一个容器。
示例:docker restart <container>

docker pause: 暂停一个容器的所有进程。
示例:docker pause <container>

docker unpause: 恢复一个暂停的容器。
示例:docker unpause <container>

docker kill: 强制停止一个容器。
示例:docker kill <container>

docker inspect: 检查容器、镜像、网络等的详细信息。
示例:docker inspect <container/image/network>

docker cp: 在容器和主机之间复制文件或目录。
示例:docker cp <container>:<path> <host_path>

docker stats: 实时显示容器的资源使用情况。
示例:docker stats <container>

docker attach: 连接到正在运行的容器的标准输入、输出和错误流。
示例:docker attach <container>

docker top: 显示容器中运行的进程列表。
示例:docker top <container>

docker commit: 创建一个新的镜像,基于正在运行的容器。
示例:docker commit <container> <image_name>

docker system prune: 清理无用的镜像、容器和卷。
示例:docker system prune

docker version: 显示Docker客户端和服务器的版本信息。
示例:docker version
基本概念
  • 镜像(Image) :Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

技术底座
Linux命名空间

命名空间,容器隔离的基础,保证A容器看不到B容器。

6个命名空间:User,Mnt,Network,UTS,IPC,Pid

控制组

cgroups容器资源统计和隔离,限制容器CPU、内存的使用,主要用到的cgroups子系统:cpu,blkio,device,freezer,memory

实际上 Docker 是使用了很多 Linux 的隔离功能,让容器看起来像一个轻量级虚拟机在独立运行,容器的本质是被限制了的 Namespaces,cgroup,具有逻辑上独立文件系统,网络的一个进程。

UnionFS与AUFS(Advanced UnionFS)

AUFS 能够将不同文件中的层联合到同一个文件夹中,这些文件夹在AUFS中称为分支,整个联合过程被称为联合挂载(Union Mount)。

通过将不同目录作为分支进行联合挂载,实现对文件系统的高效组织和管理。例如在 Docker 中,镜像就是由一个或多个 AUFS 分支组成,所有分支均为只读权限,而容器则是在镜像的基础上添加一个可读写的分支,用于存储容器运行时产生的修改,这样可以共享镜像的只读层,节省存储空间,同时又能保证容器的独立性和可写性。

与VM的区别
  • VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库,然后再安装应用;

  • Container(Docker容器)与VM相比有更少的虚拟层,它在宿主机器、宿主机器操作系统上创建Docker引擎,然后在引擎的基础上再安装应用。

新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统,docker是利用宿主机的操作系统,省略了这个复杂的过程,实现了秒级启动,而虚拟机是加载Guest OS ,这是分钟级别的。

相关推荐
励志不掉头发的内向程序员44 分钟前
【从零写一个CAD 03】三个 double 值得单独一个类吗:把视图变换抽成 View
开发语言·c++·qt·学习·系统架构
m4Rk_7 小时前
【论文阅读】Agent 记忆机制(83):Inside Out——用可演化 PersonaTree 构建 Agent 的核心长期记忆
论文阅读·人工智能·学习·开源·github
鬓戈8 小时前
Rust 语言与 AI 应用生态调研及学习路径
人工智能·学习·rust
传奇开心果编程8 小时前
【SwiftUI娓娓道来】第3课:让界面活起来——交互与动画指南
学习·macos·ui·ios·swiftui·swift
xian_wwq9 小时前
【学习笔记】等保合规安全基线核查实战
笔记·学习
传奇开心果编程9 小时前
【Jetpack Compose进阶学与练】第14课:系列收尾复习总结;Compose项目常见坑点汇总;学习路线与后续学习方向
android·学习·ui·kotlin·android jetpack
誰能久伴不乏9 小时前
保姆级 Docker 入门教程
docker·容器·eureka
yangmu32039 小时前
发动机是怎么把油变成动力的:四冲程内燃机原理拆解
学习
m4Rk_10 小时前
【论文阅读】Agent 记忆机制(81):EMR——用情景记忆避免 Agent 在多步推理中反复绕圈
论文阅读·人工智能·学习·开源·github
海海不掉头发10 小时前
阶段五_实验34-38_学习总结
深度学习·神经网络·学习·机器学习