【DevOps】Docker 容器及其常用命令

news2024/11/17 17:47:47

Docker 容器及其常用命令

  • 1.容器
  • 2.Docker 常用命令
    • 2.1 Docker 环境信息
    • 2.2 容器生命周期管理
      • 2.2.1 docker run
      • 2.2.2 docker start / stop / restart
    • 2.3 镜像仓库命令
      • 2.3.1 docker pull
      • 2.3.2 docker push
    • 2.4 镜像管理
      • 2.4.1 docker images
      • 2.4.2 docker rmi / rm
    • 2.5 容器运维操作
      • 2.5.1 docker attach
      • 2.5.2 docker inspect
      • 2.5.3 docker ps
    • 2.6 其他子命令
      • 2.6.1 docker commit
      • 2.6.2 docker events / history / logs

在这里插入图片描述

1.容器

容器技术的生态系统自下而上分别覆盖了 IaaS 层和 PaaS 层所涉及的各类问题,包括资源调度、编排、部署、监控、配置管理、存储网络管理、安全、容器化应用支撑平台等。除了基于容器技术解决构建分布式平台无法回避的经典问题,容器技术主要带来了以下几点好处。

  • 持续部署与测试。容器消除了线上线下的环境差异,保证了应用生命周期的环境一致性和标准化。开发人员使用镜像实现标准开发环境的构建,开发完成后通过封装着完整环境和应用的镜像进行迁移,由此,测试和运维人员可以直接部署软件镜像来进行测试和发布,大大简化了持续集成、测试和发布的过程。

  • 跨云平台支持。容器带来的最大好处之一就是其适配性,越来越多的云平台都支持容器,用户再也无需担心受到云平台的捆绑,同时也让应用多平台混合部署成为可能。目前支持容器的 IaaS 云平台包括但不限于亚马逊云平台(AWS)、Google 云平台(GCP)、微软云平台(Azure)、OpenStack 等,还包括如 ChefPuppetAnsible 等配置管理工具。

  • 环境标准化和版本控制。基于容器提供的环境一致性和标准化,你可以使用 Git 等工具对容器镜像进行版本控制,相比基于代码的版本控制来说,你还能够对整个应用运行环境实现版本控制,一旦出现故障可以快速回滚。相比以前的虚拟机镜像,容器压缩和备份速度更快,镜像启动也像启动一个普通进程一样快速。

  • 高资源利用率与隔离。容器没有管理程序的额外开销,与底层共享操作系统,性能更加优良,系统负载更低,在同等条件下可以运行更多的应用实例,可以更充分地利用系统资源。同时,容器拥有不错的资源隔离与限制能力,可以精确地对应用分配 CPU、内存等资源,保证了应用间不会相互影响。

  • 容器跨平台性与镜像。Linux 容器虽然早在 Linux 2.6 版本内核已经存在,但是缺少容器的跨平台性,难以推广。容器在原有 Linux 容器的基础上进行大胆革新,为容器设定了一整套标准化的配置方法,将应用及其依赖的运行环境打包成镜像,真正实现了 一次构建,到处运行 的理念,大大提高了容器的跨平台性。

  • 易于理解且易用。Docker 的英文原意是处理集装箱的码头工人,标志是鲸鱼运送一大堆集装箱,集装箱就是容器,生动好记,易于理解。一个开发者可以在 15 分钟之内入门 Docker 并进行安装和部署,这是容器使用史上的一次飞跃。因为它的易用性,有更多的人开始关注容器技术,加速了容器标准化的步伐。

  • 应用镜像仓库。Docker 官方构建了一个镜像仓库,组织和管理形式类似于 GitHub,其上已累积了成千上万的镜像。因为 Docker 的跨平台适配性,相当于为用户提供了一个非常有用的应用商店,所有人都可以自由地下载微服务组件,这为开发者提供了巨大便利。

2.Docker 常用命令

用户在使用 Docker 时,需要使用 Docker 命令行工具 dockerDocker daemon 建立通信。Docker daemon 是 Docker 守护进程,负责接收并分发执行 Docker 命令。

值得一提的是,docker 命令的执行一般都需要获取 root 权限,因为 Docker 的命令行工具 dockerDocker daemon 是同一个二进制文件,而 Docker daemon 负责接收并执行来自 docker 的命令,它的运行需要 root 权限。

在进行命令的解读前,依据命令的用途对其进行分类,帮助大家尽快掌握 docker 命令。

子命令分类子命令
Docker 环境信息infoversion
容器生命周期管理createexeckillpauserestartrmrunstartstopunpause
镜像仓库命令loginlogoutpullpushsearch
镜像管理buildimagesimportloadrmisavetagcommit
容器运维操作attachexportinspectportpsrenamestatstopwaitcpdiffupdate
容器资源管理volumenetwork
系统日志信息eventshistorylogs

