在Linux中使用docker【下】(常见命令下)

在Linux中使用docker【下】(常见命令下)

  • 一、Docker介绍
  • 二、在Linux中使用Docker的意义
    • 2.1 轻量级与资源高效
    • 2.2 快速部署与版本控制
    • 2.3 隔离与安全
    • 2.4 简化运维
    • 2.5 跨平台兼容
    • 2.6 持续集成与持续部署(CI/CD)
  • 三、Docker的安装
    • 3.1 ubuntu下安装docker
    • 3.2 ubuntu下安装nvidia-docker
    • 3.3 centos下安装docker
    • 3.4 centos下安装nvidia-docker
  • 三、Docker常见命令
    • 3.1 验证状态【version、info、hello-world】
    • 3.2 查找镜像库【search】
    • 3.3 下载镜像【pull】
    • 3.4 创建容器【run】
    • 3.5 启动、停止和重启容器【start、stop、restart】
    • 3.6 列出容器【ps】
    • 3.7 进入容器【attach、exec】
      • 3.7.1 attach
      • 3.7.2 exec
      • 3.7.3 attach和exec区别
    • 3.8 查看容器【inspect、logs】
      • 3.8.1 logs
      • 3.8.2 inspect
    • 3.9 容器保存为镜像【commit】
    • 3.10 容器导出为文件【export】
    • 3.11 导入容器导出文件【import】
    • 3.12 镜像保存为文件【save】
    • 3.13 导入镜像保存文件【load】
    • 3.14 删除容器【rm】
    • 3.13 删除镜像【rmi】

在Linux中使用docker【上】(docker、nvidia-docker安装)
在Linux中使用docker【中】(常见命令上)
在Linux中使用docker【下】(常见命令下)

一、Docker介绍

  Docker是一个强大的工具神器,它使得应用程序的打包、部署和管理变得更加简单、高效和安全。无论是在开发、测试还是生产环境中,都发挥着重要的作用。

  Docker是开源的应用容器引擎,它基于Go语言实现,并依赖于操作系统的机制和特性。Docker的主要目的是让开发者能够打包他们的应用及其依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,实现轻量级虚拟化。这种容器化的应用程序被称为Docker容器,它们通过Docker镜像创建,而这些镜像文件可以存放在私有仓库或共有仓库中。

  Docker采用了“写时复制”(copy-on-write)模型,使得修改应用程序变得非常迅速。此外,Docker还支持面向服务的体系结构和微服务架构,提高应用程序的模块化和可维护性。

  Docker由PaaS提供商dotCloud开发,作为开源项目发布。它的源代码托管在Github上,并遵从Apache2.0协议。

二、在Linux中使用Docker的意义

2.1 轻量级与资源高效

2.2 快速部署与版本控制

2.3 隔离与安全

2.4 简化运维

2.5 跨平台兼容

2.6 持续集成与持续部署(CI/CD)

三、Docker的安装

3.1 ubuntu下安装docker

3.2 ubuntu下安装nvidia-docker

3.3 centos下安装docker

3.4 centos下安装nvidia-docker

三、Docker常见命令

nvidia-docker命令,就是将docker更换为nvidia-docker

3.1 验证状态【version、info、hello-world】

3.2 查找镜像库【search】

3.3 下载镜像【pull】

3.4 创建容器【run】

3.5 启动、停止和重启容器【start、stop、restart】

3.6 列出容器【ps】

3.7 进入容器【attach、exec】

3.7.1 attach

3.7.2 exec

3.7.3 attach和exec区别

3.8 查看容器【inspect、logs】

3.8.1 logs

docker logs 用于查看容器的日志输出。通过查看日志,你可以了解应用程序的运行状态、错误消息以及其他重要信息。某些日志可能包含敏感信息,如密码或私钥,因此在共享或存储日志时要格外小心。

使用 docker logs 命令的基本语法如下:

sudo docker logs [容器ID或名称] [选项]

其中,[容器ID或名称] 是你想要查看日志的容器的标识符。[选项] 是可选的,用于定制日志的输出格式和行为。

