Docker简介和Docker常见命令

目录

1. Docker 简介

1.1 Docker 的核心概念

1.2 Docker 的优势

1.3 Docker 工作流程

2. 常见命令

2.1 基本命令

2.2 镜像操作

2.3 容器操作

2.4 网络操作

2.5 卷操作

2.6 日志和监控

2.7 清理命令

3. 注意事项和最佳实践

3.1 镜像操作

3.2 容器操作

3.3 网络操作

3.4 卷操作

3.5 日志和监控

3.6 清理命令

4.思维导图


1. Docker 简介

        Docker 是一种开源的容器化平台,它使开发者能够自动化地部署、管理和运行应用程序。Docker 使用操作系统级虚拟化技术,使得应用程序和它们的依赖项可以打包成一个轻量级、可移植的容器,并在任何环境中运行。

1.1 Docker 的核心概念

镜像(Image):

  • Docker 镜像是一个包含应用程序及其所有依赖项的只读模板。镜像可以用来创建 Docker 容器。
  • 镜像通常是基于另一个镜像构建的,并通过分层文件系统来实现。每一层都包含了镜像的一部分,最后一层是应用程序本身。

容器(Container):

  • 容器是镜像的运行实例。它们是轻量级的、独立的,运行时与主机系统隔离。
  • 容器可以启动、停止、移动,并且可以随时销毁,而不会影响主机系统。

Dockerfile:

  • Dockerfile 是一个文本文件,包含了一系列指令,用来告诉 Docker 如何构建镜像。
  • 每个指令都对应镜像的一层,并且每次修改 Dockerfile 都会创建新的镜像层。

Docker Hub:

  • Docker Hub 是一个云端的镜像存储库,允许用户存储和共享 Docker 镜像。用户可以从 Docker Hub 拉取公共镜像,或推送自己的镜像。

1.2 Docker 的优势

  • 一致的运行环境: Docker 提供了一致的开发、测试和生产环境,确保应用程序在不同环境中运行时没有差异。
  • 轻量级: Docker 容器与传统的虚拟机相比更加轻量级,占用资源更少,启动速度更快。
  • 依赖管理: Docker 容器包含应用程序的所有依赖项,避免了“在我的机器上可以工作”的问题。
  • 便捷的版本控制: Docker 镜像是分层构建的,可以很方便地进行版本控制和回滚。
  • 快速部署: Docker 镜像可以快速分发和部署,缩短了从开发到生产的时间。

1.3 Docker 工作流程

  1. 编写 Dockerfile: 开发者编写一个 Dockerfile 来定义应用程序的环境和依赖项。
  2. 构建镜像: 使用 docker build 命令将 Dockerfile 构建成一个镜像。
  3. 运行容器: 使用 docker run 命令从镜像创建并启动一个容器。
  4. 管理容器: 使用各种 Docker 命令(如 docker ps, docker stop, docker rm 等)来管理容器的生命周期。
  5. 发布和分享: 使用 docker push 命令将镜像推送到 Docker Hub,或者从 Docker Hub 拉取其他镜像。

2. 常见命令

最常用的就2、3。

2.1 基本命令

docker version:查看 Docker 的版本信息。

docker info:显示有关 Docker 系统的详细信息,包括容器、镜像和存储驱动等信息。

docker help:显示 Docker 命令的帮助信息。

2.2 镜像操作

docker images:列出本地存储的所有镜像。

docker pull [镜像名]:从 Docker Hub 或其他镜像仓库中拉取指定镜像。

  • 注意: 从可信的源拉取镜像,以避免安全风险。定期更新镜像以获取最新的安全修复和功能改进。

docker build -t [镜像名]:[标签] [Dockerfile 路径]:使用 Dockerfile 构建一个新的镜像。

  • 注意: Dockerfile 中的命令尽量保持简单和明确,以减少镜像层的数量和大小。使用多阶段构建来减少最终镜像的大小。

docker rmi [镜像名或ID]:删除指定的镜像。

docker tag [镜像名]:[标签] [新镜像名]:[新标签]:为现有镜像打标签。