docker 命令使用出发,梳理出如下图所示的命令结构图。
在这里插入图片描述

2.1 Docker 环境信息

docker info 命令用于检查 Docker 是否正确安装。如果 Docker 正确安装,该命令会输出 Docker 的配置信息。

docker info 命令一般结合 docker version 命令使用,两者结合使用能够提取到足够详细的 Docker 环境信息。

$ sudo docker info

在这里插入图片描述

$ sudo docker version

在这里插入图片描述

2.2 容器生命周期管理

容器生命周期管理涉及容器启动、停止等功能,下面选取最常用的 docker run 命令和负责启动停止的 docker start / stop / restart 命令举例。

2.2.1 docker run

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

docker run 命令用来基于特定的镜像创建一个容器,并依据选项来控制该容器。

$ sudo docker run ubuntu echo "Hello World"
Hello World

这是 docker run 命令最基本的使用方法,该命令从 ubuntu 镜像启动一个容器,并执行 echo 命令打印出 “Hello World”。执行完 echo 命令后,容器将停止运行。docker run 命令启动的容器会随机分配一个容器 ID(CONTAINER ID),用以标识该容器。

在选取启动容器的镜像时,可以在镜像名后添加 tag 来区分同名的镜像,如 ubuntu:latestubuntu:13.04ubuntu:14.04。如在选取镜像启动容器时,用户未指定具体 tag,Docker 将默认选取 taglatest 的镜像。

$ sudo docker run -i -t --name mytest ubuntu:latest /bin/bash
root@83b752d52f3f:/#

上例中,docker run 命令启动一个容器,并为它分配一个伪终端执行 /bin/bash 命令,用户可以在该伪终端与容器进行交互。其中:

  • -i 选项表示使用交互模式,始终保持输入流开放;
  • -t 选项表示分配一个伪终端,一般两个参数结合时使用 -it,即可在容器中利用打开的伪终端进行交互操作;
  • --name 选项可以指定 docker run 命令启动的容器的名字,若无此选项,Docker 将为容器随机分配一个名字。

关于 docker run 的其他选项的用法可以通过官方文档查知。

2.2.2 docker start / stop / restart

docker run 命令可以新建一个容器来运行,而对于已经存在的容器,可以通过 docker start / stop / restart 命令来启动、停止和重启。

利用 docker run 命令新建一个容器时,Docker 将自动为每个新容器分配唯一的 ID 作为标识。docker start / stop / restart 命令一般利用容器 ID 标识确定具体容器,在一些情况下,也使用容器名来确定容器。

2.3 镜像仓库命令

Docker registry 是存储容器镜像的仓库,用户可以通过 Docker clientDocker registry 进行通信,以此来完成镜像的搜索、下载和上传等相关操作。DockerHub 是由 Docker 公司在互联网上提供的一个镜像仓库,提供镜像的公有与私有存储服务,它是用户最主要的镜像来源。除了 Docker Hub 外,用户还可以自行搭建私有服务器来实现镜像仓库的功能。下面选取最常用的 docker pullpush 命令举例。

2.3.1 docker pull

docker pull 命令是 Docker 中的常用命令,主要用于从 Docker registry 中拉取 imagerepository。在 Docker 官方仓库 Docker Hub 中有许多即拿即用的镜像资源,通过 docker pull 命令可以有效地利用它们,这也体现了 Docker 一次编译,到处运行的特性。同时,当镜像被拉取到本地后,用户可以在其现有基础上做出自身的更改操作,这也大大加快了应用的开发进程。

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

在使用 docker pull 命令时,可以从官方的 Docker Hub 中的官方镜像库、其他公共库、私人库中获取镜像资源,同时,还可以从私有服务器中获取镜像资源。只需在具体的镜像名前添加用户名、特定库名或者服务器地址即可获取镜像。使用示例如下:

#从官方Hub拉取ubuntu:latest镜像
$ sudo docker pull ubuntu
#从官方Hub拉取指明“ubuntu 12.04”tag的镜像
$ sudo docker pull ubuntu:ubuntu12.04
#从特定的仓库拉取ubuntu镜像
$ sudo docker pull SEL/ubuntu
#从其他服务器拉取镜像
$ sudo docker pull 10.10.103.215:5000/sshd

2.3.2 docker push

docker pull 命令相对应的 docker push 命令,可以将本地的 imagerepository 推送到 Docker Hub 的公共或私有镜像库,以及私有服务器。

docker push [OPTIONS] NAME[:TAG]
$ sudo docker images

2.4 镜像管理

2.4.1 docker images

通过 docker images 命令可以列出主机上的镜像,默认只列出最顶层的镜像,可以使用 -a 选项显示所有镜像。

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

在这里插入图片描述
上例中,从 REPOSITORY 属性可以判断出镜像是来自于官方镜像、私人仓库还是私有服务器。

