Docker简介和Docker常见命令

news2024/12/27 13:19:24

目录

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.coloradmin.cn/o/1962955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

18730 涂色问题

这个问题可以通过动态规划来解决。我们可以定义一个状态dp[i][j],表示前i个牛舍中最后一个牛舍的颜色是j的涂色方案数量。然后我们可以通过状态转移方程来更新dp[i][j]。 状态转移方程如下: dp[i][j] dp[i-1][k] (k ! j) 然后我们需要对所有的dp[i][…

数据结构——排序(C语言版)

冒泡排序: 冒泡排序是一种简单直观的排序算法,其基本思想是多次遍历待排序数组,每次遍历时比较相邻的两个元素,如果它们的顺序不符合排序规则(比如升序),则交换它们的位置,直到整个数…

Oracle数据库入门

目录 Oracle基础概念数据库安装连接Oracle查看当前用户 数据表的基本概念查看当前系统表Orcale函数单行函数多行函数/组函数/聚合函数 SQL语句DMLinsert批量插入数据创建新表在旧表中插入 delete全表删除 update DDLcreatealterdrop 连接 Oracle基础概念 数据库: 数据的仓库 以…

探索大模型的“心理理论”能力:TMBENCH基准测试

人工智能咨询培训老师叶梓 转载标明出处 心理理论是理解他人信念、意图、情感等心理状态的能力,对人类社会交往至关重要。近期研究引发了关于LLMs是否展现出ToM的辩论。然而,现有的评估方法受限于范围狭窄、主观判断和潜在的数据污染等问题,无…

万能DIY预约小程序源码系统 自由DIY 适合任何行业的在线预约小程序 带源代码包以及搭建部署教程

系统概述 随着移动互联网的发展,小程序作为一种轻量级应用,因其便捷性和易用性而受到广大用户的喜爱。各行各业都在积极探索如何利用小程序提升服务体验。小编给大家分享一款万能DIY预约小程序的源码系统,该系统支持自由定制,适用…

S3GCL Spectral, Swift, Spatial Graph Contrastive Learning

发表于:PMLR24 推荐指数: #paper/⭐⭐⭐ 总结做了什么: 利用gcn对比学习训练mlp来提取特征嵌入,使得训练完毕使用的时候,可以更快的得到嵌入(类似于师生蒸馏的加速).其中,结合了异配图的chebnet2,以及高通低通过滤,和非对称对比学习等 看图解释:作者将全通的MLP训练得到的嵌入…

PostgreSQL入门与进阶学习,体系化的SQL知识,完成终极目标高可用与容灾,性能优化与架构设计,以及安全策略

​专栏内容: postgresql使用入门基础手写数据库toadb并发编程 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 文章目录 概述基础篇初级篇进阶篇…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 7月31日,星期三

每天一分钟,知晓天下事! 2024年7月31日 星期三 农历六月廿六 1、 海关总署:我国关税总水平目前已经降至7.3%,接近发达国家平均水平。 2、 网络身份证要来了:两部门征求意见,拟为社会公众统一签发网号、网证…

HighConcurrencyCommFramework c++通讯服务器框架 :网路通迅实战

数据总在两端进行,一个客户端,一个服务器端 连接建立起来,数据双向流动,这叫双工,你可以发给我我也可以发给你 既然服务器端是被动的接受的,那么客户端必须得知道服务器的地址 我浏览器要访问的淘宝网&a…

基于Spring boot + Vue的加油站系统

项目名称:加油站系统 作者的B站地址:程序员云翼的个人空间-程序员云翼个人主页-哔哩哔哩视频 csdn地址:程序员云翼-CSDN博客 1.项目技术栈: 前后端分离的项目 后端:Springboot MybatisPlus 前端:Vue…

Jetbrains Idea插件开发教程

背景介绍 痛点:在idea开发过程中,希望按需驼峰选中文本。现在默认是一整个单词选中,只有在设置–>智能按键 中开启了使用"CamelHumps单词"时能够驼峰选中。但是这种情况比较粗暴,直接全局开启了。但是在日常开发中&…

论文《Few-Shot Object Detection with Model Calibration》的解读

《Few-Shot Object Detection with Model Calibration》论文的解读 作者:Qi Fan1, Chi-Keung Tang1 , and Yu-Wing Tai1,2 单位:1 The Hong Kong University of Science and Technology, 2 Kuaishou Technology 邮箱:fanqicsgmail.com, ckta…

Unity | Shader基础知识(第二十一集:应用-怪兽膨胀、顶点着色器和表面着色器合并)

目录 一、前言 二、资源介绍 三、顶点着色器和表面着色器一起使用基础 1.使用表面着色器代码 2.光照选择 3.加入顶点着色器 4.补充表面着色器 四、在顶点着色器中完成怪兽膨胀功能 1.膨胀原理解释 2.完成膨胀代码 1).写出需要的结构体 2&#xff09…

修改所属用户/用户组——chown

目录 (1)修改所属用户 (2)修改所属用户组 (3)修改所属用户和用户组 (4) 选项 -R 使用 chown 可以修改文件/文件夹的所属用户,所属用户组; 当然与 chmod …

7thonline第七在线出席中服协时尚科技峰会 探讨AI商品管理落地

7月25-26日,中国服装协会2024中国时尚科技创新峰会在杭州隆重举行,本次大会以“新质焕能,革故鼎新”为主题,为持续推动服装产业鼎力创新,以新质生产力的新特征为引领,布局高质量发展新赛道,充分…

MySQL基础练习题15-进店却未进行交易过的顾客

题目:有一些顾客可能光顾了购物中心但没有进行交易。来查找这些顾客的 ID ,以及他们只光顾不交易的次数。 准备数据 分析数据 题目:有一些顾客可能光顾了购物中心但没有进行交易。来查找这些顾客的 ID ,以及他们只光顾不交易的次…

c++迭代器的介绍

迭代器主要的作用就是为了可以像数组那样实现指针向后移动到下一个数据。同时迭代器统一了所有容器,让所有容器可以通过迭代器互通数据。 那么下面我们来看看迭代器 数组的优势 我们数组的优势就是内存连续,那么我们将首地址的地址进行加减就可以访问…

【多线程】补充内容 {线程池;线程安全的单例模式;STL容器、智能指针的线程安全;其他常见的各种锁:自旋锁、读写锁}

一、线程池 1.1 概念 线程池一种线程使用模式: 线程过多会带来调度开销,进而影响缓存局部性和整体性能。 而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务:(线程池的优点) 这避免了在处…

将真实世界带入实验室—如何使用ALPS进行网络损伤仿真测试

不完美的真实世界网络 不同于稳定、可控的传统网络实验室的网络环境,真实世界的网络环境面临着许多挑战和风险,这些挑战在很大程度上增加了网络的脆弱性和复杂性: (1)物理损伤:真实世界的网络基础设施&am…

Java扫码点餐系统奶茶店类型堂食配送小程序源码

🥤【奶茶新风尚!扫码点餐系统,堂食配送两不误】🥤 🏠【堂食新体验:一键下单,即享美味】🏠 踏入心仪的奶茶店,不再需要排队等候点单,只需拿起手机&#xff0…