2.3 容器操作

docker ps:列出当前正在运行的所有容器(可以看到下面的容器名和id)。

docker ps -a:列出所有容器,包括未运行的(可以看到下面的容器名和id)。

docker run [选项] [镜像名]:运行一个镜像,生成一个容器。

常用选项:

  • -d:后台运行容器,并返回容器 ID。注意: 后台运行容器时,确保有日志管理方案以便排查问题。
  • -it:以交互模式运行容器,并分配一个伪终端。
  • --name [容器名]:为容器指定一个名称。注意: 使用有意义的名称便于管理和调试。
  • -p [主机端口]:[容器端口]:端口映射。注意: 映射端口时,注意主机和容器的端口冲突问题。
  • -v [主机目录]:[容器目录]:挂载主机目录到容器中。注意: 确保正确的读写权限,避免数据丢失或权限问题。

docker stop [容器名或ID]:停止运行中的容器。

  • 注意: 停止容器时,最好先确保容器内的进程已妥善关闭,以防止数据损坏或丢失。

docker start [容器名或ID]:启动已停止的容器。

docker restart [容器名或ID]:重启容器。

docker rm [容器名或ID]:删除容器。

  • 注意: 删除容器时,请确保容器中的重要数据已备份或持久化,避免数据丢失。可以结合 docker stopdocker rm 使用 docker rm -f 强制删除正在运行的容器。

docker exec -it [容器名或ID] /bin/bash:进入正在运行的容器的终端。

2.4 网络操作

docker network ls:列出所有的网络。

docker network create [网络名]:创建一个新的网络。

  • 注意: 创建自定义网络时,可以选择适当的驱动(如 bridge, overlay),以满足不同的应用场景需求。确保网络配置与主机网络环境不冲突。

docker network rm [网络名]:删除一个网络。

docker network inspect [网络名]:查看网络的详细信息。

2.5 卷操作

docker volume ls:列出所有卷。

docker volume create [卷名]:创建一个新的卷。

  • 注意: 创建卷时,可以指定不同的驱动程序和选项,以满足存储需求。注意卷的生命周期管理,避免产生未使用的孤立卷。

docker volume rm [卷名]:删除一个卷。

  • 注意: 删除卷时,请确保卷中的数据已备份或不再需要,避免数据丢失。

docker volume inspect [卷名]:查看卷的详细信息。

2.6 日志和监控

docker logs [容器名或ID]:查看容器的日志。

  • 注意: 查看日志时,可以使用 --tail-f 选项分别查看最近的日志和实时日志,以便于调试。日志文件可能会很大,建议配置日志驱动和日志轮转策略。

docker stats [容器名或ID]:显示容器的实时资源使用统计信息。

  • 注意: 实时监控容器资源使用情况时,可以结合其他监控工具(如 Prometheus, Grafana)进行更全面的监控和告警。

2.7 清理命令

docker system prune:清理未使用的数据,包括未使用的镜像、挂起的容器、未使用的卷和网络。

  • 注意: 使用清理命令时,要特别注意会删除未使用的数据。建议在生产环境中使用前仔细检查,以免误删重要资源。可以使用 --volumes 选项一并删除未使用的卷,但需谨慎操作。

docker image prune:删除未使用的镜像。

docker container prune:删除所有停止的容器。

docker volume prune:删除未使用的卷。

docker network prune:删除未使用的网络。

3. 注意事项和最佳实践

3.1 镜像操作

  • 从可信的源拉取镜像,以避免安全风险。
  • 定期更新镜像以获取最新的安全修复和功能改进。
  • Dockerfile 中的命令尽量保持简单和明确,以减少镜像层的数量和大小。
  • 使用多阶段构建来减少最终镜像的大小。

3.2 容器操作

  • 后台运行容器时,确保有日志管理方案以便排查问题。
  • 使用有意义的名称便于管理和调试。
  • 映射端口时,注意主机和容器的端口冲突问题。
  • 挂载卷时,确保正确的读写权限,避免数据丢失或权限问题。
  • 停止容器时,最好先确保容器内的进程已妥善关闭,以防止数据损坏或丢失。
  • 删除容器时,请确保容器中的重要数据已备份或持久化,避免数据丢失。
  • 强制删除正在运行的容器时需谨慎操作。