下面是一些常用的 docker logs 选项:

  • -f--follow: 实时追踪日志输出,即随着新日志的产生而持续显示。
  • --since: 显示自某个时间戳之后的日志。
  • --until: 显示直到某个时间戳之前的日志。
  • --tail: 仅显示最后几条日志(默认为最后几行)。
  • --timestamps: 显示每条日志的时间戳。

例如,要实时查看名为 my-container 的容器的日志输出,你可以运行:

sudo docker logs -f my-container

如果你只想查看最后10行的日志,你可以使用:

sudo docker logs --tail 10 my-container

请注意,如果容器没有运行,docker logs 命令将无法输出日志。

3.8.2 inspect

docker inspect 用于查看容器的详细信息。docker inspect 命令返回格式为JSON对象。

注意,docker inspect 返回的信息非常详细,并且通常是用于调试或了解容器内部情况的,可能需要保密。

下面是查看指定容器信息的命令格式:

sudo docker inspect [容器ID或名称]

例如,如果你有一个名为 my-container 的容器,并且你想查看它的详细信息,你可以运行:

sudo docker inspect my-container

如果你只有容器的ID,比如 abcd1234, 你也可以这样使用:

sudo docker inspect abcd1234

docker inspect 命令的参数说明如下:

  • --format, -f:指定返回值的模板文件。你可以使用 Go 模板语言来格式化输出。例如,docker inspect --format='{{.NetworkSettings.IPAddress}}' <container> 会返回容器的 IP 地址。

  • --size, -s:当检查容器时,显示文件总的大小。这会显示容器占用的磁盘空间大小。

  • --type:为指定类型返回 JSON。例如,docker inspect --type container <container> 会以 JSON 格式返回容器的信息。

  • IDNAME:这是你想要检查的容器、镜像、卷、网络或插件的标识符。

此外,docker inspect 还可以接受多个标识符,用于一次性检查多个对象。

使用 docker inspect 参数的例子:

  1. 获取容器的 IP 地址:

    sudo docker inspect --format='{{.NetworkSettings.IPAddress}}' <container>
    
  2. 获取容器的大小:

    sudo docker inspect --size <container>
    
  3. 获取 信息:

    sudo docker inspect --type container <container>
    
  4. 获取多个容器的详细信息:

    sudo docker inspect <container1> <container2>
    

3.9 容器保存为镜像【commit】

当对一个容器做了修改或者配置之后,想要保存这些更改作为一个新的镜像以便将来使用时,就可以使用 docker commit

docker commit 会保存原始容器的文件系统、配置、历史记录以及你在容器中所做的任何更改,而不会保存容器的运行状态(如网络、进程等)。【类似于批处理脚本】

命令的基本格式如下:

sudo docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

其中,[OPTIONS] 是可选的参数,CONTAINER 是要提交为镜像的容器的名称或 ID,[REPOSITORY[:TAG]] 是新镜像的名称和标签(可选)。

例如,假设有一个正在运行的容器,它的 ID 是 abcd1234,想要将这个容器的当前状态保存为一个新的镜像,并命名为 my-new-image,可以运行:

sudo docker commit abcd1234 my-new-image

如果还想为这个新镜像指定一个标签,比如 v1.0,你可以这样运行:

sudo docker commit abcd1234 my-new-image:v1.0

3.10 容器导出为文件【export】

要将 Docker 容器导出为一个文件,可以使用 docker export 命令。export命令不会保存容器的配置和历史记录。

这个命令可以导出一个已经创建的容器到一个文件,无论容器当前处于什么状态。【类似于快照

命令的基本格式如下:

sudo docker export [OPTIONS] CONTAINER

其中,[OPTIONS] 是可选的参数,CONTAINER 是你想要导出的容器的名称或 ID。

下面是一些常用的选项:

  • -o, --output:指定导出的文件名。如果你不提供这个选项,Docker 会将导出的内容输出到标准输出(stdout)。

