Docker的常用命令

Docker的常用命令

Docker是一个开源的应用容器引擎,它使得开发者能够打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间没有任何接口(类似于iOS系统上的APP)。今天,我们将一起探讨Docker的一些常用命令。

1. Docker基础命令

  • docker version:查看Docker的版本信息。
  • docker info:查看Docker的系统信息,包括容器和镜像的数量等。
  • docker --help:查看Docker的帮助文档。

2. 镜像相关命令

  • docker images:列出本地所有的镜像。
  • docker search <镜像名>:在Docker Hub中搜索镜像。
  • docker pull <镜像名>:<标签>:从Docker Hub中拉取镜像。如果不写标签,默认拉取最新版本。
  • docker rmi <镜像ID>:删除指定的镜像。

3. 容器相关命令

  • docker run [OPTIONS] IMAGE [COMMAND] [ARG...]:创建并启动一个容器。这是最常用的Docker命令。
  • docker ps:查看正在运行的容器。加上-a参数可以查看所有容器(包括停止的)。
  • docker stop <容器ID>:停止正在运行的容器。
  • docker start <容器ID>:启动已停止的容器。
  • docker restart <容器ID>:重启容器。
  • docker rm <容器ID>:删除容器。注意,只能删除已停止的容器。如果要删除正在运行的容器,需要先停止它。
  • docker exec -it <容器ID> /bin/bash:进入正在运行的容器。

4. 其他常用命令

  • docker logs <容器ID>:查看容器的日志信息。
  • docker cp <容器ID>:/文件路径 /宿主机路径:从容器中拷贝文件到宿主机。
  • docker commit <容器ID> <新镜像名>:<标签>:从容器创建一个新的镜像。这在你对容器进行了修改,并希望保存这些修改为一个新的镜像时非常有用。

当然,让我们继续深入探讨Docker的更多常用命令和高级功能。

5. Docker网络相关命令

  • docker network ls:列出所有Docker网络。
  • docker network create <网络名>:创建一个新的Docker网络。
  • docker network rm <网络名>:删除一个Docker网络。注意,只能删除没有容器连接的网络。
  • docker network connect <网络名> <容器名>:将容器连接到网络。
  • docker network disconnect <网络名> <容器名>:将容器从网络中断开。

6. Docker数据卷相关命令

  • docker volume ls:列出所有Docker数据卷。
  • docker volume create <卷名>:创建一个新的Docker数据卷。
  • docker volume rm <卷名>:删除一个Docker数据卷。
  • docker volume inspect <卷名>:查看Docker数据卷的详细信息。

7. Docker Compose相关命令

Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。通过Compose,你可以使用YML文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从YML文件配置中创建并启动所有服务。

  • docker-compose up:创建并启动所有服务。加上-d参数可以在后台运行。
  • docker-compose down:停止并删除所有服务。加上--volumes参数还可以删除关联的数据卷。
  • docker-compose ps:查看正在运行的服务。
  • docker-compose logs:查看服务的日志信息。
  • docker-compose exec <服务名> <命令>:在服务中执行命令。

8. Docker Swarm相关命令

Docker Swarm是一个容器编排工具,它允许用户轻松地在集群上部署、扩展和管理容器。Swarm提供了高可用性和容错性,可以确保你的应用程序始终在线。

  • docker swarm init:初始化一个新的Swarm集群。
  • docker swarm join:将节点加入到Swarm集群。
  • docker swarm leave:将节点从Swarm集群中移除。
  • docker node ls:列出Swarm集群中的所有节点。
  • docker service create:在Swarm集群上创建一个新的服务。
  • docker service ls:列出Swarm集群中的所有服务。
  • docker service scale <服务名>=<副本数>:扩展或缩减服务的副本数。
  • docker service rm <服务名>:删除一个服务。

8.示例

当然,以下是一些Docker常用命令的示例:

1. 拉取镜像

拉取一个名为nginx的镜像,标签为latest

docker pull nginx:latest

2. 列出本地镜像

查看本地存储的所有镜像:

docker images

3. 创建并启动容器

使用nginx:latest镜像创建一个名为my_nginx的容器,并在后台运行:

docker run --name my_nginx -d nginx:latest

将容器的80端口映射到主机的8080端口,并创建容器:

docker run --name my_nginx -p 8080:80 -d nginx:latest

4. 查看正在运行的容器

查看当前正在运行的容器:

docker ps

查看所有容器(包括已停止的):

docker ps -a

5. 停止和启动容器

停止名为my_nginx的容器:

docker stop my_nginx

启动已被停止的名为my_nginx的容器:

docker start my_nginx

6. 删除容器

删除已停止的名为my_nginx的容器:

docker rm my_nginx

强制删除正在运行的名为my_nginx的容器:

docker rm -f my_nginx

7. 进入容器

进入正在运行的名为my_nginx的容器,并执行/bin/bash命令:

docker exec -it my_nginx /bin/bash

