【Docker】30条Docker常用命令图文举例总结

news2024/11/18 17:46:49

请添加图片描述


本期目录

  • 1. 帮助启动类命令
  • 2. 镜像命令
    • 2.1 列出镜像
    • 2.2 搜索远程库镜像
    • 2.3 拉取镜像
    • 2.4 查看所占空间
    • 2.5 删除镜像
    • 2.6 面试题
  • 3. 容器命令
    • 3.1 新建+启动容器
        • 1)启动交互式容器
    • 3.2 列出当前所有正在运行的容器
    • 3.3 退出容器
    • 3.4 启动已停止的容器
    • 3.5 重启容器
    • 3.6 停止容器
    • 3.7 强制停止容器
    • 3.8 删除已停止的容器
  • 4. 容器命令进阶
    • 4.1 启动守护式容器(后台启动)
      • 1)后台运行容器的注意问题
      • 2)Redis前后台启动举例
    • 4.2 查看容器日志
    • 4.3 查看容器内运行的进程
    • 4.4 查看容器内部细节
    • 4.5 进入正在运行的容器并以命令行交互
    • 4.6 从容器拷贝文件到主机上
    • 4.7 导入和导出容器


1. 帮助启动类命令

命令作用
systemctl start docker启动 Docker 服务引擎
systemctl stop docker停止 Docker 服务引擎
systemctl restart docker重启 Docker 服务引擎
systemctl status docker查看 Docker 服务引擎运行状态
systemctl enable dockerDocker 服务引擎开机自启
docker info查看概要信息
docker --help查看总体帮助文档
docker 具体命令 --help查看命令帮助文档

举例:查看命令 cp 的帮助文档。

$ docker cp --help

image-20221211093531058


2. 镜像命令

命令作用
docker images列出本地仓库的镜像
docker search 镜像名称从远程库搜索镜像
docker pull 镜像名称从远程库拉取镜像
docker system df查看镜像/容器/数据卷所占空间
docker rmi 镜像ID删除镜像

2.1 列出镜像

$ docker images [OPTIONS] [REPOSITORY[:TAG]]

[OPTIONS] 说明:

  • -a :列出本地仓库所有镜像 (含历史映像层)
  • -q :仅显示镜像 ID

举例:

$ docker images -a

image-20221211094603836

$ docker images -q

image-20221211094650956

  • 表头说明:

    表头说明
    REPOSITORY表示镜像的仓库源
    TAG镜像的标签
    IMAGE ID镜像 ID
    CREATED镜像创建时间
    SIZE镜像大小
  • 其中,同一仓库源可以有多个 TAG 版本,代表这个仓库源不同的版本。我们使用 REPOSITORY:TAG 来定义不同的镜像。如果不指定镜像的版本标签 TAG ,则默认使用最新的 latest 镜像。例如,ubuntu:latest


2.2 搜索远程库镜像

$ docker search [OPTIONS] 镜像名称

[OPTIONS] 说明:

  • --limit n :只列出前 n 个镜像,默认 25 个

举例:

$ docker search redis

image-20221211100007838

表头说明:

表头说明
NAME镜像名称
DESCRIPTION镜像介绍
STARS点赞数
OFFICIAL是否 Docker 官方出品的镜像源
AUTOMATED是否自动构建

2.3 拉取镜像

  • 把远程仓库的镜像下载到本地仓库。
$ docker pull [OPTIONS] 镜像名称[:TAG]

[OPTIONS] 说明:

  • 没有加 [:TAG] 默认下载最新的 latest 版本。

举例:

$ docker pull redis:6.2.7

2.4 查看所占空间

  • 查看 Docker 所有镜像/容器/数据卷所占硬盘空间。
$ docker system df

举例:

$ docker system df

image-20221211101846668


2.5 删除镜像

  • 根据镜像 ID 删除本地仓库的一个或多个镜像。
$ docker rmi [OPTIONS] 镜像ID

[OPTIONS] 说明:

  • -f :强制删除镜像。当该镜像创建了正在运行的容器时,必须加 -f 才能删除。

举例:

$ docker rmi -f feb5d9fea6a5
  • 除了使用镜像 ID 删除,还可以根据 镜像名称:TAG 来删除。删除多个使用空格分隔。

举例:

image-20221211111103063

$ docker rmi -f nginx:latest redis:latest
  • Docker 命令还可以通过 $() 来嵌套使用。

举例:删除全部本地镜像。

$ docker rmi -f $(docker images -qa)

这个命令把 $() 中命令的输出当作是删除命令的入参。