例如,要将名为 my-container 的容器导出到一个名为 exportedContainer.tar 的文件中,可以运行:

sudo docker export -o ExportedContainer.tar my-container

或者,如果想要将导出的内容直接保存到标准输出,并将其重定向到一个文件,可以运行:

sudo docker export my-container > ExportedContainer.tar

导出的文件将是一个 tar 归档文件,其中包含了容器文件系统的内容。

注意,docker export 命令导出的文件不包含容器的运行时状态,如网络配置、环境变量等。

3.11 导入容器导出文件【import】

docker import 命令用于从文件系统的归档文件(如 tar 文件)或标准输入中创建 Docker 镜像。

这通常在将一个容器导出后的文件,再次导入为一个新的 Docker 镜像时使用。

以下是 docker import 命令的基本用法和步骤:

基本语法

sudo docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

参数说明

  • [OPTIONS]:可选参数,如 -c--change 用于在导入时应用更改。
  • file|URL|-:导入的源文件或 URL,或者是标准输入(-)。
  • [REPOSITORY[:TAG]]:目标镜像的仓库名称和标签。如果不指定,默认为 <none>:<none>

使用示例

  1. 从 tar 文件导入

如果你有一个通过 docker export 命令导出的 tar 文件,你可以使用以下命令将其导入为一个新的 Docker 镜像:

sudo docker import my_container_export.tar my_new_image:1.1.0

这将创建一个名为 my_new_image 的新镜像,tag为1.1.0,其内容来自 my_container_export.tar 文件。

  1. 从标准输入导入

你也可以从标准输入中导入内容,例如从另一个命令的输出中导入:

sudo cat my_container_export.tar | docker import - my_new_image
  1. 指定更改

使用 -c--change 参数,你可以在导入时指定对镜像文件系统进行更改。例如,你可以在导入时设置环境变量:

sudo docker import -c 'ENV DEBUG=true' my_container_export.tar my_new_image

注意事项

  • 导入的镜像不会包含原容器的运行时状态(如网络配置、容器进程等),只有文件系统内容会被导入。
  • 导入操作不会继承原容器的历史层,因此新镜像的层数和大小可能会与原容器有所不同。
  • 导入的镜像默认没有任何标签,需要指定 REPOSITORY[:TAG] 来添加标签。

3.12 镜像保存为文件【save】

docker save 命令提供了一种将 Docker 镜像以 tar 归档文件的形式保存到本地文件系统中的方法,这对于备份、迁移或在不同环境间共享镜像非常有用。

基本语法

sudo docker save [OPTIONS] IMAGE [IMAGE...]

参数说明

  • [OPTIONS]:可选参数。
    • -o, --output:指定输出文件的名称和路径。
  • IMAGE [IMAGE...]:一个或多个要保存的 Docker 镜像的名称或 ID。

使用示例

  1. 保存单个镜像

保存名为 my_image 的镜像到当前目录,输出文件名为 my_image.tar

sudo docker save my_image

或者,使用 -o 参数指定输出文件名:

sudo docker save -o my_image.tar my_image
  1. 保存多个镜像

保存多个镜像 image1image2 到当前目录,输出文件名分别为 image1.tarimage2.tar

sudo docker save -o image1.tar image1 -o image2.tar image2

或者,你也可以一次性保存多个镜像到一个 tar 文件中:

sudo docker save image1 image2 > images.tar

注意事项

  • 如果不指定 -o 参数,docker save 会将镜像保存到当前目录下,并且默认的文件名是 <IMAGE>.tar
  • 你可以一次保存多个镜像,只需在命令中列出它们的名称或 ID,并用空格分隔。
  • 保存的 tar 文件可以在其他 Docker 环境中通过 docker load 命令导入,从而恢复为 Docker 镜像。

3.13 导入镜像保存文件【load】

docker load 是一个 Docker 命令,用于将一个本地的 Docker 镜像文件加载(或导入)到 Docker 引擎中。

这个命令通常用于恢复从 docker save 命令导出的 Docker 镜像,或者用于加载从其他环境迁移过来的镜像文件。

