Docker 常用命令以及镜像选择

目录

1.Docker基本组成

2.镜像选择

2.1、镜像推荐选择方案

2.2版本选择

3.Docker 命令

3.1镜像管理

拉取镜像:

列出镜像:

删除镜像:

构建镜像:

3.2容器管理

 运行容器 

列出运行中的容器和所有容器

停止容器

启动重启容器

删除容器

查看容器日志

进入容器

3.3网络管理

3.4卷管理

指定卷删除(需要配合compose的隐式命令才能执行)

其他

3.5镜像和容器清理

3.6其他常用命令

查看 Docker 系统信息和容器详细信息

inspect详细信息

显示 Docker 版本

导出容器

导入镜像

镜像 save压缩load 解压


前言-与正文无关

生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中,我们往往容易陷入工作的漩涡,忘记了停下脚步,感受周围的世界。让我们一起提醒自己,要适时放慢脚步,欣赏生活中的每一道风景,享受与家人朋友的温馨时光,发现那些平凡日子里隐藏的幸福时刻。因为,这些点点滴滴汇聚起来的,才是构成我们丰富多彩生活的本质。希望每个人都能在繁忙的生活中找到自己的快乐之源,不仅仅为了生存而工作,更为了更好的生活而生活.

送你张美图!希望你开心!

1.Docker基本组成

docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);

docker仓库(Registry):用来保存各种打包好的软件镜像;仓库分为公有仓库和私有仓库。(很类似 maven)

docker镜像(Images):软件打包好的镜像;放在docker仓库中;

docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用

2.镜像选择

比如我想下个mysql,但是docker hub仓库中有太多镜像了,我如何选择我想要的那个镜像呢

2.1、镜像推荐选择方案

搜索官方镜像:在 Docker Hub 上搜索 mysql。官方镜像通常会带有“官方”标签。

 找下面两种标识的也是可以的,一个是发行商是经过验证的,一个是oss验证

  • 下载次数和评分:查看镜像的下载次数和评分,选择下载量多、评分高的镜像。
  • 维护情况:阅读镜像页面的详细信息和使用说明。官方镜像页面通常会提供如何配置、启动和管理容器的详细信息。检查镜像的维护情况,查看最近的更新记录和问题反馈。选择维护频繁、问题反馈及时的镜像。

2.2版本选择

  • 避免使用 latest:在生产环境中,最好避免使用 latest 标签,因为它的内容可能会随时间变化,导致不可预见的问题。
  • 使用具体版本号或 LTS 标签LTS 代表长期支持(Long-Term Support)。它指的是那些被维护时间更长,通常更加稳定和可靠的版本。指定特定版本号或使用 lts 标签可以确保每次部署的镜像是一致的,减少由于镜像版本变动带来的风险。

3.Docker 命令

        

3.1镜像管理

  • 拉取镜像:

        拉取远程仓库中的镜像到本地。

docker pull <image_name>
  • 列出镜像:

        列出本地所有镜像。

docker images

REPOSITORY 名称,一般和TAG组合使用形成唯一

TAG 版本号

IMAGE ID 镜像唯一id

CREATED是镜像作者发布到docker外网的时间,不是拉取到本地的时间

SIZE 镜像大小

  • 删除镜像:

        删除本地的某个镜像。

docker rmi <image_name>

例如:docker rmi  tomcat:9.0.20-jre8-alpine

除了按照名称也可以按照image ID进行删除,建议还是上面的名称删除,因为tagID在终端长度未完全显示,ID值会出现重复

  • 构建镜像:

使用当前目录的 Dockerfile 构建镜像。

docker build -t <image_name> .

3.2容器管理

  •  运行容器 

         使用指定镜像启动容器,-d 表示后台运行,-p 用于端口映射。 --name设置容器名或镜像名

docker run -d -p 80:80 --name <container_name> <image_name> ....

常用参数 :

-d, --detach=false: 后台运行容器,并返回容器ID ,加d就不能使用--rm了

-i, --interactive=false: 以交互模式运行容器,通常与 -t 同时使用

-P, --publish-all=false: 随机端口映射,容器内部端口随机映射到主机的端口。不推荐各位小伙伴 使用该参数

-p, --publish=[]: 指定端口映射,格式为:主机(宿主)端口:容器端口,推荐各位小伙伴们使用

-t, --tty=false: 为容器重新分配一个伪输入终端,通常与 -i 同时使用

--name="nginx-lb": 为容器指定一个名称

-h , --hostname="laosiji": 指定容器的hostname

-e , --env=[]: 设置环境变量,容器中可以使用该环境变量

--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型

--link=[]: 添加链接到另一个容器;不推荐各位小伙伴使用该参数

