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

Docker的常用命令

docker的常用命令

今天来介绍docker的常用命令,非常的详细,请大家看起来!

获取镜像

如果只指定了镜像的名称,则默认会获取latest标签标记的镜像

命令格式:dokcer pull [Docker Registry地址]仓库名[:标签名]

获取centos:latest镜像

[root@localhost ~]# docker pull centos:latest

 #centos:latest镜像

latest: Pulling from library/centos

a1d0c7532777: Pull complete

Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177

Status: Downloaded newer image for centos:latest

docker.io/library/centos:latest

查看本地镜像信息

[root@localhost ~]# docker images #查看本地镜像信息

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

nginx        latest    60c8a892f36f   6 weeks ago   192MB

centos       latest    5d0da3dc9764   3 years ago   231MB

虚悬镜像一般是当我们使用 docker pull 拉取最新镜像时,生成的新的镜像,所以仓库名和标签给了新的镜像,旧的镜像仓库和标签则被取消,成为虚悬镜像。

我们可以使用下面的语句打印所有的虚悬镜像

[root@master ~]# docker images -f dangling=true

一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除

[root@master ~]# docker image prune

查看镜像信息

命令格式:docker images [选项][仓库名][:标签名]

-a:列出本地所有的镜像(含中间映射层,默认情况下,过滤掉中间映射层)

-f:显示满足条件的镜像

-q:只显示镜像ID

