【docker学习笔记】docker概念和命令

devtools/2024/9/22 19:07:52/

前言

最近感觉docker真的很方便,部署开源项目,下载配置什么环境都很方便,刷了会课学了docker,简单做个笔记,方便查阅

废话不多说,正文开始


Docker 笔记

docker_7">docker重点概念
  • Docker 镜像(Image):Docker 镜像是一个轻量级的、可执行的独立软件包,包含运行某个软件所需的所有内容,包括代码、运行时环境、库、环境变量和配置文件。
  • Docker 容器(Container):容器是镜像的运行实例。它可以被启动、停止、暂停和删除。每个容器都是隔离的、安全的,并且是一个完整的操作系统平台。
  • Dockerfile:Dockerfile 是一个文本文件,其中包含了一系列用户可以调用的命令,用于自动化创建 Docker 镜像。Dockerfile 中的命令包括复制文件、安装应用、暴露端口等。
  • Docker 仓库(Repository):Docker 仓库是用于存储和分发 Docker 镜像的地方。可以是公开的也可以是私有的。Docker Hub 是 Docker 的公开仓库,用户可以在上面发布和下载镜像。
  • Docker Compose:Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,你可以使用 YAML 文件来配置应用程序的服务,然后使用一个命令来创建和启动所有服务。
  • Docker Swarm:Docker Swarm 是 Docker 的原生集群管理和编排工具,用于创建和管理 Docker 集群。
  • Docker 网络:Docker 网络允许你定义自己的网络和网络拓扑,使得容器可以相互通信。
  • Docker 卷(Volume):Docker 卷是持久化数据存储的最佳方式。卷完全由 Docker 管理,可以在容器之间共享和重用。
基础命令
镜像相关操作命令
  • 从云端拉取镜像 docker pull
  • 查看所有镜像 docker image
  • 删除镜像 docker rmi
  • 推送镜像 docker push
  • 打包镜像
    • 先编写dockerfile文件
    • 运行docker build
    • 此时可以通过docker save打包成压缩包,别人可以通过docker load来加载镜像
    • 一般情况都是使用docker push推送到云端,然后通过docker pull拉取
容器相关命令
  • docker run -d -p 8080:80 --name my_container my_image

    • 这个命令会启动一个名为 my_container 的新容器,使用 my_image 镜像,将容器的 80 端口映射到主机的 8080 端口,并在后台运行
      • -d--detach:在后台运行容器,并返回容器 ID
      • -i--interactive:以交互模式运行容器,通常与 -t 一起使用
      • -t--tty:为容器重新分配一个伪输入终端,通常与 -i 一起使用
      • --name:为容器指定一个名称
      • -p--publish:将容器的端口映射到主机上。格式为 <host-port>:<container-port>
      • -P--publish-all:将容器的端口所有映射到主机上
      • -v--volume:挂载主机上的一个数据卷到容器内。格式为 <host-dir>:<container-dir>
      • -e--env:设置环境变量。格式为 <key>=<value>
      • --rm:容器退出时自动删除容器
      • --restart:设置容器的重启策略。可选的值有 noon-failurealwaysunless-stopped
  • docker stop用来停止运行中的容器

    • docker stop my_container
    • 这个命令会停止名为 my_container 的容器
    • <container>: 容器的 ID 或名称。你可以指定一个或多个容器来停止它们
    • -t--time: 在发送 SIGKILL 信号前等待容器停止的秒数。默认是 10 秒
  • docker start 用于启动一个或多个已停止的 Docker 容器

    • docker start my_container
    • 这个命令会启动名为 my_container 的容器
    • <container>: 容器的 ID 或名称。你可以指定一个或多个容器来启动它们
    • -a--attach: 附加 STDOUT/STDERR 并转发信号
    • -i--interactive: 附加容器的 STDIN
  • docker ps 用于列出当前正在运行的 Docker 容器

    • -a--all: 显示所有的容器(包括已经停止的)
    • -q--quiet: 只显示容器的编号
    • -s--size: 显示总文件大小
    • --no-trunc: 不截断输出
    • -f--filter: 根据条件过滤输出
  • docker rm 用于删除一个或多个 Docker 容器

    • <container>: 容器的 ID 或名称。你可以指定一个或多个容器来删除它们
    • -f--force: 强制删除一个正在运行的容器
    • -v--volumes: 删除与容器关联的卷
  • docker logs 用于获取 Docker 容器的日志

    • <container>: 容器的 ID 或名称。你需要指定一个容器来获取它的日志
    • --follow-f: 跟踪实时日志
    • --tail : 显示最后 N 行日志
    • --since : 显示自某个时间点以来的日志
    • --timestamps-t: 在日志中显示时间戳
  • docker exec用于进入在运行的 Docker 容器内部

    • <container>: 容器的 ID 或名称,你需要指定一个容器来在其中执行命令
    • -d--detach: 在后台运行
    • -i--interactive: 保持 STDIN 开启,即使没有附加
    • -t--tty: 分配一个伪终端
  • docker inspect 查看容器详情