-v, --volume : 绑定一个卷

--privileged=false: 指定容器是否为特权容器,特权容器拥有所有的capabilities

--restart=no:指定容器停止后的重启策略

no:容器退出时不重启

on-failure:容器故障退出(返回值非零)时重启

always:容器退出时总是重启,推荐各位小伙伴们使用

--rm=false: 指定容器停止后自动删除容器,不能以docker run -d启动的容器

  • 列出运行中的容器和所有容器

        列出当前正在运行的容器。

docker ps

        列出所有容器(包括已停止的)。

docker ps -a

参数详解输出详情介绍:

CONTAINER ID: 容器 ID。

IMAGE: 使用的镜像。

COMMAND: 启动容器时运行的命令。

CREATED: 容器的创建时间。

STATUS: 容器状态。

状态有7种:

created(已创建)

restarting(重启中)

running(运行中)

removing(迁移中)

paused(暂停)

exited(停止)

dead(死亡)

PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

NAMES: 自动分配的容器名称。

  • 停止容器

大部分命令如果可以使用容器的id(container_id),其实也可以使用容器名

        停止指定容器。

docker stop <container_id>

  • 启动重启容器

        启动已停止的容器。

docker start <container_id>

       重启容器

       

  docker restart  <container_id>
  • 删除容器
    删除指定容器。
    
    docker rm <container_id>

    删除容器并同时删除数据卷:

        如:sudo docker rm -v <container_name_or_id>

        例如:

        先以此命令运行一个容器 docker run -itd --name tomcat9 -p 8080:8080 tomcat:9.0.20-jre8-alpine

        需要先停止运行中的容器再删除,否则无法删除容器

        docker stop tomcat9

        按照容器名称删除

        docker rm tomcat9

        按照容器ID删除

        docker rm 8dd95a95e687

rm可以关联参数

        -f :通过 SIGKILL 信号强制删除一个运行中的容器。

        -l :移除容器间的网络连接,而非容器本身。

        -v :删除与容器关联的卷。


 

  • 查看容器日志

        查看容器输出的日志。

docker logs <container_id>

例如:docker logs -f tomcat9

        -f : 跟踪日志输出

        --tail :仅列出最新N条容器日志

  • 进入容器

        进入正在运行的容器,/bin/bash 是要执行的命令,通常用于进入容器的交互式终端。

docker exec -it <container_id> /bin/bash

        /bin/bash 是有bash命令的linux系统:例如centos

        docker exec -it tomcat9.1 /bin/bash

        没有bash命令的linux系统:如下命令,例如alpine系统

        docker exec -it tomcat9.2 sh

                -i :即使没有附加也保持STDIN 打开

                -t :分配一个伪终端

exit退出容器

3.3网络管理

  • 列出网络

    列出所有 Docker 网络。

docker network ls
  • 创建网络

        创建新的 Docker 网络。

docker network create <network_name>

  • 连接容器到网络

        将容器连接到指定网络。

docker network connect <network_name> <container_name>

  • 断开容器与网络的连接

        将容器从指定网络断开。

docker network disconnect <network_name> <container_name>

3.4卷管理

指定卷删除(需要配合compose的隐式命令才能执行)

删除容器并同时删除数据卷:

sudo docker rm -v <container_name_or_id>

删除所有未使用的数据卷

如果你想要删除所有未使用的数据卷,可以使用以下命令:这将删除所有未使用的(即不再关联任何容器的)数据卷。

sudo docker volume prune

 查询闲的数据卷

你可以通过以下命令查看所有未挂载的数据卷(这些是已经删除容器后孤立的数据卷):

sudo docker volume ls -f dangling=true
其他
  • 列出卷

    列出所有卷。

    docker volume ls

  • 创建卷

    创建新的卷。

    docker volume create <volume_name>

  • 查看卷详细信息

    查看卷的详细信息。

    docker volume inspect <volume_name>

  • 删除卷

    删除指定卷。

    ​​​​​​​docker volume rm <volume_name>

3.5镜像和容器清理

  • 清理未使用的镜像、容器、卷和网络

    我们在使用 Docker 一段时间后,系统一般都会残存一些临时的、没有被使用的镜像、容器、卷和网络,可以通过以下命令进行清理。执行完命令后,还是告诉我们释放了多少存储空间!​​​​​​​

​​​​​​​docker system prune