8. 查看容器日志

查看名为my_nginx的容器的日志信息:

docker logs my_nginx

以上就是一些Docker常用命令的示例,希望对你有所帮助!在实际使用中,你可以根据需要进行组合和调整。
当然,我们可以继续探讨更多Docker命令的示例。

9. 创建自定义镜像

假设你已经在容器中做了一些修改,并希望将这些修改保存为一个新的镜像。首先,你需要找到容器的ID或名称:

docker ps -a

假设容器的ID是abcd1234,你可以使用commit命令创建一个新的镜像:

docker commit abcd1234 my_custom_nginx:v1

这将会创建一个新的镜像,名称为my_custom_nginx,标签为v1

10. 导出和导入容器

如果你想将一个容器导出为tar文件,可以使用export命令:

docker export abcd1234 > my_container.tar

之后,你可以将这个tar文件导入到其他Docker环境中,创建一个新的镜像:

cat my_container.tar | docker import - my_imported_container:v1

注意:通常更推荐使用docker commit来创建镜像,因为export/import不会保留容器的历史记录和元数据。

11. 保存和加载镜像

如果你想保存一个镜像(包括其所有层和元数据)为tar文件,可以使用save命令:

docker save -o nginx_image.tar nginx:latest

之后,你可以加载这个tar文件到其他Docker环境中:

docker load -i nginx_image.tar

12. 构建镜像

使用build命令和Dockerfile来构建一个新的镜像:

docker build -t my_app:v1 .

这里的.表示Dockerfile位于当前目录中。-t参数用于指定新镜像的名称和标签。

13. 查看容器资源使用情况

查看容器的CPU、内存、网络等资源使用情况:

docker stats my_nginx

14. 清理Docker系统

删除所有停止的容器:

docker container prune

删除所有未使用的镜像(不包括正在运行的容器所使用的镜像):

docker image prune

删除所有未使用的网络和数据卷:

docker system prune -a

注意:使用docker system prune -a命令时要小心,因为它会删除所有未使用的资源,包括未连接的网络和未使用的数据卷。如果你想保留这些数据,请不要使用-a选项。

这些示例应该涵盖了Docker的大部分常用命令。当然,Docker的功能非常丰富,还有更多高级用法和选项等待你去探索。

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

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

相关文章

正版IDM多少钱?如何便宜购买序列号

IDM是一款互联网下载神器&#xff0c;它的全称是Internet Download Manager&#xff0c;可以将下载速度提升至5倍以上。那么IDM正版多少钱&#xff1f;如何才能买到正版IDM序列号呢&#xff1f; 正版IDM的价格根据付费模式和购买渠道不同&#xff0c;所需要的价格也是不同的。…

挑战30天学完Python:Day20 PIP 包管理

&#x1f389; 本系列为Python基础学习&#xff0c;原稿来源于 30-Days-Of-Python 英文项目&#xff0c;大奇主要是对其本地化翻译、逐条验证和补充&#xff0c;想通过30天完成正儿八经的系统化实践。此系列适合零基础同学&#xff0c;或仅了解Python一点知识&#xff0c;但又没…

打开 Camera app 出图,前几帧图像偏暗、偏色该怎样去避免?

1、问题背景 使用的安卓平台&#xff0c;客户的应用是要尽可能快的获取到1帧图像效果正常的图片。 但当打开 camera 启动出流后&#xff0c;前3-5帧图像是偏暗、偏色的&#xff0c;如下图所示&#xff0c;是抓取出流的前25帧图像&#xff0c; 前3帧颜色是偏蓝的&#xff0c;…

Vue3 学习笔记(Day4)

「写在前面」 本文为尚硅谷禹神 Vue3 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. Vue3 学习笔记&#xff08;Day1&#xff09; 2. Vue3 学习笔记&#xff08;Day2&…

Redis如何修改key名称

点击上方蓝字关注我 近期出现过多次修改Redis中key名字的场景&#xff0c;本次简介一下如何修改Redis中key名称的方法。 1. 命令行方式修改在Redis中&#xff0c;可以使用rename命令来修改Key的名称。这个命令的基本语法如下&#xff1a; RENAME old_key new_key 在这里&#…

信息学奥赛一本通1205:汉诺塔问题

1205&#xff1a;汉诺塔问题 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 47778 通过数: 18652 【题目描述】 约19世纪末&#xff0c;在欧州的商店中出售一种智力玩具&#xff0c;在一块铜板上有三根杆&#xff0c;最左边的杆上自上而下、由小到大顺序串着由64…

【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-NR编解码LDPC和Polar概述(一)

目录 NR LDPC和Polar编码技术概述 LDPC&#xff08;低密度奇偶校验码&#xff09; LDPC 工作原理 LDPC 应用场景&#xff1a; LDPC 与其他编码技术相比的优势&#xff1a; Polar 极化码 Polar 工作原理 Polar 应用场景&#xff1a; Polar 与其他编码技术相比的优势&am…