基本语法

sudo docker load [OPTIONS]

参数说明

  • [OPTIONS]:可选参数。
    • -i, --input:指定输入文件的名称和路径。如果省略此选项,命令将从标准输入(stdin)读取数据。
    • --quiet, -q:不显示加载过程的输出信息。

使用示例

  1. 加载单个镜像文件

加载名为 my_image.tar 的镜像文件:

sudo docker load < my_image.tar

或者,使用 -i 参数指定输入文件:

sudo docker load -i my_image.tar
  1. 从标准输入加载镜像

如果你正在使用管道或重定向来提供镜像文件的内容,你可以省略 -i 参数:

sudo cat my_image.tar | docker load

注意事项

  • 如果在加载过程中遇到问题,如文件损坏或不兼容的版本,Docker 引擎会显示错误消息。
  • docker load 会加载镜像文件中的所有图层,并构建成一个完整的 Docker 镜像。
  • 加载的镜像不会自动标记(tag),你需要使用 docker tag 命令为镜像添加标记(tag)以便于管理和识别。
  • 如果在加载之前已经存在相同名称和标签的镜像,docker load 会导致冲突。为了避免这种情况,你可以先删除现有的镜像,或者为加载的镜像指定一个不同的名称或标签。

3.14 删除容器【rm】

docker rm 命令用于删除一个或多个已经停止的 Docker 容器。使用此命令时,需要指定要删除的容器的 ID 或名称。

如果尝试删除一个正在运行的容器,docker rm 默认会拒绝执行,并显示一个错误消息。

基本语法

sudo docker rm [OPTIONS] CONTAINER [CONTAINER...]

选项(OPTIONS)

  • -f, --force:强制删除一个正在运行的容器(谨慎使用,这可能会导致数据丢失)。
  • -v, --volumes:删除容器时,同时删除容器挂载的卷。

使用示例

  1. 删除一个已停止的容器

如果已经知道了容器的 ID 或名称,可以直接使用 docker rm 命令删除它。

sudo docker rm my_container
  1. 删除多个已停止的容器

可以一次性删除多个容器,只需在命令后面跟上多个容器 ID 或名称。

sudo docker rm container1 container2 container3
  1. 强制删除一个正在运行的容器

如果确定要删除一个正在运行的容器,并愿意接受可能的数据丢失风险,可以使用 --force-f 选项。

sudo docker rm -f running_container
  1. 删除容器及其挂载的卷

如果想在删除容器的同时删除容器挂载的卷,可以使用 --volumes-v 选项。

sudo docker rm -v my_container

注意事项

  • 在删除容器之前,请确保容器已经停止或确定要强制删除正在运行的容器。
  • 使用 --volumes 选项会删除容器挂载的所有卷,这可能会导致数据丢失,所以在使用此选项时要特别小心。
  • 删除容器后,该容器内的所有数据和状态都将被永久删除,无法恢复。

如果只想删除已停止的容器,可以结合使用 docker ps -a -q 命令来获取所有已停止容器的 ID,并将这些 ID 作为 docker rm 命令的输入。

# 删除所有已停止的容器
sudo docker rm $(docker ps -a -q)# 删除所有容器(含正在运行的容器)
sudo docker rm -f $(docker ps -a)

3.13 删除镜像【rmi】

docker rmi 是 Docker 的一个命令,用于删除本地的一个或多个 Docker 镜像。

其基本语法为 docker rmi [OPTIONS] IMAGE [IMAGE...]。其中,[OPTIONS] 表示可选项,而 IMAGE [IMAGE...] 表示要删除的镜像的名称或ID。

以下是关于 docker rmi 命令的一些详细解释和示例:

  • 可选项(OPTIONS)

    • -f--force:强制删除镜像,即使它正在被使用或有关联的容器。
    • --no-prune:不移除该镜像的过程镜像(即不被标记的父镜像)。默认情况下,这些镜像会被移除。
  • 示例

    • 强制删除名为 runoob/ubuntu:v4 的本地镜像:

      sudo docker rmi -f runoob/ubuntu:v4
      
    • 删除多个本地镜像,例如 centos:centos7ubuntu:latest

      sudo docker rmi centos:centos7 ubuntu:latest
      