image-20221211111618809


2.6 面试题

面试题:谈谈 Docker 虚悬镜像是什么?

  • 虚悬镜像 (Dangling Image) ,就是仓库名、Tag 标签都是 <none> 的镜像。

    image-20221211111935728

    没啥用,删除就是了。后续章节 Dockerfiles 中再详细介绍。


3. 容器命令

  • 有镜像才能创建容器,这是根本前提。本节笔者将以 Ubuntu 镜像来演示。

    image-20221211112526738

  • 首先从远程仓库拉取 Ubuntu 镜像。

    $ docker pull ubuntu
    

    image-20221211112750847


3.1 新建+启动容器

  • Java 中用 new 来创建对象,Docker 中用 run 创建并启动容器,生成鲸鱼背上的集装箱。
$ docker run docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

[OPTIONS] 说明:

  • -name="容器名称" :为容器指定一个名称;

  • -d :后台运行容器并返回容器 ID ,也即启动守护式容器 (后台运行) ;

  • -i :以交互模式运行容器 (前台运行) ,通常与 -t 同时使用;

  • -t :为容器重新分配一个伪输入终端,通常与 -i 同时使用;(也即交互式容器,前台有伪终端,等待交互)

  • -P :随机端口映射,大写 P ;

  • -p :指定端口映射,小写 p ;

    参数说明
    -p hostPort:containerPort端口映射,如 -p 8080:80
    -p ip:hostPort:containerPort配置监听地址,如 -p10.0.0.100:8080:80

1)启动交互式容器

举例:以前台运行 Ubuntu 容器,并进入 Ubuntu 的 bash 伪终端。

$ docker run -it ubuntu:latest /bin/bash

image-20221211124306533

可以看到 root@ 后面带上了 Ubuntu 容器 ID ,这就进入了 Ubuntu 容器的伪终端了,这就进入了一个 mini 型的 Ubuntu 操作系统。相当于进入了鲸鱼背 (Docker 服务引擎) 上的集装箱 (Container 容器) 里面开始干活了。

  • 输入 exit 即可退出。

3.2 列出当前所有正在运行的容器

  • 默认只列出正在运行的容器,停止的容器不显示。
$ docker ps [OPTIONS]

[OPTIONS] 说明:

  • -a :列出当前所有正在运行的容器+历史上运行过的容器;
  • -l :显示最近创建的容器;
  • -n :显示最近 n 个创建的容器;
  • -q :静默模式,只显示容器编号;

举例:在刚刚前台启动 Ubuntu 容器后,另起一个终端窗口输入:

$ docker ps

image-20221211125706011

表头说明:

表头说明
CONTAINER ID容器 ID
IMAGE镜像
COMMAND启动命令
CREATED启动时间
STATUS运行状态
PORTS对外暴露的端口
NAMES容器名称

由于创建 Ubuntu 容器时没有指定容器名称,因此 Docker 帮我们随机分配容器名称。在实际开发中最好指定容器名称:

$ docker run -it --name=myu1 ubuntu:latest bash

再次查看正在运行的容器列表:

image-20221211130402339

举例:列出当前所有正在运行的容器+历史上运行过的容器。

$ docker ps -a

image-20221211130915889


3.3 退出容器

两种退出容器的方式:

  • exit :退出容器,容器停止 (dead) 。
  • 键盘按下 Ctrl + P + Q :退出容器但不停止容器 (running) 。

举例:

  • 先看目前正在运行的容器列表:

    image-20221211130402339

  • 使用 exit 方式退出第一个 Ubuntu 容器 myu1

    image-20221211131731524

  • 使用键盘按下 Ctrl + P + Q 退出容器但不停止容器。

    image-20221211131826634

  • 再次查看目前正在运行的容器列表:

    image-20221211131906698

    只有使用键盘快捷键的容器 ID 尾号为 8dc5 的容器仍在运行;而容器 ID 尾号为 60c0 的容器已经停止了。


3.4 启动已停止的容器

  • 启动一个或多个已经停止的容器。
$ docker start [OPTIONS] CONTAINER [CONTAINER...]

[OPTIONS] 说明:

  • --

举例:

  • 先列出最近 5 个创建的容器。

    $ docker ps -n 5
    

    image-20221211132627997

  • 把第一行已经停掉的容器 (容器 ID 尾号为 60c0 ) 重新启动。

    $ docker start 6e031bad60c0
    

    image-20221211133405352

    可以看到容器 ID 尾号为 60c0 的容器已经重新启动了。


3.5 重启容器

