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

news/2024/4/21 14:23:49/文章来源:https://blog.csdn.net/weixin_36928396/article/details/136459594

在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区别

在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】

验证Docker、nvidia-docker是否安装成功,可以使用以下命令:

  1. docker version

    此命令会显示Docker的版本信息。如果Docker已正确安装,它会输出Docker的版本号以及其他相关信息。

sudo docker version
  1. docker info

    这个命令提供了Docker系统的详细信息,包括容器、镜像、存储驱动、网络配置等。

sudo docker info
  1. docker -vdocker --version

    这两个命令都可以用来检查Docker是否已安装,并显示Docker的版本号。

sudo docker -v
sudo docker --version
  1. docker run hello-world

    这个命令会尝试从Docker Hub拉取一个名为“hello-world”的镜像,并在容器中运行它。

    如果Docker已正确安装并运行,它会输出一条“Hello from Docker!”的消息。

sudo docker run hello-world# 执行结果
Hello from Docker!
This message shows that your installation appears to be working correctly.
......

3.2 查找镜像库【search】

docker search 命令用于从 Docker Hub 查找镜像。允许根据关键字搜索镜像,并通过各种选项来过滤和格式化输出结果。

以下是一些常用的选项和说明:

  • TERM:要搜索的镜像名称或描述中的关键字。
  • --automated:只列出自动构建类型的镜像(已弃用)。
  • --filter, -f:基于给定条件过滤输出。可以使用的过滤器包括 stars(星星数),is-official(是否官方镜像)等。
  • --format:使用模板格式化显示输出。
  • --limit:限制搜索结果的数量。默认值为 25。
  • --no-trunc:禁止截断输出,显示完整的镜像描述等信息。

示例命令:

  1. 搜索镜像名中包含 busybox 的镜像:
sudo docker search busybox
  1. 搜索星数不小于 3 的 busybox 镜像,并且描述不截断:
sudo docker search --filter=stars=3 --no-trunc busybox
  1. 限制搜索输出个数为 5 个:
sudo docker search --limit=5 redis
  1. 搜索官方的 nginx 镜像:
sudo docker search nginx --filter "is-official=true"
  1. 搜索星数大于 50 的 nginx 镜像:
sudo docker search nginx --filter=stars=50

docker search 命令的输出将包含以下列:

  • NAME:镜像的名称。
  • DESCRIPTION:镜像的描述。
  • OFFICIAL:是否官方镜像。
  • stars:镜像的收藏数(星星数)。
  • AUTOMATED:是否为自动构建类型的镜像(已弃用)。

3.3 下载镜像【pull】

docker pull命令是用于从镜像仓库中拉取或更新镜像的命令。

dcoker pull命令的基本语法是:

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

这里的参数说明如下:

  • NAME:指定要拉取的镜像的名称。
  • TAG:指定镜像的标签。如果不写,则默认使用latest标签,表示拉取该镜像的最新版本。
  • DIGEST:使用镜像的摘要来指定一个具体的镜像版本。

例如,要拉取名为ubuntu的镜像的最新版本,你可以执行:

sudo docker pull ubuntu

要拉取一个特定的标签版本,如ubuntu18.04版本,你可以执行:

sudo docker pull ubuntu:18.04

拉取镜像时,Docker会检查本地是否存在该镜像及其标签,如果不存在,则会从配置的镜像仓库中下载。下载过程中,你可以看到相关的进度信息。下载完成后,该镜像就可以被用来创建和运行容器,以构建和部署应用程序。

需要注意的是,docker pull命令默认只会拉取一个镜像。如果你想要拉取一个镜像的所有标签版本,你可以使用-a--all-tags参数。例如:

sudo docker pull -a ubuntu

这将会拉取ubuntu镜像的所有可用标签版本。

3.4 创建容器【run】

docker run 命令是 Docker 中用于创建并启动一个容器的命令。

当运行这个命令时,Docker 会做以下几件事情:

  1. 创建容器:基于指定的镜像(如果不存在,Docker 会尝试从配置的镜像仓库中拉取)创建一个新的容器实例。

  2. 分配资源:为容器分配必要的系统资源,如 CPU、内存、网络端口等。

  3. 执行命令:在容器内部执行指定的命令。如果不指定命令,通常会执行容器镜像中定义的默认命令。

  4. 提供输入输出:将容器的标准输入、输出和错误流连接到宿主机的对应流上,以便你可以与容器进行交互。

docker run 命令的基本语法如下:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

其中:

  • OPTIONS:用于配置容器运行时的各种选项,如 -d(后台运行)、-p(端口映射)、-v(卷挂载)等。
  • IMAGE:指定要创建容器的镜像名称或ID。
  • COMMAND:容器启动后要执行的命令。
  • ARG...:传递给命令的参数。