3.3 网络操作

  • 创建自定义网络时,可以选择适当的驱动,以满足不同的应用场景需求。
  • 确保网络配置与主机网络环境不冲突。

3.4 卷操作

  • 创建卷时,可以指定不同的驱动程序和选项,以满足存储需求。
  • 注意卷的生命周期管理,避免产生未使用的孤立卷。
  • 删除卷时,请确保卷中的数据已备份或不再需要,避免数据丢失。

3.5 日志和监控

  • 查看日志时,可以使用 --tail-f 选项分别查看最近的日志和实时日志,以便于调试。
  • 日志文件可能会很大,建议配置日志驱动和日志轮转策略。
  • 实时监控容器资源使用情况时,可以结合其他监控工具进行更全面的监控和告警。

3.6 清理命令

  • 使用清理命令时,要特别注意会删除未使用的数据。
  • 在生产环境中使用前仔细检查,以免误删重要资源。
  • 使用 --volumes 选项一并删除未使用的卷时需谨慎操作。

4.思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/387992.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.1、matlab绘图汇总(图例、标题、坐标轴、线条格式、颜色和散点格式设置)

1、前言 在 MATLAB 中进行绘图是一种非常常见且实用的操作,可以用来可视化数据、结果展示、分析趋势等。通过 MATLAB 的绘图功能,用户可以创建各种类型的图形,包括线图、散点图、柱状图、曲线图等,以及三维图形、动画等复杂的可视化效果。 在绘图之前,通常需要先准备好要…

docker部署容器端口占用问题

docker部署容器端口占用问题 当我在使用 Windows 下使用 Docker Desktop 部署docker容器时经常性发生容器启动失败的提示,并且有的时候重启电脑后就能成功启动容器,这是因为 Hyper-V 引起的 保留端口,这部分端口将会被系统保留,无…

基于SpringBoot+Vue的企业客户信息反馈平台(带1w+文档)

基于SpringBootVue的企业客户信息反馈平台(带1w文档) 基于SpringBootVue的企业客户信息反馈平台(带1w文档) 企业客户信息反馈平台的开发运用java技术,MIS的总体思想,以及MYSQL等技术的支持下共同完成了该平台的开发,实现了企业客户信息反馈管…

【C++】哈希容器

unordered系列关联式容器 在之前的博文中介绍过关联式容器中的map与set,同map与set一样,unordered_set与unordered_set也是关联式容器。 在C98中,STL提供了底层为红黑树结构的一系列关联式容器,查询效率可以达到logN;在…

安装 Terraform for Tencent 使用

第一步 :下载安装包 前往 Terraform 官网,使用命令行直接安装 Terraform 或下载二进制安装文件。 解压并配置全局路径 Linux/MAC:export PATH$PATH:${可执行文件所在目录} 例如:export PATH$PATH:$/usr/bin/terraform Win…

vue2学习 -- 核心语法

文章目录 前置简介1. 模板语法2. 数据2.1 数据绑定2.2 el与data的两种写法2.3 MVVM模型2.4 Object.defineProperty2.5 Vue中的数据代理 3. 事件3.1 事件处理3.2 事件修饰符3.3 键盘事件 4. 计算属性5. 监视(侦听)属性5.1 书写形式5.2 深度监视5.3 简写形式5.4 计算属性和监听属…

Go语言生成excel、将excel保存到本地、将多个excel表格压缩为压缩包、在压缩文件上传OSS删除本地excel文件和压缩包

最近在公司了个需求,主要涉及到文件导出,需要根据特定表格文件生成excel文件导出,同时对导出的excel临时保存本地,生成压缩包,将压缩包上传至OSS(Object Storage Service)后删除本地临时文件。下…

Go+Redis零基础到用户管理系统API实战_20240730 课程笔记