$ docker restart [OPTIONS] CONTAINER [CONTAINER...]

3.6 停止容器

$ docker stop [OPTIONS] CONTAINER [CONTAINER...]

3.7 强制停止容器

$ docker kill [OPTIONS] CONTAINER [CONTAINER...]

3.8 删除已停止的容器

$ docker rm [OPTIONS] CONTAINER [CONTAINER...]

[OPTIONS] 说明:

  • -f :把正在运行的容器强制删除;

举例:一次删除全部的容器。

$ docker rm -f $(docker ps -aq)

image-20221211134309896


4. 容器命令进阶

  • 本节使用 Redis 镜像演示,先拉取 Redis 镜像。

    $ docker pull redis:6.2
    

    image-20221211135207744


4.1 启动守护式容器(后台启动)

  • 只需要在 run 命令后加 -d 就能让容器在后台运行。
$ docker run -d IMAGE [COMMAND] [ARG...]

1)后台运行容器的注意问题

举例:后台启动 Ubuntu 容器。

$ docker run -d ubuntu:latest

使用 docker ps 查看当前正在运行的容器。

image-20221211190758287

发现根本没有 Ubuntu 容器在后台运行,容器是已经运行 (返回容器 ID ) 但又马上停止了。这是 Docker 的机制导致的:Docker 容器后台运行,必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令 (比如运行 top 、tail ) ,就会自动退出并停止容器。


2)Redis前后台启动举例

前台交互式启动:

$ docker run -it redis:6.2

image-20221211191530089

熟悉的 Redis 启动 Logo ,但是如果 Ctrl + C 退出的话,容器也就停止了。

image-20221211191647485

实际开发中,我们更习惯让 Redis 默默在后台运行即可。

后台守护式启动:

$ docker run -d redis:6.2

image-20221211191938222

查看正在运行的容器:发现 Redis 成功在后台运行。

image-20221211192023784


4.2 查看容器日志

$ docker logs [OPTIONS] CONTAINER

举例:查看后台运行的 Redis 容器的日志。

image-20221211192023784

$ docker logs c75160ca6a9b

image-20221211192417469


4.3 查看容器内运行的进程

任何一个容器都是简易版的 Linux 系统,容器内也有自己的进程。

$ docker top CONTAINER

举例:查看Redis 容器内运行的进程。

$ docker top c75160ca6a9b

image-20221211193040612

Redis 容器内只有 redis-server 一个进程正在运行。


4.4 查看容器内部细节

$ docker inspect [OPTIONS] NAME|ID [NAME|ID...]

举例:查看Redis 容器内部细节。

$ docker inspect c75160ca6a9b

image-20221211193440751

返回的是一大堆有关容器内部信息的 JSON 字符串。这部分在高级篇才会反复用到。


4.5 进入正在运行的容器并以命令行交互

有两个命令可以重新进入正在运行的 Docker 容器:

$ docker exec -it 容器ID bash

$ docker attach 容器ID

两者的区别是:

  • exec 是在容器中打开新的终端,并且可以启动新的进程,用 exit 退出容器时不会停止容器;
  • attach 直接进入容器启动命令行终端,不会启动新的进程,用 exit 退出容器时停止容器。

因此在实际开发中更推荐使用 exec ,因为退出容器终端,不会导致容器的停止。

举例:分别使用 docker execdocker attach 进入正在运行的 Redis 容器并 exit 退出容器。

$ docker exec -it c75160ca6a9b bash

image-20221211195311479

image-20221211194857716

exit 退出容器后,Redis 容器仍然存活。

$ docker attach c75160ca6a9b

image-20221211195032262

退出容器后,Redis 容器就已经停止了。


4.6 从容器拷贝文件到主机上

这个命令可以把容器内的一些重要文件备份到主机上,避免容器被删除后重要文件丢失。

$ docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH

其中,CONTAINER:SRC_PATH 是容器内的源文件路径;DEST_PATH 是主机目标路径。

本节将使用 Ubuntu 容器来演示,以前台交互式创建一个 Ubuntu 容器。

$ docker run -it ubuntu:latest /bin/bash

在临时目录 /tmp 创建一个文本文件 test.txt

$ cd /tmp
$ touch test.txt

image-20221211200632658

退出该容器,执行

$ docker cp 937484124f73:/tmp/test.txt /root

image-20221211201058365

可以看到文件已经复制到主机上的 /root 目录下。


4.7 导入和导出容器

export 导出容器的内容流作为一个 tar 归档文件;

import 从 tar 包中的内容创建一个新的文件系统再导入镜像。

