当前位置: 首页 > news >正文

Docker命令(用法说明详解)

一、常见Docker容器命令

#根据image创建一个新容器并运行(即使该image已经存在容器,也会再创建一个新容器)
docker run IMAGE_NAME
#根据image创建一个新容器并运行。 
#选项-d:指定容器为后台运行,--name自定义该容器名
docker run -d --name myname IMAGE_NAME
#根据image创建一个新容器并运行。
#选项-p:指定将容器内的80端口通过外部宿主机的2288端口暴露出去
docker run -d --name myname -p 2288:80 IMAGE_NAME
#根据image创建一个新容器并运行。
#选项-e:指定环境变量key=value。可以多个-e选项以指定多个环境变量
docker run -d --name myname -p 2288:80 -e Key1=Value1 -e Key2=Value2 IMAGE_NAME#交互模式进入容器内部(可以指定CONTAINER_ID或者容器名)
docker exec -it CONTAINER_ID /bin/bash#查看正在运行中的容器
docker ps
#查看所有容器(各种状态)
docker ps -a
#停止容器
docker stop CONTAINER_ID
#启动容器
docker start CONTAINER_ID
#重启容器
docker restart CONTAINER_ID
#查看正在运行容器占用CPU、MEM、网络等资源情况(可以指定CONTAINER_ID)
docker stats
#查看容器日志
docker logs CONTAINER_ID
#删除指定容器
docker rm CONTAINER_ID
#强制删除指定容器(可强制删除正在运行中的容器)
docker rm -f CONTAINER_ID# 查看指定容器/镜像/卷/网络等对象的详细信息
docker inspect CONTAINER_ID
docker inspect IMAGE_NAME:TAG
docker inspect VOLUME
docker inspect NETWORK
docker inspect ......

二、常见Docker镜像命令

#下载镜像。不显示指定TAG,则TAG默认为:latest。
docker pull IMAGE_NAME
#下载指定版本(Tag)镜像
docker pull IMAGE_NAME:TAG
#查看本地所有镜像
docker images
#删除本地指定镜像
docker rmi IMAGE_ID# 以指定容器ID(或获容器名)的当前现状,创建一个新镜像
docker commit -a "Author名" -m "提交说明" CONTAINER_ID NEW_IMAGE_NAME:TAG
# 将指定镜像,导出保存为tar文件
docker save -o myimage.tar IMAGE_NAME:TAG
# 从本地tar文件加载作为镜像
docker load -i mynginx.tar 
# 删除本地多个镜像
docker rmi bde7d154a67f 94543a6c1aef e784f4560448#在线搜索镜像
docker search IMAGE_NAME# 查看指定容器/镜像/卷/网络等对象的详细信息
docker inspect CONTAINER_ID
docker inspect IMAGE_NAME:TAG
docker inspect VOLUME
docker inspect NETWORK
docker inspect ......