3.6其他常用命令

  • 查看 Docker 系统信息和容器详细信息

    查看 Docker 的系统级别信息。

    ​​​​​​​docker info
    inspect详细信息

        寻找容器在服务器存储位置

        docker ps -a找到容器id/容器名称

        docker inspect 容器id/容器名称 | grep UpperDir找出该容器在物理机的位置

        cd到UpperDir所指向的地址,找到配置文件并修改,到这后,这个位置和你用exec命令进入容器内看到文件是一致的

  • 显示 Docker 版本

    显示 Docker 客户端和服务端的版本信息。

    docker version

  • 导出容器

    将容器导出为一个 tar 文件。

    docker export <container_id> -o <filename>.tar

  • 导入镜像

    从 tar 文件中导入镜像。

    docker import <filename>.tar

  • 镜像 save压缩load 解压

    推荐-o方式,语法是save后是上图镜像信息的REPOSITORY冒号加TAG组合而成的,最后写成要打包的名字

    docker save tomcat:9.0.20-jre8-alpine -o tomcat9.tar

    docker save tomcat:9.0.20-jre8-slim > tomcat9.slim.tar

    批量打包

load:解压至本地镜像

将上面save保存的包解压并放到本地仓库,通过docker images 重新获取信息

docker load -i linux.tar

docker load < tomcat9.0.20.tar

------------------------------------------与正文内容无关------------------------------------
 如果觉的文章写对各位读者老爷们有帮助的话,麻烦点赞加关注呗!作者在这拜谢了!

混口饭吃了!如果你需要Java 、Python毕设、商务合作、技术交流、就业指导、技术支持度过试用期。请在关注私信我,本人看到一定马上回复!

这是我全部文章所在目录,看看是否有你需要的,如果遇到觉得不对地方请留言,看到后我会查阅进行改正。

A乐神-CSDN博客

关注在文章左上角,作者信息处。

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

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

相关文章

【Qt】QPushButton 与 QAction 的区别

1. QPushButton QPushButton 是一个界面控件&#xff0c;能显示到界面上的。QPushButton 是 QWidget的一个子类&#xff0c;是一个表示按钮的界面控件。它用于在GUI中提供一个标准的按钮&#xff0c;用户可以点击它来触发一个即时的动作或命令。按钮可以显示文本、图标或两者都…

为什么要将Modbus转成MQTT

什么是Modbus Modbus 是一种串行通信协议&#xff0c;最初由Modicon&#xff08;现在的施耐德电气Schneider Electric&#xff09;于1979年开发&#xff0c;用于可编程逻辑控制器&#xff08;PLC&#xff09;之间的通信。Modbus协议设计简单&#xff0c;易于部署和维护&#xf…

从零入手人工智能(2)——搭建开发环境

1.前言 作为一名单片机工程师&#xff0c;想要转型到人工智能开发领域的道路确实充满了挑战与未知。记得当我刚开始这段旅程时&#xff0c;心中充满了迷茫和困惑。面对全新的领域&#xff0c;我既不清楚如何入手&#xff0c;也不知道能用人工智能干什么。正是这些迷茫和困惑&a…

用Python实现奇怪的疯狂按键需求

项目背景 说起来好笑,假设有一个奇怪需求 — 仅仅是假设,不代表我有这个需求,虽然可以想象有人会有这个需求,但是这个人不是我,我也不认识任何这样的人 — 疯狂向某个程序输出按键,比如,一会儿疯狂输入f,一会儿疯狂输入q。 如果是两个按键需求,我想要设置一个最简单…

M1Pro 使用跳板机

Mac (M1 Pro) 通过Iterm2 使用跳板机 1、由于堡垒机&#xff08;跳板机&#xff09;不能支持mac系统终端工具&#xff0c;只支持xshell等win生态。所以我们需要先安装iterm2 装iterms教程 这里头对rz、sz的配置不详细。我们可以这样配置&#xff1a; where iterm2-send-zmod…

Windows 11中删除分区的几种方法,总有一种适合你

序言 想从Windows 11 PC中删除一个分区,以便将空间重新分配给现有分区或创建一个新分区吗?我们将为你介绍删除Windows 11分区的多种方法。 删除Windows上的分区时会发生什么 删除分区时,Windows会擦除该分区的内容,并将该分区从电脑上的任何位置删除。你将丢失保存在该分…

Github 2024-06-05 C开源项目日报 Top10