[root@localhost ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

仓库源      标签         I D         创建时间       大小

nginx        latest    60c8a892f36f   6 weeks ago   192MB

centos       latest    5d0da3dc9764   3 years ago   231MB

查看镜像详细信息

[root@localhost ~]# docker image inspect 镜像名或ID

标记镜像

利用docker tag命令可为本地镜像添加标签,标签可以看作一个别名,一个镜像可以有多个标签,但只能有一个id

docker tag [镜像名][:原标签名] [镜像名][:新标签名]

eg.将centos:latest镜像标记为centos:test镜像

[root@localhost ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

nginx        latest    60c8a892f36f   6 weeks ago   192MB

centos       latest    5d0da3dc9764   3 years ago   231MB

[root@localhost ~]# docker tag centos:latest centos:test

[root@localhost ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

nginx        latest    60c8a892f36f   6 weeks ago   192MB

centos       latest    5d0da3dc9764   3 years ago   231MB

centos       test      5d0da3dc9764   3 years ago   231MB

删除镜像

docker rmi [选项] 镜像1 [镜像2...]

-f:强制删除

--no-prune:不移除该镜像的过程镜像,默认是移除该镜像的过程镜像的

eg.列出本地主机的所有镜像,并删除镜像名为mysql:latest的镜像

[root@localhost ~]# docker rmi mysql:latest

Untagged: mysql:latest

Untagged: mysql@sha256:2be51594eba5983f47e67ff5cb87d666a223e309c6c64450f30b5c59a788ea40

Deleted: sha256:10db11fef9ce975df1539448189656f9e3251b7984130c7a86e1b348bf298a89

Deleted: sha256:2b5b68eca9b7b6d78e543387d22e52b3721c8f38ec303b4113e3d2bf18285460

Deleted: sha256:bf45a8b9ff0a324c9de68445dd601537a40456b4fbfbebd03fb9f84543eda981

Deleted: sha256:eaca5a58ed6b177689eda6f95af4f83668e25cc78258a387b63d355720488b0f

Deleted: sha256:09768c427d8d188eff8dcece6a564245cc4dd33f12c0b809d7787923fee9f81b

Deleted: sha256:29b5e5ff823785148ad73a312b9e9b70b1717d0dadddcff0afd57451560fb5f8

Deleted: sha256:cdf2927ac95f8b2678e55b006c1d27658d288fd89445f748ac830ad993dffc1f

Deleted: sha256:ea2d3769a6a4b2a98f5670688eabb52399a519193b48f1563541744f58ee2e07

Deleted: sha256:02d8b5400ffdc72db9b31b97c527ec4b7809a3ef92f07728666b8e58b200ea4a

Deleted: sha256:32a4e636b9a06052480457b8209c4347fea87ce36588f02fe5f9aecfc926ef5e

Deleted: sha256:217e34a4f824cbbde5da4b4365fc28294902fadb2115f24426d07460a515a665

[root@localhost ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

nginx        latest    60c8a892f36f   6 weeks ago   192MB

centos       latest    5d0da3dc9764   3 years ago   231MB

centos       test      5d0da3dc9764   3 years ago   231MB

在删除镜像时,也可以使用镜像ID、镜像短ID进行删除

-q:批量删除相关镜像

删除所有仓库名为nginx的镜像

[root@localhost ~]# docker rmi $(docker images -q nginx)

删除本地所有镜像

[root@localhost ~]# docker rmi $(docker images -q)

此外,对于被多个标签引用的镜像ID,在删除镜像时需使用最后一个引用该镜像的标签,才能在删除标签的同时删除该镜像的所有文件

镜像的导入和导出

如果想与别人共享某个镜像,除了从镜像服务仓库中pull镜像和把镜像push到仓库上去之外,其实我们还可以将本地构建好的镜像直接导出并保存为文件发送给别人,例如当前有一个centos镜像,可以使用命令保存到本地

[root@master ~]# docker images

[root@master ~]# docker save centos:latest > centos_latest.tar

[root@master ~]# ll

将ubuntu:latest镜像导出生成ubuntu.tar文件

[root@localhost ~]# docker save -o ubuntu.tar ubuntu:latest

[root@localhost ~]# ls

anaconda-ks.cfg  ubuntu.tar

而当你拿到别人导出的镜像文件,你可以使用docker load命令把镜像加载到本地的Docker镜像列表中

将ubuntu.tar文件导入

[root@localhost ~]# docker load --input ubuntu.tar

Loaded image: ubuntu:latest

[root@localhost ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

ubuntu       latest    59ab366372d5   4 weeks ago   78.1MB

nginx        latest    60c8a892f36f   6 weeks ago   192MB

centos       latest    5d0da3dc9764   3 years ago   231MB

centos       test      5d0da3dc9764   3 years ago   231MB

上传镜像

利用docker push命令可以将本地镜像上传至仓库中,默认上传到docker hub中

[root@localhost ~]# docker push [镜像名]:[标签名]

eg.上传本地镜像centos:test至镜像仓库

[root@localhost ~]# docker push centos:test

启动容器

docker run:用于从指定的镜像启动一个新的容器

docker run [选项] 镜像[:标签|@摘要] [命令] [参数...]

  • -d: 后台运行容器,并返回容器 ID
  • -i: 保持容器的标准输入开放
  • -t: 分配一个伪终端或终端
  • --name: 为容器指定一个名称
  • -p: 发布容器的端口到主机

格式为 主机端口:容器端口

  • -e: 设置环境变量

格式为 变量名=变量值

  • --env-file: 从文件中读取环境变量
  • --rm: 容器停止后自动删除容器
  • -v: 挂载卷

格式为 主机目录:容器目录

  • --network: 连接到指定的网络
  • --restart: 设置容器的重启策略( no、on-failure、always、unless-stopped)

查看容器信息

[root@localhost ~]# docker ps [选项]

CONTAINER ID   IMAGE      COMMAND                   CREATED       STATUS       PORTS                                       NAMES

281ab7d11aa7   registry   "/entrypoint.sh /etc…"   5 hours ago   Up 5 hours   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   pri_registry

  • a: 列出所有容器(包括停止的容器)

[root@localhost ~]# docker ps -a

CONTAINER ID   IMAGE          COMMAND                   CREATED       STATUS                   PORTS                                       NAMES

281ab7d11aa7   registry       "/entrypoint.sh /etc…"   5 hours ago   Up 4 hours               0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   pri_registry

9279742fa225   nginx:latest   "/docker-entrypoint.…"   7 days ago    Exited (0) 5 hours ago                                               hungry_clarke

  • -q: 仅显示容器ID

[root@localhost ~]# docker ps -q

281ab7d11aa7

  • --no-trunc: 不截断输出信息,显示完整的容器ID等信息

[root@localhost ~]# docker ps --no-trunc

CONTAINER ID                                                       IMAGE      COMMAND                                            CREATED       STATUS       PORTS                                       NAMES

281ab7d11aa7cb0b94401b4802b967a2abe2b079a8885ba01b47b1fb1d52013e   registry   "/entrypoint.sh /etc/docker/registry/config.yml"   5 hours ago   Up 5 hours   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   pri_registry

  • -f: 根据条件过滤显示的容器。例如,可以根据名称、状态、镜像等条件进行过滤

[root@localhost ~]# docker ps -f "name=registry"

CONTAINER ID   IMAGE      COMMAND                   CREATED       STATUS       PORTS                                       NAMES

281ab7d11aa7   registry   "/entrypoint.sh /etc…"   5 hours ago   Up 5 hours   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   pri_registry

  • --format: 自定义输出格式

[root@localhost ~]# docker ps --format "{{.ID}}: {{.Names}}"

281ab7d11aa7: pri_registry

  • -n: 显示最近创建的n个容器

[root@localhost ~]# docker ps -n 1

CONTAINER ID   IMAGE      COMMAND                   CREATED       STATUS       PORTS                                       NAMES

281ab7d11aa7   registry   "/entrypoint.sh /etc…"   5 hours ago   Up 5 hours   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   pri_registry

运行模式

Docker容器大体上有三种运行模式

①运行后退出

使用下面命令创建的容器,在运行后会退出。

[root@master ~]# docker run centos echo "hellowrold"

hellowrold

②守护进程模式

如果容器中运行一个守护进程,则容器会一直处于运行状态,具体命令如下所示:

[root@master ~]# docker run -d -p 82:80 nginx

a3339b25e46036ca8b930572d0083250985930781cf4f90b96f804deba0296c3

③交互式

我们也可以在运行容器时,直接与容器进行交互,具体命令如下所示 

[root@master ~]# docker run -it centos /bin/bash

[root@7dfe3a1ca51f /]#

可以使用exit命令退出或者Ctrl+D退出交互界面

http://www.xdnf.cn/news/196921.html

相关文章:

  • WPF之Button控件详解
  • Crusader Kings III 王国风云 3(十字军之王 3) [DLC 解锁] [Steam] [Windows SteamOS macOS]
  • 多元函数微分之传统方法和全微分法
  • Qt笔记-自定义托盘弹出界面
  • 用于表格数据的神经网络分类器_TabPFN
  • Vuex持续保存数据 页面刷新不丢失 vuex-persistedstate
  • WPF 程序监控硬件设备状态变化的实现方案
  • vscode源代码管理Tab-文件右侧标志(M、A 等)的含义
  • await和async
  • (28)VTK C++开发示例 ---添加坐标轴
  • std::print 和 std::println
  • echarts自定义图表--仪表盘
  • 【机器学习】人工智能在电力电子领域的应用
  • 反射与注解实现动态功能扩展案例-插件系统
  • 模型上下文协议(MCP)深度解析:大模型从“思考者“进化为“行动者“
  • 总账主数据——Part 2 科目-4
  • 优先队列和单调队列(双端队列实现的)
  • stm32wb55rg (1) 基于IAR 创建stm32 工程模板
  • 序列密码算法ShanLooog512设计原理详解
  • DeepSearch复现篇:QwQ-32B ToolCall功能初探,以Agentic RAG为例
  • React速通笔记
  • 初识Python
  • 【Keil5-开发指南】
  • Java实现基数排序算法
  • 机器学习day2
  • 深入理解链表:从基础操作到高频面试题解析
  • 省哲学社科基金项目申请书(论证活页)模版框架参考
  • 013几何数学——算法备赛
  • web技术与Nginx网站服务
  • word2Vec与GloVe的区别