数据卷的概念

  • Docker 数据卷(Docker Volume)是 Docker 提供的一种数据持久化的解决方案。数据卷是在 Docker 主机上创建的特殊目录,可以被 Docker 容器挂载并使用。数据卷可以在容器之间共享和重用,而且对数据卷的修改会立即生效,无论是在容器内还是在 Docker 主机上。
  • Docker 数据卷的主要特点包括:
    1. 数据持久化:即使容器被删除,卷中的数据也会保留下来。这对于保护你的数据非常重要,因为 Docker 容器的文件系统是暂时的,当容器被删除时,所有未保存在数据卷中的数据都会丢失。
    2. 数据共享:数据卷可以在多个容器之间共享和重用。例如,你可以创建一个包含数据文件的数据卷,然后将其挂载到多个容器中。
    3. 数据迁移:数据卷可以帮助你在不同的 Docker 主机之间迁移数据。你可以通过备份、恢复或者迁移数据卷来实现这一点。
    4. 性能优化:数据卷在 Docker 主机上的性能通常比容器的文件系统更好。因此,对于 I/O 敏感的应用,使用数据卷可以提高性能。
    5. 与主机系统隔离:数据卷在 Docker 主机上是以一个特殊的目录存在的,这个目录是直接由 Docker 管理的,而不是挂载到 Docker 主机的文件系统中。这样可以提高数据的安全性和隔离性。
数据卷操作
  • docker volume create 创建数据卷
  • docker volume ls 查看所有数据卷
  • docker volume rm 删除指定数据卷
  • docker volume inspect 查看某个数据卷的详情
  • docker volume prune 清除无用数据卷

docker_133">docker网络互连

docker_172170116_ip_135">docker 默认创建虚拟网桥172.17.0.1/16 ,容器启动的时候会自动加入网桥并分配虚拟ip,使得可以相互访问,但是因为随机分配所以不固定,需要自建自定义网络来实现互联
网络基础命令
  • docker network create 创建一个网络
  • docker network ls 查看所有网络
  • docker network rm 删除指定网络
  • docker network prune 清除未使用的网络
  • docker network connect 使指定容器链接加入到某网络
  • docker network disconnect使指定容器离开某网络
  • docker network inspect 查看网络详细信息

http://www.ppmy.cn/devtools/113516.html

相关文章

【鸿蒙应用】总结一下ArkUI

ArkUI是 HarmonyOS 应用界面的 UI 开发框架&#xff0c;提供了简洁的 UI 语法、UI 组件、动画机制和事件交互等等 UI 开发基础&#xff0c;以此满足应用开发者对 UI 界面开发的需求。 组件是界面搭建的最小单位&#xff0c;开发者通过多种组件的组合构成完整的界面。 页面是A…

计算机毕业设计Python+Tensorflow股票推荐系统 股票预测系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI

|-- 项目 |-- db.sqlite3 数据库相关 重要 想看数据&#xff0c;可以用navicat打开 |-- requirements.txt 项目依赖库&#xff0c;可以理解为部分技术栈之类的 |-- data 原始数据文件 |-- data 每个股票的模型保存位置 |-- app 主要代码文件夹 | |-- mod…

【算法】差分思想:强大的算法技巧

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…

【UE5 C++课程系列笔记】01——Visual Studio环境安装

1. 进入Visual Studio 官网&#xff0c;点击下载 下载社区版即可 下载后点击应用程序开始安装 2. 在“工作负荷”中&#xff0c;勾选如下选项 在“单个组件”中&#xff0c;勾选如下选项&#xff1a; 3. 等待下载安装 4. 安装好后&#xff0c;点击“继续但无需代码” 选择“工具…

揭秘MyBatis延迟加载:优化SQL查询与提升性能的利器

目录 1. 延迟加载的工作原理 2. 配置延迟加载 3. 使用示例 4. 注意事项 在MyBatis中&#xff0c;延迟加载&#xff08;也称为懒加载&#xff09;是一种优化策略&#xff0c;用于在实际需要数据时才从数据库加载数据&#xff0c;而不是在查询主对象时立即加载所有关联数据。…

mfc140u.dll丢失有啥方法能够进行修复?分享几种mfc140u.dll丢失的解决办法

你是否曾遇到过这样的情况&#xff1a;当你满怀期待地打开一个应用程序时&#xff0c;却被一个错误提示拦住了去路&#xff0c;提示信息中指出 mfc140u.dll 文件丢失。这个问题可能会让你感到困惑和无助&#xff0c;但是不要担心&#xff0c;本文将为你详细解读 mfc140u.dll 丢…

Unity3D 自定义Debug双击溯源问题详解

前言 在Unity3D的开发过程中&#xff0c;经常需要处理各种交互和事件&#xff0c;其中双击事件是常见的需求之一。然而&#xff0c;由于Unity自带的双击检测机制并不完善&#xff0c;开发者往往需要自定义实现以满足特定需求。本文将详细介绍如何在Unity3D中自定义Debug双击溯…

47.面向对象综合训练-汽车

//题目需求&#xff1a;定义数组存储3个汽车对象 //汽车的属性&#xff1a;品牌&#xff0c;价格&#xff0c;颜色 //创建三个汽车对象&#xff0c;数据通过键盘录入而来&#xff0c;并把数据存入到数组当中 1.标准的JavaBean类 public class Car {private String brand;//品…