以下是一些常见的 docker run 参数及其简要说明:

  1. -d, --detach=false:

    在后台运行容器,并返回容器ID。

  2. –name=“”:

    为容器指定一个名称。

  3. –dns=[]:

    设置容器的DNS服务器。

  4. -e, --env=[]:

    设置环境变量。例如:-e "DEBUG=false"

  5. -m, --memory=“”:

    设置容器的内存上限。

  6. –net=“bridge”:

    指定容器使用的网络模式,如 bridgehostnone 或自定义的网络。

  7. –expose=[]:

    开放一个端口或一组端口,但不映射到宿主机。

  8. -p, --publish=[]:

    公开容器的某个端口到宿主机,例如:-p 8080:80

  9. -h, --hostname=“”:

    指定容器的主机名。

  10. -v, --volume=[]:

    给容器挂载存储卷,例如:-v /host/dir:/container/dir

  11. –volumes-from=[]:

    从另一个容器挂载其卷。

  12. –cap-add=[]:

    添加Linux功能。

  13. –cap-drop=[]:

    移除Linux功能。

  14. -w, --workdir=“”:

    设置容器的工作目录。

  15. –label=[]:

    设置容器标签。

例如,以下命令将在后台启动一个基于 nginx 镜像的容器,名为nginxdemo,并将容器的 80 端口映射到宿主机的 8080 端口:

sudo docker run -d --name=nginxdemo -p 8080:80 nginx

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

使用 docker startdocker stopdocker restart 命令来启动、关闭和重启容器。

以下是这些命令的示例:

  1. 启动容器:
# 根据容器ID启动
sudo docker start <container_id># 根据容器名称启动
sudo docker start <container_name># 启动所有容器
sudo docker start $(docker ps -a -q)
  1. 关闭容器:
# 根据容器ID关闭
sudo docker stop <container_id># 根据容器名称关闭
sudo docker stop <container_name># 关闭所有容器
sudo docker stop $(docker ps -a -q)
  1. 重启容器:
# 根据容器ID重启
sudo docker restart <container_id>
# 根据容器ID,等待10秒后重启
sudo docker restart -t 10 <container_id># 根据容器名称重启
sudo docker restart <container_name>
# 根据容器名称,等待10秒后重启
sudo docker restart -t 10 <container_name># 重启所有容器
sudo docker restart $(docker ps -a -q)

3.6 列出容器【ps】

docker ps 命令用于列出当前正在运行的 Docker 容器。这个命令有一些可选的参数,用于筛选和格式化输出。

以下是一些 docker ps 命令的参数示例:

  1. 列出所有容器(包括未运行的):
sudo docker ps -a
  1. 根据条件筛选容器:
# 筛选名称为 mycontainer 的容器
sudo docker ps -f "name=mycontainer"# 筛选处于特定状态的容器(例如:running, stopped, exited 等)
sudo docker ps -f status=<status># 使用正则表达式列出名称符合特定模式的容器
sudo docker ps -f name=<pattern>
  1. 格式化输出:
sudo docker ps --format "{{.ID}}: {{.Image}}: {{.Status}}"
  1. 显示最近创建的 N 个容器:
sudo docker ps -n 3
  1. 显示容器大小:
sudo docker ps -s
  1. 不截断输出:
sudo docker ps --no-trunc

3.7 进入容器【attach、exec】

3.7.1 attach

docker attach命令用于将当前的终端连接到正在运行的Docker容器的标准输入、输出和错误流上。

使用该命令,可以在终端中查看容器的输出和执行命令。此命令的基本语法如下:

docker attach [OPTIONS] CONTAINER

其中,OPTIONS是可选的选项,可以用于指定命令的行为。CONTAINER是要连接到的Docker容器的名称或ID。

下面是一些常用的选项:

  • --no-stdin:不连接标准输入流
  • --sig-proxy:将信号传递给容器

**示例1:**连接到一个正在运行的容器

假设有一个名为web的容器正在运行,连接到它并查看它的输出。可以使用以下命令:

sudo docker attach web

**示例2:**在连接到容器后执行一个命令

在连接到容器后执行一个命令。可以使用以下命令:

sudo docker attach -t CONTAINER COMMAND

其中,-t选项用于为容器分配一个伪终端。

例如,以下命令将在连接到web容器后执行一个ls命令:

sudo docker attach -t web ls

**示例3:**从容器中分离

从连接的容器中分离,可以使用命令exit,也可以使用键盘快捷键Ctrl-pCtrl-q