项目实战:Qt监测操作系统物理网卡通断v1.1.0(支持windows、linux、国产麒麟系统)

若该文为原创文章&#xff0c;转载请注明出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/136276999 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

Gitflow:一种依据 Git 构建的分支管理工作流程模式

文章目录 前言Gitflow 背景Gitflow 中的分支模型Gitflow 的版本号管理简单模拟 Gitflow 工作流 前言 Gitflow 工作流是一种版本控制流程&#xff0c;主要适用于较大规模的团队。这个流程在团队中进行合作时可以避免冲突&#xff0c;并能快速地完成项目&#xff0c;因此在很多软…

Unity 动态创建Mesh 基础方法与高级方法

最近在做项目优化&#xff0c;注意到动态创建Mesh时&#xff0c;Unity提供了一套高级方法用于快速创建模型&#xff0c;特此记录学习一下。 前言 关于Mesh的基本概念再次不在阐述&#xff0c;可以参考Unity Mesh 官方文档&#xff0c;介绍的很详细&#xff0c;其中 基础方法…

數據集成平台:datax將MySQL數據同步到hive(全部列和指定列)

1.數據集成平台&#xff1a;將MySQL數據同步到hive&#xff08;全部和指定列&#xff09; python環境&#xff1a;2.7版本py腳本 傳參&#xff1a; source_database&#xff1a;數據庫 source_table&#xff1a;表 source_columns&#xff1a;列 source_splitPk&#xff1a;sp…

YOLOv8改进 | Conv篇 | 利用YOLOv9的GELAN模块替换C2f结构(附轻量化版本 + 高效涨点版本 + 结构图)

一、本文介绍 本文给大家带来的改进机制是利用2024/02/21号最新发布的YOLOv9其中提出的GELAN模块来改进YOLOv8中的C2f,GELAN融合了CSPNet和ELAN机制同时其中利用到了RepConv在获取更多有效特征的同时在推理时专用单分支结构从而不影响推理速度,同时本文的内容提供了两种版本…

[数据集][目标检测]游泳者溺水数据集VOC+YOLO格式2类别895张

数据集制作单位&#xff1a;未来自主研究中心(FIRC) 数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;895 标注数量(xml文件个数)&#xff1a…

遗传算法优化LSTM回归预测,ga-lstm时间序列的预测

​目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 遗传算法原理 遗传算法优化LSTM回归预测,ga-lstm时间序列的预测 MATALB代码:遗传算法优化LSTM回归预测,ga-lstm时间序列的预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/8887…

【文生视频】Diffusion Transformer:OpenAI Sora 原理、Stable Diffusion 3 同源技术

文生视频 Diffusion Transformer&#xff1a;Sora 核心架构、Stable Diffusion 3 同源技术 提出背景变换器的引入Diffusion Transformer (DiT)架构Diffusion Transformer (DiT)总结 OpenAI Sora 设计思路阶段1: 数据准备和预处理阶段2: 架构设计阶段3: 输入数据的结构化阶段4: …

云安全威胁及日常防护方案建议

随着互联网技术发展&#xff0c;企业越来越多地采用云服务&#xff0c;云安全成为了企业IT安全的重要组成部分。然而&#xff0c;伴随技术的发展普及&#xff0c;云安全也面临着许多安全风险。下面我们就来简单了解下目前常见的一些云安全风险以及有什么防护方案。 1、云平台配…

基于qt的图书管理系统----04sql功能开发

参考b站&#xff1a;视频连接 源码github&#xff1a;github 目录 1 封装一个全局的对象2 设计所有接口2.1 初始化数据库接口2.2 登陆接口2.3 条件查询用户接口 1 封装一个全局的对象 新建一个cclass&#xff0c;sqlmange&#xff0c;并且在.pro文件中添加上sql 使用c单例模…

Linux进程【补充】

文章目录 进程概念task_struct 进程创建forkvfork写时拷贝 进程状态僵尸进程孤儿进程守护进程 进程地址空间是什么为什么怎么做 进程概念 进程是一个程序的执行实例或者是担当系统资源分配的实体。当一个程序运行时&#xff0c;被从硬盘加载到内存中&#xff0c;操作系统为每个…

Python实战:爬取小红书——采集笔记详情

上一篇文章发出后&#xff0c;有读者问能不能爬到小红书笔记详情数据&#xff0c;今天他来了。 Python实战&#xff1a;爬取小红书 一、先看效果 程序输入&#xff1a;在一个txt文件内粘贴要爬取的笔记链接&#xff0c;每行放1个链接。 程序输出&#xff1a;输出是一个所有笔记…

Mybatis执行过程

1、加载配置文件 InputStream is Resources.getResourceAsStream("mybatis-config.xml"); 2、获得session对象&#xff0c;接受结果 SqlSessionfactoryBuilder builder new SqlSessionfactoryBuilder(); SqlSessionFactory factory builder .build(is); SqlSessio…