这对命令互为逆过程。

$ docker export [OPTIONS] CONTAINER > xxx.tar
$ cat xxx.tar | docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

举例:导出 Ubuntu 容器为一个名为 abc.tar 的包。

$ docker export 937484124f73 > abc.tar 

image-20221211201804887

然后删除这个 Ubuntu 容器。

$ docker rm -f 937484124f73

image-20221211202029455

再从 tar 包导入镜像

$ cat abc.tar | docker import - ouc/ubuntu:1.0.0

image-20221211202550803

最后才是创建这个镜像的容器。

$ docker run -it ouc/ubuntu:1.0.0 /bin/bash

image-20221211202757135

容器中的 test.txt 文件仍然在。

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

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

相关文章

第六章 映射:Mappings

文章目录1、Mapping 简介1.1 mapping 是啥&#xff1f;1.2 如何查看索引映射2、自动映射&#xff1a;dynamic mapping2.1 自动类型推断规则2.2 mapping 的使用禁忌2.3 自动映射器的意义是什么&#xff1f;3、手动映射&#xff1a;Explicit mapping3.1 创建索引的 mapping3.2 修…

电子产品量产工具项目开发中遇到的问题(更新......)

1、找不到tslib.h库的头文件 这是因为找不到tslib库的头文件。 确定工具链中头文件、库文件目录&#xff0c;对于 IMX6ULL &#xff0c;命令如下 echo main(){}| arm-linux-gnueabihf-gcc -E -v -找到了编译器arm-linux-gnueabihf的include和lib文件夹 /usr/local/arm/gcc-l…

AT155 高压绝缘电阻测试仪 都有哪些功能?

、 高压绝缘电阻测试仪是—款手持式仪表主要用来测量交流&#xff0f;直流电压、 电阻、 短路蜂鸣测试和 绝缘电阻测量。 式高压绝缘电阻测试仪具有4个量程用千绝缘电阻、 AC/DC电压、 电阻和短路蜂鸣测试。 设计达到以下安全标准 &#xff0e;绝缘测试量程O.lMn to 60Gn。…

机器学习 决策树基础 ID3、C4.5、CART

文章目录参考决策树指标基尼系数基础公式公式理解引入划分后的公式划分后公式的理解信息熵、信息增益如何理解信息熵两种指标的对比划分策略ID3定义举例计算各属性的信息增益选取最优属性作划分对子节点作递归划分生成结果ID3的缺点C4.5信息增益率优化缺点CARTCART相较于前两者…

Windows下使用C语言创建定时器并周期和网络调试助手通信

在Windows C下采用timeSetEvent函数来设置定时器 关于timeSetEvent的函数原型及注释如下所示&#xff1a; MMRESULT timeSetEvent(UINT uDelay, // 定时事件的触发周期&#xff0c;单位为毫秒UINT uResolution, // 定时事件的精度&#xff0c;单位…

161-183-mysql-高级篇-事务-锁-mvcc

116-mysql-事务篇-锁&#xff1a; 推荐网站 mysql学习网站&#xff1a;https://www.bilibili.com/video/BV1iq4y1u7vj?p109&vd_source39a1ba1654411bc9ab90f6f2926600b7 mysql&#xff1a;https://dev.mysql.com/doc/refman/8.0/en/ 算法&#xff1a;https://www.cs.us…

我看世界杯——来自一个“假”球迷视角

世界杯还有一个星期就要结束了&#xff0c;说实话&#xff0c;我之前是一场球都没有&#xff0c;对足球知道也甚少&#xff0c;妥妥一个假球迷了。这次世界杯感觉离自己特别近&#xff0c;身边的很多朋友都在看&#xff0c;也不乏赌球的小伙伴&#xff0c;自己的感悟也比较深&a…

电机定子模态的空间特征

对于电机定子模态而言&#xff0c;通常不是按传统的阶次顺序&#xff08;按频率从小到大&#xff09;来描述它们&#xff0c;而是按空间节点数的顺序来描述&#xff0c;这在很大程度上是因为受激励的电磁力波的振型的影响。 1、传统模态阶次表示方式 传统模态阶次的顺序都是按…

安卓期末大作业——个人简历APP源码和设计报告

Android课程需求文档 设计题目&#xff1a; 个人简历APP 学生姓名&#xff1a; 学号&#xff1a; 1&#xff0e;Smart.apk功能设计说明 Android真机运行进入该app。背景音乐服务播放正常&#xff0c;并设置可通过右上角按钮关闭musicservice&#xff1b; 1通过viewpager实…