may the odds be ever in your favor ~

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

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

相关文章

JVM 启动参数

jvm的启动参数随版本发展可以分为三大类&#xff1a;标准参数、非标准参数和非Stable参数。 1. 标准参数&#xff1a;所有JVM实现都必须支持这些参数&#xff0c;且向下兼容。 如&#xff1a;-jar -cp -verbose 2. 非标准参数&#xff1a;大多数JVM实现都支持这些参数&#…

将圆环区域展开成矩形长条

在机器视觉领域&#xff0c;经常会遇到圆环型的检测目标&#xff0c;比如瓶口&#xff0c;轮胎&#xff0c;橡皮圈等等&#xff0c;比如想检测轮胎上的瑕疵&#xff0c;就可以通过把环形区域展开成矩形形状&#xff0c;然后对胎侧进行瑕疵检测&#xff0c;再比如对圆环扣上的字…

2024大厂Android面试集合,安卓开发面试书籍

前言 早在2017年我们就建了第一个进击BAT的Android开发进阶交流群&#xff0c;两年期间很多群友都分享了自己的Android面试经历。其中就有很多群友已经斩获蚂蚁金服&#xff0c;天猫&#xff0c;高德&#xff0c;盒马等阿里系offer 收集反馈的面经资料比较乱&#xff0c;最近…

2024BAT大厂Java社招最全面试题,成功入职字节跳动

前言 现在Java程序员面试都是因为没有丰富的工作经验和自己过硬的技术&#xff0c;所有都不知道一般互联网应该会问什么技术问题&#xff0c;加上自己可能去面试的时候没有准备的太充分&#xff0c;一面试刚跟面试官扯几个面试题就不知道自己在哪里了&#xff0c;被怼的体无完…

● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

● 198.打家劫舍 动规五部曲。 1、dp[j]含义。前j个房屋偷到的金额之和最大是dp[j]。 2、递推公式。递推公式要得出dp[i]&#xff0c;就是要确定第i个房屋是否打劫&#xff0c;那么也跟之前的背包问题一样&#xff0c;放与不放&#xff0c;对应的是两种结果&#xff0c;我们只需…

旺泓_光感WH3620_数字RGBW-IR色彩传感器

由工采网代理的WH3620是一种基于颜色的光到数字转换器;它集光电二极管、电流放大器、模拟电路和数字信号处理器于一体&#xff1b;提供红、绿、蓝、白和红外光传感&#xff1b;能调节屏幕或灯光白平衡&#xff1b;各通道同时并行输出&#xff0c;因此在白光LED、CWF、TL84、D65…

防患未然,OceanBase巡检工具应用实践——《OceanBase诊断系列》之五

1. OceanBase为什么要做巡检功能 尽管OceanBase拥有很好的MySQL兼容性&#xff0c;但在长期的生产环境中&#xff0c;部署不符合标准规范、硬件支持异常&#xff0c;或配置项错误等问题&#xff0c;这些短期不会出现的问题&#xff0c;仍会对数据库集群构成潜在的巨大风险。为…