根据Github Trendings的统计,今日(2024-06-05统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目10C++项目2Python项目1我的电视 - 安卓电视直播软件 创建周期:40 天开发语言:CStar数量:649 个Fork数量:124 次关注人数:649 人贡献人…

单元测试覆盖率

什么是单元测试覆盖率 关于其定义&#xff0c;先来看一下维基百科上的一段描述&#xff1a; 代码覆盖&#xff08;Code coverage&#xff09;是软件测试中的一种度量&#xff0c;描述程序中源代码被测试的比例和程度&#xff0c;所得比例称为代码覆盖率。 简单来理解&#xff…

C语言实现map数据结构 key—value对应

1.首先43行 createKeyValuePair(char*key ,int value)这个函数就是给一个keyValuePair *pair的指针来通过内存分配将数据key和value存入这个pair指针所对应的内存空间 2.52行freeKeyValuePair这个函数是释放内存空间 3.头文件 struct结构体KeyValuePair就是一个指针一个值 4…

GO语言 服务发现概述

https://zhuanlan.zhihu.com/p/32027014 明明白白的聊一下什么是服务发现-CSDN博客 一、服务发现 是什么 在传统的系统部署中&#xff0c;服务运行在一个固定的已知的 IP 和端口上&#xff0c;如果一个服务需要调用另外一个服务&#xff0c;可以通过地址直接调用。 但是&…

软件巨头SAP裁员优厚条件,吸引5300名员工争相离职

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 在科技行业的大潮中&#xff0c;SAP公司近日因一项颇具争议的裁员计划而备受瞩目。但这次裁员风波并未如往常般引发员工的强烈抗议&#xff0c;反…

D365 子窗体调用父窗体方法

文章目录 一、在子窗体中调用父窗体公共方法二、刷新 CallerForm 数据源 一、在子窗体中调用父窗体公共方法 Object callerForm element.args().caller(); if(callerForm is FormRun && formHasMethod(callerForm, identifierStr(parentMethod))) {callerForm.parent…

知网-数学学习与研究-收稿邮箱

知网-数学学习与研究-收稿邮箱 《数学学习与研究》杂志是由东北师范大学主管&#xff0c;吉林省数学会与东北师范大学出版社联合主办的省级优秀数学类期刊杂志。 主管单位&#xff1a;东北师范大学 主办单位&#xff1a;吉林省数学会;东北师范大学数学与统计学院 创刊时间1983…

AI学习指南机器学习篇-决策树基本原理

AI学习指南机器学习篇-决策树基本原理 在机器学习领域&#xff0c;决策树是一种常见且十分重要的算法。它不仅在分类任务中被广泛应用&#xff0c;还可以用于回归任务。本篇博客将详细介绍决策树的基本原理&#xff0c;包括节点、分裂准则、信息增益、基尼不纯度等概念&#x…

msvcr120.dll丢失怎样修复?为什么msvcr120.dll文件很重要

msvcr120.dll​ 是一个属于 Microsoft Visual C 2013 Redistributable package 的动态链接库文件。这个文件对于运行使用 Visual Studio 2013 开发的应用程序是必要的&#xff0c;因为它包含了C运行时库的一部分功能&#xff0c;这些功能是标准C库中与输入/输出操作、字符串操作…

OpenCV中的圆形标靶检测——斑点检测算法(二)

前面的章节中我们已经大致介绍了算法流程,也对一些算法中用到的相关概念做了简要介绍,同时给出了算法调用的API,现在我们开始算法检测接口实现源码的分析。 1. 斑点的分组与加权 这里我们选择后者,先了解算法的处理流程,再分析各个模块的实现。算法流程图如下图所示,上一…

android中调用onnxruntime框架

创建空白项目 安装Android Studio及创建空白项目参考&#xff1a;【安卓Java原生开发学习记录】一、安卓开发环境的搭建与HelloWorld&#xff08;详细图文解释&#xff09;_安卓原生开发-CSDN博客 切记&#xff1a;build configuration language 一定选择Groovy&#xff01;官…

51单片机-LCD液晶显示

目录 前言: 一. LCD1602模块简介 二. 代码功能实现 三.总结 前言: 本文主要是51单片机的LCD液晶显示,使用的是LCD1602.下面是详细介绍和完整代码,欢迎大家的点赞,评论和关注.感谢. 一. LCD1602模块简介 LCD1602 模块具有以下特点&#xff1a; 显示特点&#xff1a; 可以…

MySQL 将null转0 ifnull() coalesce()

做统计报表的时候&#xff0c;有时候不希望查出来的值是null&#xff0c;因为在代码中需要做大量的判空&#xff0c;最后转换成0来处理。既然如此&#xff0c;那在sql中查出来就是0&#xff0c;就不用为空而去判空了。 1.IFNULL() ifnull()只能放2个值。 select IFNULL(null,0…

[240608] Zig 发布 v0.13.0 |AMD 新处理器不支持 Win 10 |DuckDuckgo 发布AI匿名聊天服务

目录 Zig 发布 0.13.0 版本AMD 下一代锐龙处理器不支持 Windows 10DuckDuckgo 发布 AI 匿名聊天服务 Zig 发布 0.13.0 版本 Zig 发布 0.13.0 版本&#xff0c;此次发布的主要目的是升级 zig 工具链&#xff0c;发布重点如下&#xff1a; 工具链升级&#xff1a; LLVM&#xf…