2.4.2 docker rmi / rm

这两个子命令的功能都是删除,docker rmi 命令用于 删除镜像docker rm 命令用于 删除容器。它们可同时删除多个镜像或容器,也可按条件来删除。

docker rm [OPTIONS] CONTAINER [CONTAINER...]
docker rmi [OPTIONS] IMAGE [IMAGE...]

需要注意的是,使用 rmi 命令删除镜像时,如果已有基于该镜像启动的容器存在,则无法直接删除,需要首先删除容器。当然,这两个子命令都提供 -f 选项,可强制删除存在容器的镜像或启动中的容器。

2.5 容器运维操作

2.5.1 docker attach

docker attach 命令对于开发者来说十分有用,它可以连接到正在运行的容器,观察该容器的运行情况,或与容器的主进程进行交互。

docker attach [OPTIONS] CONTAINER

2.5.2 docker inspect

docker inspect 命令可以查看镜像和容器的详细信息,默认会列出全部信息,可以通过 --format 参数来指定输出的模板格式,以便输出特定信息。

docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE...]

例如:

#查看容器的内部IP
$ sudo docker inspect --format='{{.NetworkSettings.IPAddress}}' ee36
172.17.0.8

2.5.3 docker ps

docker ps 命令可以查看容器的相关信息,默认只显示 正在运行的容器的信息。可以查看到的信息包括 CONTAINER IDNAMESIMAGESTATUS、容器启动后执行的 COMMAND、创建时间 CREATED 和绑定开启的端口 PORTSdocker ps 命令最常用的功能就是查看容器的 CONTAINER ID,以便对特定容器进行操作。

2.6 其他子命令

除了上述的命令外,Docker 还有一系列非常有用的子命令,如固化容器为镜像的 commit 命令等。下面以一些较为常用的子命令举例。

2.6.1 docker commit

commit 命令可以将一个容器固化为一个新的镜像。当需要制作特定的镜像时,会进行修改容器的配置,如在容器中安装特定工具等,通过 commit 命令可以将这些修改保存起来,使其不会因为容器的停止而丢失。

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

提交保存时,只能选用正在运行的容器(即可以通过 docker ps 查看到的容器)来制作新的镜像。在制作特定镜像时,直接使用 commit 命令只是一个临时性的辅助命令,不推荐使用。官方建议通过 docker build 命令结合 Dockerfile 创建和管理镜像。

2.6.2 docker events / history / logs

eventshistorylogs 这 3 个命令用于查看 Docker 的系统日志信息。

  • events 命令会打印出实时的系统事件。
  • history 命令会打印出指定镜像的历史版本信息,即构建该镜像的每一层镜像的命令记录。
  • logs 命令会打印出容器中进程的运行日志。
docker events [OPTIONS]
docker history [OPTIONS] IMAGE
docker logs [OPTIONS] CONTAINER

对于 Docker 的操作,我们应更多地结合案例操作进行深入学习和理解,并多做练习,打下坚实的基础。同时,深入了解 Docker 的核心原理对于掌握 Docker 的使用操作颇有益处。

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

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

相关文章

一键制作纯文字背景视频,让你轻松制作短视频!

你是否曾经被繁琐的视频制作流程所困扰?不用担心,现在有了纯文字视频制作神器,让你成为视频制作大师的梦想不再遥远! 首先,让我们来看看纯文字视频制作神器主要的功能之一:一键生成短视频。只需输入你的文…

已解决: Microservice Error: Timeout Error: Service didn‘t respond in time

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页: 🐅🐾猫头虎的博客🎐《面试题大全专栏》 🦕 文章图文并茂&#x1f996…

ubuntu18.04安装docker

ubuntu18.04安装docker 文章目录 ubuntu18.04安装docker一.安装1.更新软件库索引2.安装一些必要的软件包3.添加Docker的官方GPG密钥4.添加Docker软件库5.再次更新软件库索引6.安装Docker CE7.启动Docker并设置开机启动8.验证Docker安装9.(若要让非root用户可以运行Docker命令)可…

【广州华锐互动】马属直肠检查3D虚拟仿真课件

随着科技的发展,医疗行业也在不断地进行创新。其中,广州华锐互动开发的马属直肠检查3D虚拟仿真课件,为医学教育和实践操作带来了新的可能性。它不仅可以帮助医生提高诊断准确率,还可以让医学生在没有真实病人的情况下进行实践操作…

admin后台管理

admin后台管理 django 提供了比较完善的后台管理数据库的接口,可供开发过程中调用和测试使用 django 会搜集所有已注册的模型类,为这些模型类提拱数据管理界面,供开发者使用 admin配置步骤 创建后台管理帐号- 该账号为管理后台最高权限账号…