一个简单的HTML 个人网页

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>个人网页</title> <style> body { f…

脾胃论笔记

焦虑会导致脾胃受伤 焦虑等不良情绪也会导致脾胃受伤&#xff0c;我们称其为肝气不舒。肝气不舒会导致脾胃系统出问题&#xff0c;这叫肝木横逆克脾土&#xff0c;木克土&#xff0c;脾胃就容易受伤。 这样的情况在现代社会特别多。这跟古人就不一样&#xff0c;古人生活相对…

C语言哈希表用法

文章目录 前言一、哈希结构体&#xff1f;二、增删差3、遍历&#xff0c;清空&#xff0c;计数 前言 哈希表在头文件“utash.h”中已经有了&#xff0c;只需简单学习用法即可 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很…

Python爬虫——Requests

目录 简介 基本使用​编辑 ​编辑 安装 一个类型和六个属性 请求类型 GET 代码示例 POST 代码示例 代理 古诗文网绕过验证码登录 总结 简介 Python的Requests库是一个用于发送HTTP请求的常用库。它提供了简单且人性化的API&#xff0c;使得发送HTTP请求变得非常容易。…

完美解决VMware中配置suse10虚拟机网络

一、注意&#xff01;&#xff01;&#xff01;配置suse10网络&#xff0c;需要在虚拟机关机状态下进行&#xff0c;否则会配置不成功&#xff1b; 二、配置与主机在同一网段(仅主机模式&#xff0c;网卡一)&#xff1b; 在suse系统关机状态下&#xff0c;Vmware中设置”虚拟网…

2024华为Android高级面试题及答案,android系统工程师面试

大厂offer是每个技术人的追求? 我觉得每一个程序员的梦想大概就是能够找一份大厂的 Offer&#xff0c;我觉得这很正常&#xff0c;这并不是我们的饭后谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/…

0.8秒一张图40hx矿卡stable diffusion webui 高质极速出图组合(24.3.3)

新消息是。经过三个月的等待&#xff0c;SD Webui (automatic1111)终于推出了新版本1.8.0&#xff0c;本次版本最大的更新&#xff0c;可能就是pytorch更新到2.1.2, 不过还是晚了pytorch 2.2.2版。 不过这版的一些更新&#xff0c;在forget分支上早就实现了&#xff0c;所以。…

2核4G云服务器就服阿里云,这性能无敌了

阿里云2核4G服务器多少钱一年&#xff1f;2核4G配置1个月多少钱&#xff1f;2核4G服务器30元3个月、轻量应用服务器2核4G4M带宽165元一年、企业用户2核4G5M带宽199元一年。可以在阿里云CLUB中心查看 aliyun.club 当前最新2核4G服务器精准报价、优惠券和活动信息。 阿里云官方2…

一文了解74HCT14D的引脚图、符号、封装、数据手册及应用

74HCT14D 是一款采用硅栅 C2MOS 技术制造的高速 CMOS 施密特逆变器。它实现了类似于等效 LSTTL 的高速操作&#xff0c;同时保持 CMOS 的低功耗。该器件可用作电平转换器&#xff0c;用于将 TTL 或 NMOS 连接到高速 CMOS。 输入与 TTL、NMOS 和 CMOS 输出电压电平兼容。所有输入…

什么是工业级物联网智能网关?如何远程控制PLC?

在这个信息爆炸的时代&#xff0c;物联网技术已经逐渐渗透到我们生活的方方面面&#xff0c;而工业级物联网智能网关作为连接工业设备和云端的重要桥梁&#xff0c;更是引领着工业4.0时代的浪潮。那么&#xff0c;究竟什么是工业级物联网智能网关呢&#xff1f;今天&#xff0c…

Python网络请求高级篇:Requests库的深度运用

在Python网络请求中级篇中&#xff0c;我们了解了如何通过Requests库发送带参数的请求&#xff0c;处理Cookies&#xff0c;使用Session对象&#xff0c;以及设置请求头。在本文中&#xff0c;我们将进一步深入学习Requests库的高级功能&#xff0c;包括处理重定向&#xff0c;…

GBase 8s内连接和外连接

GBase 8s内连接和外连接 内连接&#xff08;INNER JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;是最常用的连接类型之一&#xff0c;它根据两个或多个表之间的共同列值来联接这些表。在内连接中&#xff0c;只有在连接的表之间有匹配的值时&#xff0c;才会返…

Codesys 位置式PID闭环控制系统(PID+PWM控制无刷电机)

有关Codesys位置式PID算法公式和源代码,请参考下面文章链接: 1、Codesys位置式PID https://rxxw-control.blog.csdn.net/article/details/131591254https://rxxw-control.blog.csdn.net/article/details/1315912542、博途PLC PWM输出控制 https://rxxw-control.blog.csdn.…