三、镜像发布至DockerHub

    首先需在DockerHub网页上完成用户注册(http://hub.docker.com/)

# 首先需在DockerHub网页上完成用户注册(http://hub.docker.com/)# 通过以下命令,按提示登录至DockerHub
docker login# 对本地镜像,增加一个TAG。新TAG应符合DockerHub规范:用户名/镜像名:TAG
docker tag LOCAL_IMAGE_NAME:TAG username/NEW_IMAGE_NAME:TAG
#注意增加TAG后,同一个IMAGE_ID会有多个TAG名# 推送镜像至DockerHub(这里不同通过IMAGE_ID指定,因为同一个IMAGE_ID会有多个TAG名)
docker push 用户名/镜像名:TAG
#推送成功后,在DockerHub网页上可以看到

四、容器:目录挂载

    在创建容器时,可以有两种方式将外部宿主机目录挂载至容器中:

  • docker run --mount type=bind,src=<host-path>,dst=<container-path>
  • docker run --volume <host-path>:<container-path>

    推荐使用--mount因为更加清晰,且选项更多。命令示例说明如下:

# 根据image创建一个新容器并运行。
# 选项--mount:将外包宿主机的/app/outdir目录(若目录不存在则报错)mount至容器内的/usr/share/nginx/html挂载点
# 选项--mount可以多次出现,实现多个目录mount挂载
docker run -d --mount type=bind,src=/app/outdir,dst=/usr/share/nginx/html IMAGE_NAME# 根据image创建一个新容器并运行。
# 选项-v:将外包宿主机的/app/outdir目录(若目录不存在则自动创建)mount至容器内的/usr/share/nginx/html挂载点
# 选项-v可以多次出现,实现多个目录mount挂载
docker run -d -v /app/outdir:/usr/share/nginx/html IMAGE_NAME

挂载后,容器看到的内容为外部宿主机目录内容(容器内原内容被obscured掩盖) 

  • --mount方式。 除以上选项外,还支持readonly、bind-propagation选项。若外部宿主机目录不存在则会报错,不会自动创建
  • --volume方式。外部宿主机目录host-path必须是目录形式,若外部宿主机目录不存在则会自动创建。

五、容器:卷映射

    在Docker官方更推荐使用Volume卷映射方式进行数据生成和存储。

    Volume卷为外部宿主机上的概念,可与容器内指定目录进行映射。 有两者方式创建卷Volume:

  • docker volume create   直接创建卷
  • docker run --volume <value-name>:<container-path>   在创建容器时创建卷并映射

     在外部宿主机上直接创建卷,命令说明如下:

# 创建一个名为my-vol的卷(卷默认在外部宿主机的/var/lib/docker/volumes下)
docker volume create my-vol# 列出卷
docker volume ls# 删除没有被容器使用的卷
docker volume prune# 查看某个卷已被哪些容器使用
docker ps -a --filter "volume=卷名"# 删除my-vol卷
docker volume rm my-vol# 查看指定容器/镜像/卷/网络等对象的详细信息
docker inspect CONTAINER_ID
docker inspect IMAGE_NAME:TAG
docker inspect VOLUME
docker inspect NETWORK
docker inspect ......

  在创建容器时同时创建卷并映射,命令说明如下:

# 根据image创建一个新容器并运行。
# 选项-v:将my-vol卷(若卷不存在则创建卷)映射至容器内的/etc/nginx目录。映射后,容器看到的内容为卷内容(容器内原内容被obscured掩盖)
#         若my-vol为空卷empty volume,则自动将容器内映射目录下内容拷贝propagated(copied)至该卷。也可通过选项volume-nocopy禁止拷贝。
#         若my-vol已存在内容,既非空卷non-empty volume,则不会拷贝propagated(copied)。
# 选项-v可以多次出现,实现多个卷映射
docker run -d -v my-vol:/etc/nginx IMAGE_NAME

将my-vol卷(若卷不存在则创建卷)映射至容器内的/etc/nginx目录。映射后,容器看到的内容为卷内容(容器内原内容被obscured掩盖)

  • 若卷my-vol无数据,既空卷empty volume,则自动将容器内容映射目录下内容拷贝propagated(copied)至该卷也可通过选项volume-nocopy禁止不拷贝
  • 若卷my-vol已存在数据,既非空卷non-empty volume,则不会进行拷贝propagated(copied)。

六、网络

    在Docker自动创建了名为“bridge”、“host”等网络。在创建容器时不特别指定,则容器默认使用名为“bridge”网络。

   通过查看名为“bridge”网络详细信息如下。包括该网络IP段、已分配IP的容器、该网络在宿主机上Linux的网络接口名(可以通过Linux操作系统的ifconfig命令查看)等信息。

    通过名为“bridge”网络,可以在各个容器内,通过的IP地址互访(对于上图,通过172.17.0.x地址进行容器之间互访)。

    然而,默认的名为“bridge”网络只能通过IP地址互访,无法通过域名进行容器之间互访。解决方式是:

  • ①自行创建一个网络;
  • ②在创建容器时指定使用自建的网络,即可实现通过域名进行容器之间互访。

命令过程示例如下,这样cntr001和cntr002容器即可通过IP互访,也可以通过容器名互访。

# 自建一个网络:名为“mynet”,Driver为bridge,不纳入Linux操作系统网卡管理
docker network create mynet
# 或者
docker network create --driver bridge --subnet=172.99.99.0/24 --gateway=172.99.99.1 mynet# 根据image创建一个新容器并运行。
# 选项--network:指定网络。不指定默认使用名为“bridge”的网络
docker run -d --network mynet --name "cntr001" IMAGE_NAME
docker run -d --network mynet --name "cntr002" IMAGE_NAME
# 这样cntr001和cntr002容器即可通过IP互访,也可以通过“容器名”互访

相关文章:

Docker命令(用法说明详解)

一、常见Docker容器命令 #根据image创建一个新容器并运行&#xff08;即使该image已经存在容器&#xff0c;也会再创建一个新容器&#xff09; docker run IMAGE_NAME #根据image创建一个新容器并运行。 #选项-d&#xff1a;指定容器为后台运行&#xff0c;--name自定义该容器…...

leetcode 热题100(131. 分割回文串)c++

链接&#xff1a;131. 分割回文串 - 力扣&#xff08;LeetCode&#xff09; 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 示例 1&#xff1a; 输入&#xff1a;s "aab" 输出&#xff…...

vs2022编译opencv 4.10.0

参考&#xff1a;Windosw下Visual Studio2022编译OpenCV与参考区别在于&#xff0c;没有用cmake GUI&#xff0c;也没有创建build目录&#xff0c;直接用vs2022打开了C:\code\opencv目录&#xff0c;即CMakeLists.txt所在根目录。没有修改默认下载地址&#xff0c;采用手动下载…...

Bash 中的 2>1 | tee 命令详解

Bash 中的 2>&1 | tee 命令详解 在 Linux 和 Unix 系统中&#xff0c;命令行提供了强大的输出控制功能&#xff0c;能够灵活地处理标准输入&#xff08;stdin&#xff09;、标准输出&#xff08;stdout&#xff09;和标准错误&#xff08;stderr&#xff09;。本文将详…...

MySQL数据库的日志

一、概论 日志&#xff08;log&#xff09;是一种记录系统运行时各种状态和事件的文件。 它通常用于系统监控、故障排查、安全审计和性能分析。日志文件可以记录用户操作、系统错误、应用程序行为等信息。日志文件通常包含时间戳、事件类型、事件描述等关键信息&#xff0c;以…...

DataCap 2024.4.1 版本发布:MongoDB 驱动支持、工作流引擎升级

尊敬的 DataCap 用户&#xff1a; DataCap 2024.4.1 版本现已正式发布。本次更新包含多项重要功能升级和性能优化&#xff0c;现将主要更新内容公布如下&#xff1a; 核心功能升级 数据库功能增强 (实现功能) 新增数据库管理功能&#xff1a;支持创建、删除和切换数据库完善表…...

二十三种设计模式-单例模式

单例模式&#xff08;Singleton&#xff09;&#xff1a;确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 单例模式两种实现方法&#xff1a;懒汉式和饿汉式。 懒汉式&#xff08;Lazy Initialization&#xff09; 懒汉式单例模式在第一次被使用时才创建实例&…...

【微服务】SpringBoot 国际化适配方案使用详解

目录 一、前言 二、国际化概述 2.1 微服务中的国际化是什么 2.1.1 国际化概念 2.1.2 为什么需要国际化 2.2 微服务中常用的国际化方法 2.2.1 资源文件分离 2.2.2 使用国际化框架 2.2.3 使用动态模板 2.2.4 使用数据库存储 2.2.5 API设计结合配置中心 三、SpringBoot…...

太阳能电池板缺陷识别数据集,使用yolo,coco json,pasical voc xml格式标注,可识别旁路二极管,电池故障,热点,2234张原始图片

太阳能电池板缺陷识别数据集&#xff0c;使用yolo&#xff0c;coco json&#xff0c;pasical voc xml格式标注&#xff0c;可识别旁路二极管,电池故障,热点,2234张原始图片 以下是该项目的一些用例&#xff1a; 太阳能发电厂监控&#xff1a;该模型可用于自动化检查和识别大型…...

客户案例:基于慧集通平台集成打通小满CRM+金蝶云星空+钉钉

一、引言 本案例原型公司是一家生物科技公司&#xff0c;公司自开创以来专注于体外诊断生物活性原材料的研究、生产、销售和服务&#xff0c;致力于为全球体外诊断试剂生产企业提供领先且具有竞争力的核心原料和相关辅助产品服务。公司以卓越的产品和优质的服务赢得了客户的广…...

ubuntu 如何使用vrf

在Ubuntu或其他Linux系统中&#xff0c;您使用ip命令和sysctl命令配置的网络和内核参数通常是临时的&#xff0c;这意味着在系统重启后这些配置会丢失。为了将这些配置持久化&#xff0c;您需要采取一些额外的步骤。 对于ip命令配置的网络接口和路由&#xff0c;您可以将这些配…...

Debian-linux运维-ssh配置(兼容Jenkins插件的ssh连接公钥类型)

系统版本&#xff1a;Debian 12.5、11.1 1 生成密钥对 可以用云服务商控制台生成的密钥对&#xff0c;也可以自己在客户端或者服务器上生成&#xff0c; 已经有密钥对就可以跳过这步 用户默认密钥文件路径为 ~/.ssh/id_rsa&#xff0c;可以在交互中指定路径&#xff0c;也可…...

K8S详解(5万字详细教程)

目录 ​编辑 一、集群管理命令 二、命名空间 1. 获取命名空间列表 2. 创建命名空间 3. 删除命名空间 4. 查看命名空间详情 三、Pod 1. Pod概述 2. Pod相位状态 3. 管理命令 3.1 获取命名空间下容器(pod)列表 3.2 查看pod的详细信息 3.3 创建 && 运行 3.4 …...

Redis6为什么引入了多线程?

大家好&#xff0c;我是锋哥。今天分享关于【Redis6为什么引入了多线程&#xff1f;】面试题。希望对大家有帮助&#xff1b; Redis6为什么引入了多线程&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 6 引入了多线程的主要目的是提高性能&#…...

KMP 2024 年总结,Kotlin 崛起的一年

2024 Google I/O 上正式官宣了 KMP&#xff08;Kotlin Multiplatform&#xff09;项目&#xff0c;它是 Google Workspace 团队的一项长期「投资」项目&#xff0c;由 JetBrains 开发维护和开源的项目&#xff0c;简单来说&#xff0c;JetBrains 主导&#xff0c;Google Worksp…...

leecode188.买卖股票的最佳时机IV

这道题目我在买卖股票III就已经得出规律了&#xff0c;具体可看买卖股票的最佳时机||| class Solution { public:int maxProfit(int k, vector<int>& prices) {int nprices.size();vector<vector<int>> dp(n,vector<int>(2*k1,0));for(int j1;j&l…...

分布式消息队列RocketMQ

一、RocketMQ概述 1.1 MQ 概述 MQ&#xff0c;Message Queue&#xff0c;是一种提供消息队列服务的中间件&#xff0c;也成为消息中间件&#xff0c;是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据 1.2 MQ 用途 MQ的用途总结起来可分为以下三点 限流削峰…...

诗韵--代码之外的生活:2025 元旦歌

2025 元旦歌 1 说明2 正文3 简评 1 说明 又是一年元旦&#xff0c;在公司抽个空&#xff0c;写首诗纪念一下。 本系列博客&#xff1a;诗韵–代码之外的生活 2 正文 2025 元旦歌 一年又一年&#xff0c; 又到新元旦。 恍若零五年&#xff0c; 已是二五年。 工作忙连连&#x…...

SpringBoot项目启动的时候,指定jvm内存大小的3种方式

1. 通过命令行固定参数 在命令行中运行 Spring Boot 应用程序时&#xff0c;可以使用 -Xms 和 -Xmx 选项指定初始和最大堆内存大小。例如&#xff1a; java -Xms512m -Xmx1024m -jar mySpringBootApp.jar 优点&#xff1a; 简单明了 缺点&#xff1a; 是写死的&#xff0c;…...

学习vue3的笔记

一、vue和react的对比 1、基础介绍 vue&#xff1a;https://cn.vuejs.org/ vue3是2020年创建的 react&#xff1a;https://react.dev/ react是一个2013年开源的JavaScript库&#xff0c;严格意义上来说不是一个框架 2、diff算法 两个框架采用的都是同级对比策略 两节点对…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...

计算机系统结构复习-名词解释2

1.定向&#xff1a;在某条指令产生计算结果之前&#xff0c;其他指令并不真正立即需要该计算结果&#xff0c;如果能够将该计算结果从其产生的地方直接送到其他指令中需要它的地方&#xff0c;那么就可以避免停顿。 2.多级存储层次&#xff1a;由若干个采用不同实现技术的存储…...

Java设计模式:责任链模式

一、什么是责任链模式&#xff1f; 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09; 是一种 行为型设计模式&#xff0c;它通过将请求沿着一条处理链传递&#xff0c;直到某个对象处理它为止。这种模式的核心思想是 解耦请求的发送者和接收者&#xff0c;…...