【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

Docker 命令行入门大全:这 18 条,你不得不知

  • 2020-05-16
  • 本文字数:2939 字

    阅读完需:约 10 分钟

Docker命令行入门大全:这18条,你不得不知

Docker 有成千上百万的命令行。因此 Docker 文档内容十分丰富,同时又让刚入门的新手感到不知所措。在本文中,我将重点介绍运行 Docker 的关键命令。

前言

Docker 镜像是由 Dockerfile 和一些必要的依赖项组成的,Docker 容器是动态的 Docker 镜像。要使用 Docker 命令,首先需要知道您是在处理镜像还是容器。一旦你知道你所处理的是镜像还是容器之后,你才可以找到正确的命令。

命令的共性

你需要知道一些关于 Docker 命令的规律:


  • Docker CLI 管理命令以 docker 开头,然后是空格,接着是管理类别,然后是空格最后是命令。例如,docker container stop 这一命令可以停止容器。

  • 引用特定容器或镜像的命令需要该容器或镜像的名称或 ID。


举个例子,docker container run my_app 是用于构建和运行名为 my_app 的容器的命令。在本文示例中,我将使用名称 my_container 来引用通用容器。同理,my_image、my_tag 也是如此。


我将单独提供命令和通用标志。前面有两个破折号的标志是标志的全名。带有一个破折号的标志是完整标志名称的缩写。例如,-p 是–port 标志的缩写。


本文的目标是让您牢牢记住这些命令和标记,并希望您可以在创建容器或构建镜像的时候可以将本指南作为参考。本指南适用于 Linux 和 Docker Engine 版本 18.09.1 以及 API 版本 1.39。


我们先了解容器命令然后再看镜像命令。


容器命令

使用 docker container my_command


  • create — 从镜像中创建一个容器

  • start — 启动一个已有的容器

  • run — 创建一个新的容器并且启动它

  • ls — 列出正在运行的容器

  • inspect — 查看关于容器的信息

  • logs — 打印日志

  • stop — 优雅停止正在运行的容器

  • kill — 立即停止容器中的主要进程

  • rm — 删除已经停止的容器

镜像命令

使用 docker image my_command


  • build — 构建一个镜像

  • push — 将镜像推送到远程镜像仓库中

  • ls — 列出镜像

  • history — 查看中间镜像信息

  • inspect — 查看关于镜像的信息,包括层

  • rm — 删除镜像

容器 &镜像

  • docker version — 列出关于 Docker 客户端以及服务器版本的信息

  • docker login — 登录到 Docker 镜像仓库

  • docker system prune — 删除所有未使用的容器、网络以及无名称的镜像(虚悬镜像)

容器命令详解

启动容器

术语“创建”,“开始”和“运行”在日常生活中都具有相似的语义,但每个都是一个独立的 Docker 命令,用于创建并/或启动容器。让我们先看看创建容器的命令。


docker container create my_repo/my_image:my_tag — 从一个镜像中创建容器


我将在下文中把 my_repo/my_image:my_tag 缩写为 my_image。


你可以通过传递许多标志来 create。


docker container create -a STDIN my_image


-a 是—attach 的缩写,指将容器连接到 STDIN,STDOUT 或 STDERR。


既然我们已经创建了一个容器,那么让我们来启动它。


docker container start my_container — 启动一个已有的容器


请注意,容器可以通过容器的 ID 或容器的名称来引用。


docker container start my_container


既然你知道如何创建和启动一个容器,让我们来看看最常见的 Docker 命令。它将 create 和 start 结合到一个命令中:run。


docker container run my_image — 创建一个新容器并且启动它。这一命令同样也有许多选项。让我们看看其中几个。


docker container run -i -t -p 1000:8000 --rm my_image


-i 是—interactive 的缩写,即使未连接,也要保持 STDIN 打开;-t 是—tty 的缩写,它会分配一个伪终端,将终端与容器的 STDIN 和 STDOUT 连接起来。


你需要指定-i 和-t 通过终端 shell 与容器交互。


-p 是 –port 的缩写。端口是与外部世界的接口。1000:8000 将 Docker 端口 8000 映射到计算机上的端口 1000。如果你有一个 app 输出了一些内容到浏览器,你可以将浏览器导航到 localhost:1000 并且查看它。


–rm 自动删除停止运行的容器。


让我们再来看看 run 的几个例子。


docker container run -it my_image my_command


sh 是你可在运行时指定的命令,它将在容器内部启动 shell 会话,你可以通过终端与其交互。对于 Alpine 镜像,sh 优于 bash,因为 Alpine 镜像不随 bash 一起安装。键入 exit 以结束交互式 shell 会话。


请注意,我们将-i 和-t 结合为-it。


docker container run -d my_image


-d 是—detach 的缩写,指在后台运行容器,允许您在容器运行时将终端用于其他命令。


检查容器状态

如果你有许多运行中的 Docker 容器并且想要找到与哪一个互动,那么你需要列出它们。


docker container ls — 列出运行中的容器,同时提供关于容器有用的信息。


docker container ls -a -s


-a 是–all 的缩写,列出所有容器(不仅仅是正在运行中的容器)


-s 是—size 的缩写,列出每个容器的大小。


docker container inspect my_container — 查看有关容器的信息


docker container logs my_container — 列出容器日志

终止容器

有时你需要停止一个正在运行中的容器,你需要用到以下命令:


docker container stop my_container — 优雅地停止一个或多个正在运行的容器。在容器关闭之前提供默认 10 秒以完成任何进程。