3.7.2 exec

docker exec命令用于在正在运行的Docker容器中执行命令。

使用该命令,可以在不进入容器的情况下,在容器内部执行一些命令。此命令的基本语法如下:

sudo docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

其中,OPTIONS是可选的选项,可以用于指定命令的行为。CONTAINER是要执行命令的Docker容器的名称或ID。COMMAND是要在容器中执行的命令,ARG是传递给该命令的参数。

下面是一些常用的选项:

  • -i:以交互模式运行容器
  • -t:为容器分配一个伪终端
  • --user:指定要在容器中运行命令的用户名或UID
  • -d:在后台运行容器并输出容器ID
  • --env:指定环境变量

**示例1:**在容器中运行一个命令

假设我们有一个名为web的容器正在运行,我们想在其中运行一个ls命令以列出容器中的文件和目录。可以使用以下命令:

sudo docker exec web ls

**示例2:**在容器中运行一个交互式命令

在容器中运行一个交互式命令,例如一个shell。可以使用-i-t选项来启动一个交互式会话。

例如,以下命令将在web容器中启动一个bash shell:【最常用的容器进入命令之一

sudo docker exec -it web /bin/bash

**示例3:**在容器中运行一个命令并指定用户

假设我们需要在web容器中运行一个命令,但需要使用特定的用户身份运行该命令。可以使用--user选项来指定要使用的用户。

例如,以下命令将在web容器中以www-data用户身份运行ls命令:

sudo docker exec --user www-data web ls

3.7.3 attach和exec区别

  • 使用 attach进入容器,不会启动新的终端, 退出容器时,会导致容器的停止。
  • 使用 exec 进入容器开启一个新的bash终端,退出此bash终端时,不会导致容器停止。

(未完待续…)


may the odds be ever in your favor ~

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

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

相关文章

ChatGPT数据分析应用——漏斗分析

ChatGPT数据分析应用——漏斗分析 ​ 漏斗分析在数据分析中也比较常用&#xff0c;主要是用于发现各个转化流程中哪个环节有问题。接下来我们让ChatGPT解释这个方法的概念并提供相应的案例。发送如下内容给ChatGPT。 ​ ChatGPT收到上述内容后&#xff0c;返回如下结果。 漏斗…

MutationObserver详解

1.基于之前Chrome游览器插件开发的过程中&#xff0c;会遇到在插件控制台打印被安游览器页面的元素&#xff0c;一直未解决。后来找到了解决了办法可以使用MutationObserver&#xff1b;使用MutationObserver这个可以在被安游览器页面直接打印页面元素等等&#xff0c;可能你会…

【电路笔记】-RC网络-时间常数

时间常数 文章目录 时间常数1、概述2、RC 电路的时间常数3、示例14、示例25、RC瞬态放电曲线6、示例37、总结Tau τ \tau τ 是 RC 电路在阶跃变化输入条件下从一种稳态条件变为另一种稳态条件所需的时间常数。 1、概述 Tau,符号 τ \tau τ,是电气和电子计算中使用的希腊字…

【翻译】零信任架构准则(五)Don‘t trust any network

将监控重点放在用户&#xff0c;设备和服务上 全面监控必不可少&#xff0c;因为设备和服务更容易受到网络攻击。在零信任架构中&#xff0c;随着设备&#xff0c;服务和用户行为的持续评估&#xff0c;我们的监控策略很可能发生改变。我们应该持续进行监控&#xff0c;并将用…

基于uniapp cli项目开发的老项目,运行报错path.replace is not a function

项目&#xff1a;基于uniapp cli的微信小程序老项目 问题&#xff1a;git拉取代码&#xff0c;npm安装包时就报错&#xff1b; cnpm能安装成功包&#xff0c;运行报错 三种方法尝试解决&#xff1a; 更改代码&#xff0c;typeof pathstring的话&#xff0c;才走path.replace…

wpf prism左侧抽屉式菜单

1.首先引入包MaterialDesignColors和MaterialDesignThemes 2.主页面布局 左侧菜单显示在窗体外&#xff0c;点击左上角菜单图标通过简单的动画呈现出来 3.左侧窗体外菜单 <Grid x:Name"GridMenu" Width"150" HorizontalAlignment"Left" Ma…

1.2_2 OSI参考模型

文章目录 1.2_2 OSI参考模型一、概述&#xff08;一&#xff09;ISO/OSI参考模型是怎么来的&#xff1f;&#xff08;二&#xff09;ISO/OSI参考模型&#xff08;三&#xff09;ISO/OSI参考模型解释通信过程 二、各层功能及协议&#xff08;一&#xff09;应用层&#xff08;第…