删除表中的数据

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 语法格式: delete from 表名 where 记录匹配条件; 说明:如果**不写where**子句,表示无条件,删除表中的**所有记…

9月25日星期一,今日早报简报微语报早读

9月25日,星期一,早报简报微语早读分享。 1、祝贺中国队!开幕首日中国队20金7银3铜,共计30枚奖牌,位列奖牌榜第一名; 2、NBL深蓝官宣:陕西罢赛遭重罚 罚款100万取消评奖资格; 3、中…

NPDP是什么?考了有用吗?

1)NPDP是什么? NPDP,全称为New Product Development Professional,即新产品开发专业人员。NPDP认证是由世界产品开发协会(PDMA)推出的一项专业认证。它旨在评估和认可个人在新产品开发领域的专业知识和技能…

github代码提交过程详细介绍

1、下载github上面的代码 (1)在github网站上,找到想要下载的代码仓库界面,点击Code选项就可以看到仓库的git下载地址; (2)使用命令下载:git clone 地址; 2、配置本地git…

基于YOLOv8模型的垃圾满溢检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOv8模型的垃圾满溢检测系统可用于日常生活中检测与定位车辆垃圾(garbage)、垃圾桶(garbage_bin)和垃圾满溢(overflow)目标,利用深度学习算法可实现图片、视频、摄像头等…

离散小波变换(概念与应用)

目录 概念光伏功率预测中,如何用离散小波变换提取高频特征概念 为您简单地绘制一些示意图来描述离散小波变换的基本概念。但请注意,这只是一个简化的示意图,可能不能完全捕捉到所有的细节和特性。 首先,我将为您绘制一个简单的小波函数和尺度函数的图像。然后,我会提供一…

oracle 根据分号分割为多个列

oracle 没有split 函数,因此没法直接使用,但是时间上会遇到需要分割的时候,可以使用正则表达式 SELECT REGEXP_SUBSTR(administration, [^;], 1, 1) AS SKILL1, REGEXP_SUBSTR(administration, [^;], 1, 2) AS SKILL2, REGEXP_SUBSTR(admini…

php万能表单系统源码 支持自定义+收费表单活动报名 适合多行业

在众多的表单系统中,PHP万能表单系统因其灵活性和可扩展性备受开发者的青睐。PHP万能表单系统是一款基于PHP语言的表单生成器,它可以帮助开发者快速生成各种类型的表单,如注册、登录、留言等。下面给大家分享一款php万能表单系统源码&#xf…

Android12之仿Codec2.0实现传递编解码器组件本质(四十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

2023-9-25 耍杂技的牛

题目链接&#xff1a;耍杂技的牛 #include <iostream> #include <algorithm>using namespace std;typedef pair<int, int> PII;const int N 50010;int n; PII cow[N];int main() {cin >> n;for(int i 0; i < n; i ){int w, s;cin >> w >…

概率密度函数、分布函数、随机变量、概率函数=概率分布

概率密度函数&#xff1a; 长方形的面积组距*概率/组距&#xff0c;所有长方形之和1 当组距为无穷小的时候&#xff0c;就会生成上图的曲线&#xff0c;曲线的面积为1&#xff0c;而蓝色曲线本身是概率密度函数&#xff0c;可以写作f(x)。 分布函数&#xff1a; 将曲线进行积…

巨人互动|Google海外户Google SEO的技术要素

Google SEO&#xff08;Search Engine Optimization&#xff09;是指通过对网站进行优化&#xff0c;使其在Google搜索引擎中的排名获得提升的一系列技术和策略。随着互联网的快速发展和用户对搜索引擎的依赖程度不断增加&#xff0c;优化网站在搜索引擎中的可见性&#xff0c;…

UNet简单介绍

UNet简单介绍 语义分割&#xff08;Semantic Segmentation&#xff09;是计算机视觉领域的一项基础任务&#xff0c;旨在将图像中的每个像素分配到特定的语义类别中&#xff0c;即对图像中的每个像素进行分类&#xff0c;从而实现对图像像素级别的理解和分析。与图像分类任务不…

12大常用自动化测试工具,请记得转发收藏!

常用自动化测试工具 1、Appium AppUI自动化测试 Appium 是一个移动端自动化测试开源工具&#xff0c;支持iOS 和Android 平台&#xff0c;支持Python、Java 等语言&#xff0c;即同一套Java 或Python 脚本可以同时运行在iOS 和Android平台&#xff0c;Appium 是一个C/S 架构&…

JUC第九讲:类汇总和学习指南

JUC第九讲&#xff1a;类汇总和学习指南 本文是JUC第九讲&#xff0c;对JUC进行知识体系解读&#xff0c;后续的文章还针对几乎所有的核心的类以及常用的工具类作了详细的解读; 本文站在一定的高度了解JUC下包的设计和实现&#xff1b;同时对重要的章节提供跳转链接。 文章目录…