如果你觉得 10 秒太长的话,可以使用以下命令:


docker container kill my_container — 立即停止一个或多个正在运行的容器。这就像拔掉电视上的插头一样。但是在大多数情况下,建议使用 stop 命令。


docker container kill $(docker ps -q) — 终止所有运行中的容器


你需要删除容器可以使用以下命令:


docker container rm my_container — 删除一个或多个容器


docker container rm $(docker ps -a -q) — 删除所有不在运行中的容器


以上就是 Docker 容器的关键命令。接下来,我们来看看关于镜像的命令。

镜像命令详解

以下是 Docker 镜像使用的 7 条命令

构建镜像

docker image build -t my_repo/my_image:my_tag . 在指定路径或 url 的 Dockerfile 中构建一个名为 >my_image 的 Docker 镜像。


-t 是 tag 的缩写,是告诉 docker 用提供的标签来标记镜像,在本例中,是 my_tag


在命令末尾的句号(.)是告诉 Docker 根据当前工作目录中的 Dockerfile 构建镜像。


当你构建好镜像之后,你想要推送它到远程仓库中以便它可以共享并且在有需要的时候被拉取。那么下一个命令十分有用,尽管并非是镜像命令。


docker login — 登录到 Docker 镜像仓库,根据提示键入你的用户名和密码


docker image push my_repo/my_image:my_tag — 推送一个镜像到仓库。


你拥有了这些镜像之后,你可能想要检查他们。


检查镜像

docker image ls — 列出你的镜像以及每个镜像的大小


docker image history my_image — 显示镜像的中间镜像,包括大小及其创建方式


docker image inspect my_image — 显示关于镜像的细节,包括组成镜像的层


有时候你还需要清理你的镜像。

清理镜像

docker image rm my_image — 删除指定镜像。如果镜像被保存在镜像仓库中,那么该镜像在那依旧可用。


docker image rm $(docker images -a -q) — 删除所有镜像。必须小心使用这一命令。请注意已经被推送到远程仓库的镜像依然能够保存,这是镜像仓库的一个优势。


以上就是大部分与 Docker 镜像相关的重要命令。


要在使用 Docker 时查看 CLI 引用,只需在命令行中输入命令 docker 即可。Docker 文档请参阅:


https://docs.docker.com/engine/reference/commandline/cli/


现在你已经掌握了运行 Docker 的关键命令,可以用 Docker 构建东西了!赶紧上手操作吧!


2020-05-16 17:1812906

评论

发布
暂无评论
发现更多内容

WWDC21: Swift 5.5 新特性解读

阿里巴巴大淘宝技术

swift WWDC21

Webpack 简介

编程三昧

JavaScript 大前端 Node webpack 构建工具

字节跳动Java岗6月9号一面经验分享

北游学Java

Java 字节跳动 面试

员工提出离职就消极怠工怎么办?

石云升

员工离职 职场经验 管理经验 6月日更

本来无一物,何处惹尘埃|靠谱点评

无量靠谱

【案例】星环科技助力华夏基金大数据平台建设

星环科技

【FlinkSQL】Flink SQL Query(三)- Join

Alex🐒

flink 翻译 FlinkSQL flink1.13

干货|一款实用iOS云真机的技术架构是如何搭建的?

ios

【得物技术】浅尝UI自动化之Airtest实践

得物技术

自动化 测试 UI 自动化测试 测试落地

5分钟速读之Rust权威指南(二十一)闭包

wzx

rust

C++内存访问错误检测

正向成长

内存泄露 内存溢出 Asan

又到一年“粽子节”,快来测测你包的粽子颜值几分

华为云开发者联盟

端午节 华为云 modelarts 粽子

Boss直聘转发超90W次,Java面试突击手册 火遍全网,却遭封杀

Java架构师迁哥

百分点数据科学实验室:烟草行业市场信息采集数据质量评估体系研究探索

百分点大数据团队

洞察 | 企业数字化转型费用高昂?低代码“骨折”给你!

优秀

低代码

公安合成作战指挥系统解决方案,警务实战指挥系统

《原则》(十一)

Changing Lin

6月日更

周小川:一些加密货币已经不太可能再回到支付领域

CECBC

区块链赋能新能源汽车新业态——车电分离

CECBC

高并发场景创建JedisPool有哪些注意事项?

BUG侦探

并发 Jedis commons-pool

Linux系统日常定位常用指令

正向成长

linux命令

从零开始学习3D可视化之场景层级(2)

ThingJS数字孪生引擎

大前端 可视化 数字孪生

亮相智源大会,字节跳动自研同传系统的技术实现

字节跳动技术团队

并发编程-AQS介绍和原理分析(上)

追风少年

并发编程 AQS

网络攻防学习笔记 Day41

穿过生命散发芬芳

网络攻防 6月日更

百分点科技助力中国环境监测总站“生态环境质量会商平台”上线

百分点大数据团队

教学相长,物联网赋能教育数字化!

IoT云工坊

人工智能 物联网 智慧校园 智慧教室 智慧操场

极狐(GitLab)开课了!实践进阶五步走,助你成为DevOps专家

极狐GitLab

DevOps

股价预测的基本思路(1)

Qien Z.

6月日更 量化投资 股价预测

阿里大佬离职带出内网专属“高并发系统设计”学习笔记

Java架构师迁哥

书山有路,学海无涯|靠谱点评

无量靠谱

Docker命令行入门大全:这18条,你不得不知_文化 & 方法_Rancher_InfoQ精选文章