Jenkins+SonarQube 代码质量检测详解

一、SonarQube 概述 1、SonarQube 简介 Sonar Qube是一个开源的代码分析平台,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。 Sonar Qube通过插件机制,Sonar可以集成不同的测试工具,代码分析工具…

【JavaWeb开发-Servlet】将项目打包部署在本地

Servlet与JSP进阶十&#xff1a;Web应用程序打包与发布&#xff08;war包&#xff09;_小枯林的博客-CSDN博客_servlet项目如何打成war包本篇博客主要内容是&#xff1a; ●如何使用Eclipse打war包&#xff1b; ●打好的war包如何发布&#xff1b;访问演示&#xff1b; ●解决u…

如何使用ChatGPT辅助AI绘画?

如何使用ChatGPT辅助AI绘画&#xff1f; AI自动化内容生成&#xff08;AIGC&#xff09;是一种利用人工智能技术生成新内容的方法。它可以快速、自动、准确地从大量原始数据中生成新内容&#xff0c;大大提高了内容创作效率。AIGC 使用机器学习算法&#xff0c;自动识别文本特…

【MySQL】触发器

目录 概述 操作-创建触发器 操作-NEW与OLD 其他操作 注意事项 概述 介绍 触发器&#xff0c;就是一种特殊的存储过程。触发器和存储过程一样是一个能够完成特定功能、存储在数据 库服务器上的SQL片段&#xff0c;但是触发器无需调用&#xff0c;当对数据库表中的数据执…

微信小程序|前端技术主要框架分析

1.框架 微信提供了一套自己的用于开发小程序的前端框架,和目前主流的前端框架相比,其既有类似的地方,也有特殊的地方。 特殊的地方在于其只能在微信小程序开发工具内使用,并做了相对严格的使用和配置限制,开发者必须按照其规定的用法来使用。一些外部的框架和插件在小程…

apis-day7综合案例

apis-day7综合案例-小兔鲜案例注册 需求①&#xff1a; 发送验证码 用户点击之后&#xff0c;显示 05秒后重新获取 时间到了&#xff0c;自动改为 重新获取 需求②&#xff1a; 用户名验证&#xff08;注意封装函数 verifyxxx&#xff09; 正则 /1{6,10}$/ 如果不符合要求…

非零基础自学Golang 第1章 走进Go 1.1 Go编程语言概述 1.1.3 使用Go 语言的项目

非零基础自学Golang 文章目录非零基础自学Golang第1章 走进Go1.1 Go编程语言概述1.1.3 使用Go 语言的项目第1章 走进Go 1.1 Go编程语言概述 1.1.3 使用Go 语言的项目 Go语言在2009年首次公开发布后受到越来越多的开发者的关注&#xff0c;Go语言社区不断壮大&#xff0c;开源…

【深度学习】李宏毅2021/2022春深度学习课程笔记 - Deep Learning Task Tips

文章目录一、深度学习步骤回顾二、常规指导三、训练过程中Loss很大3.1 原因1&#xff1a;模型过于简单3.2 原因2&#xff1a;优化得不好3.3 原因1 or 原因2 &#xff1f;四、训练过程Loss小。测试过程Loss大4.1 原因1&#xff1a;过拟合 Overfitting4.2 原因2&#xff1a;Misma…

windows 10 HBase保姆级安装教程

安装HDFS 将下载好的hadoop-2.6.5.zip解压到自己的磁盘文件&#xff0c;将解压后的文件夹hadoop-2.6.5重命名为hadoop&#xff1b; 解压hadoopbin.zip&#xff0c;将解压后的文件夹打开&#xff0c;里面的文件复制到上一步的hadoop文件夹下的bin文件&#xff0c;直接覆盖同名文…

蓝牙模块HC-05使用指南

概述 HC-05蓝牙模块是一种基于蓝牙协议的简单无线通信设备。该模块基于BC417单芯片蓝牙IC&#xff0c;符合蓝牙v2.0标准&#xff0c;支持UART和USB接口。 具有两种工作模式&#xff1a;命令响应工作模式和自动连接工作模式。 当模块处于命令响应工作模式&#xff08;或者AT模…

文件传输利器Croc

概述 一般而言&#xff0c;Linux系统是没有用户界面的&#xff0c;所有操作都是在命令行里。 然后在安装搭建集群&#xff0c;如分布式的Hadoop集群时&#xff0c;经常需要在多个Server之间传输文件。两个server之间的文件传输&#xff0c;一般会想到FTP或SSH两种方式。使用F…