概述 如果您没有Golang的基础,应该学习如下前置课程。 Golang零基础入门Golang面向对象编程Go Web 基础Go语言开发REST API接口_20240728Go语言操作MySQL开发用户管理系统API教程_20240729Redis零基础快速入门_20231227 基础不好的同学每节课的代码最好配合视频进…

AI绘画模型之:VAE、SD 与 SD-XL

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…

Linux常用工具

文章目录 tar打包命令详解unzip命令:解压zip文件vim操作详解netstat详解df命令详解ps命令详解find命令详解 tar打包命令详解 tar命令做打包操作 当 tar 命令用于打包操作时,该命令的基本格式为: tar [选项] 源文件或目录此命令常用的选项及…

19082 中位特征值

这个问题可以通过深度优先搜索(DFS)和优先队列来解决。我们首先使用DFS来计算每个节点的特征值,然后我们将所有节点的特征值放入一个优先队列中,然后我们从优先队列中取出中间的元素,这就是我们要找的中位数。 以下是…

如何选择合适的自动化测试工具!

选择合适的自动化测试工具是一个涉及多方面因素的决策过程。以下是一些关键步骤和考虑因素,帮助您做出明智的选择: 一、明确测试需求和目标 测试范围:确定需要自动化的测试类型(如单元测试、集成测试、UI测试等)和测试…

React-Native 宝藏库大揭秘:精选开源项目与实战代码解析

1. 引言 1.1 React-Native 简介 React-Native 是由 Facebook 开发的一个开源框架,它允许开发者使用 JavaScript 和 React 的编程模型来构建跨平台的移动应用。React-Native 的核心理念是“Learn Once, Write Anywhere”,即学习一次 React 的编程模型&am…

社区养老服务小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,服务人员管理,服务产品管理,服务预约管理,服务状态管理,服务退订管理,活动管理,视频管理 微信端账号功能包…

基于cubeMX的STM32的RTC实时时钟实现

1、在仪器仪表的项目开发中,时常需要设备显示当前的日期和时间,这时,可以使用STM32自带的RTC实时时钟模块来实现此功能。这里我们使用STM32F103RCT6单片机芯片为例。 2、cubeMX的设置 (1)RTC设置 (2&…

民大食堂用餐小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,商家管理,档口号管理,商家餐品管理,餐品种类管理,购物车管理,订单信息管理 微信端账号功能包括:系统首页&a…

yolov10来了!用yolov10训练自己的数据集(原理、训练、部署、应用)

一、引言 YOLOv9还没热乎呢,YOLOv10就出来了,太卷了!太快了! 自今年2月YOLOv9发布之后, YOLO(You Only Look Once) 系列的接力棒传到了清华大学研究人员的手上。YOLOv10推出的消息引发了AI界的…

使用 Postman 进行 Trello API 自动化测试的完整指南

文章目录 前言一、自动化测试是什么?二、比较自动化测试与手工测试1. 自动化测试2. 手工测试 三、环境搭建1.创建Collection2.创建环境变量3.添加API请求 四、设计测试用例1. API简单调用2. 获取所有emoji3. 创建一个新看板:4. 获得创建的看板信息5. 在看…

安装nodejs服务器

Java项目可以运行在tomcat服务器,开始完成前后端完全分离。前端有自己独立的工程。我们需要把前端独立的工程运行起来。 运行在nodejs服务器下。 验证是否安装成功:敲cmd--输入node --version 1.安装npm java项目需要依赖jar,安装maven。前端项目也需要依…

Vitis HLS 完美嵌套循环通过 m_axi 接口读取DDR 的迭代次数细粒度控制实验 — 问题描述

1 自媒体账号 目前运营的自媒体账号如下: 哔哩哔哩 【雪天鱼】: 雪天鱼个人主页-bilibili.comCSDN 【雪天鱼】: 雪天鱼-CSDN博客 QQ 学习交流群 FPGA科研硕博交流群 910055563 (进群有一定的学历门槛,长期未发言会被请出群聊,主要交流FPG…