备份 ChatGPT 的聊天纪录

备份 ChatGPT 的聊天纪录 ChatGPT 在前阵子发生了不少次对话纪录消失的情况&#xff0c;让许多用户觉得困扰不已&#xff0c;也担心自己想留存的聊天记录消失不见。 好消息是&#xff0c;OpenAI 在 2023 年 4 月 11 日推出了 ChatGPT 聊天记录备份功能&#xff0c;无论是免费…

java基础-io

文章目录 IO常见面试题java中io流分为几种BIO,NIO,AIO有什么区别 IO分类字符流-字节流-缓冲区字节流、字符流和转换流之间的关系字节字符得区别缓冲区 同步阻塞IO/BIO同步非阻塞IO/NIOjava NIO由几个核心部门&#xff1a;缓存Buffers&#xff1b;通道Channels&#xff1b;选择器…

项目建设计划书-word

【项目建设计划书-word】 项目描述&#xff08;项目目标&#xff0c;客户需求情况&#xff0c;项目交付清单&#xff0c;验收标准和交付期限&#xff0c;服务及约束&#xff09;项目组织&#xff08;项目组人员架构&#xff0c;职责分工&#xff0c;人员投入安排及时间点安排&…

气相白炭黑外资垄断格局被打破 国内本土企业数量增加

气相白炭黑外资垄断格局被打破 国内本土企业数量增加 气相白炭黑又名气相二氧化硅&#xff0c;是一种无毒、无味、无嗅&#xff0c;无污染的非金属氧化物&#xff0c;主要由硅的卤化物在氢氧火焰中高温水解生成的带有表面羟基和吸附水的无定形的纳米级颗粒。气相白炭黑主要用于…

测试一下 Anthropic 宣称超过 GPT-4 的 Claude 3 Opus

测试一下 Anthropic 宣称超过 GPT-4 的 Claude 3 Opus 0. 引言1. 测试 Claude 3 Opus 0. 引言 今天测试一下 Anthropic 发布的 Claude 3 Opus。 3月4日&#xff0c;Anthropic 宣布推出 Claude 3 型号系列&#xff0c;该系列在广泛的认知任务中树立了新的行业基准。该系列包括…

【NR 定位】3GPP NR Positioning 5G定位标准解读(三)

目录 前言 5 NG-RAN UE定位架构 5.1 架构 5.2 UE定位操作 5.3 NG-RAN定位操作 5.3.1 通用NG-RAN定位操作 5.3.2 OTDOA定位支持 5.3.3 广播辅助信息支持 5.3.4 NR RAT相关定位支持 5.4 NG-RAN中与UE定位相关的元素功能描述 5.4.1 用户设备&#xff08;UE&#xff09; …

c++ 中const

对于基础类型直接赋值 void test01(){const int data10;cout<<"data"<<data<<endl;int * p (int*)&data;*p 1000;cout<<"*p"<<*p<<endl;cout<<"after data"<<data; } c中&#xff0c;对于…

洛谷 P1731 [NOI1999] 生日蛋糕

题目 题目链接 自己没看题解写的&#xff0c;摸石头过河&#xff0c;解释一下 首先&#xff0c;输入输出都是正整数。先搞定输入&#xff0c;再判断条件&#xff0c;如果无解&#xff0c;输出0&#xff0c;否则输出蛋糕外表面面积Q&#xff08;这里用全局变量&#xff0c;开l…

【愚公系列】2024年02月 《网络安全应急管理与技术实践》 013-网络安全应急技术与实践(Web层-XSS钓鱼攻击)

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。 🏆《近期荣誉》:2022…

全志D1s裸机开发之体验第一个程序

体验第一个程序 2.1 编译烧录运行 2.1.1 编译 先进入源码目录&#xff0c;打开 Git Bash&#xff0c;如下图操作&#xff1a; 然后在 Git Bash 中执行 make 命令&#xff0c;可以生成 benos_payload.bin 文件&#xff0c;如下图所示&#xff1a; 2.1.2 烧录运行 使用 2 条 …

Leetcode HOT150

55. 跳跃游戏 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1 …

用云手机进行舆情监测有什么作用?

在信息爆炸的时代&#xff0c;舆情监测成为企业和政府决策的重要工具。通过结合云手机技术&#xff0c;舆情监测系统在品牌形象维护、市场竞争、产品研发、政府管理以及市场营销等方面发挥着关键作用&#xff0c;为用户提供更智能、高效的舆情解决方案。 1. 品牌形象维护与危机…

基于java ssm springboot女士电商平台系统

基于java ssm springboot女士电商平台系统源码文档设计 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末…