Docker入门系列之五:15个 Docker 命令
在这篇文章中,我们将学习15个Dockers CLI命令。如果你还不了解Docker,请查看这个系列的其他部分进行学习,Docker概念,生态系统,Dockerfile,Docker镜像。
Docker 命令约有十亿个(给或接受十亿个)。Docker 文档范围很广泛,但当您刚入门时,文档会非常庞大让你不知所措。在这篇文章中,我将重点介绍运行Docker的关键命令。
图:水果主题
之前的文章我们都把文章的主题隐喻成食物,这里让我们使用水果主题。蔬菜在关于减肥的文章中提供了营养。现在,美味的水果将为我们提供营养,因为我们学习的是关键 Docker 命令。
概述
回想一下,Docker 镜像是由 Dockerfile +任何必要的依赖项组成的,还要记得 Docker 容器是一个 Docker 镜像。若要使用 Docker 命令,首先需要知道您处理的是镜像还是容器。
- Docker 镜像要么存在,要么不存在;
- Docker 容器要么存在,要么不存在;
- 存在的 Docker 容器要么正在运行,要么未运行。
当您知道正在处理什么,就可以找到适合该工作的命令。
共同点
以下是关于Docker命令需要了解的一些信息:
- Docker CLI 管理命令从Docker开始,然后是空间,然后是管理类别,然后是空间,然后是命令。例如,
dockerdocker 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版。
首先,我们将查看容器的命令,然后再查看镜像的命令。下一篇文章将介绍卷。下面是15个命令的列表 – 加上3个附加命令!
容器
使用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
—删除所有未使用的容器、未使用的网络和悬空镜像
容器
容器开始
在日常生活中,术语create、start和run都有相似的语义。但每个命令都是一个单独的 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
,然后通过终端外壳与容器进行交互。
-p
是--port
的缩写。端口是与外部世界的接口。1000:8000
将Docker端口8000映射到计算机上的端口1000。如果你有一个应用程序可以将某些内容输出到浏览器中,那么你可以将浏览器导航到本地主机localhost:1000
并看到它。
--rm
当容器停止运行时,自动删除该容器。
让我们看一些更多的例子。run
docker container run -it my_image my_command
sh
是可以在运行时指定的命令。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 秒的默认值,以完成任何进程。
或者,如果您不耐烦:
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 run my_container
结合。然后,你的应用将运行。
然后,使用docker stop my_container
停止容器;最终使用docker rm my_container
删除容器。
现在,让我们来看看制造称为镜像的模具的神奇容器。
镜像
下面是用于处理 Docker 镜像的七个命令。
开发镜像
docker image build -t my_repo/my_image:my_tag .
-从位于指定路径或URL的Dockerfile构建名为*my_image*的Docker镜像。
-t
是标记的简短。告诉 Docker 使用提供的标记来标记镜像。在*my_tag*这种情况下。
.
命令末尾的 (期间) 告诉 Docker 在当前工作目录中根据 Dockerfile 生成镜像。
图:构建它
构建镜像后,您需要把它推到远程注册表,以便使它被共享并根据需要被拉取。假设您要使用Docker Hub,请转到浏览器中并创建一个帐户。它是免费的。
下一个命令不是镜像命令,但在这里查看很有用,所以我要提一下。
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 version
-列出有关 Docker 客户端和服务器版本的信息。
docker login
-登录 Docker 注册表。提示时输入用户名和密码。
docker system prune
出现在下一篇文章中。Twitter 和 Reddit 上的读者认为,加入这个列表是件好事。
docker system prune
-删除所有未使用的容器、未使用的网络和悬空镜像。
docker system prune -a --volumes
-a
是--all
的缩写。删除未使用的镜像,而不仅仅是悬空的镜像。
--volumes
删除未使用的卷。我们将在下一篇文章中讨论更多有关卷的文章。
管理命令
在 CLI 1.13 Docker 中引入了按逻辑分组并一致命名的管理命令名称。旧命令仍然有效,但新命令使使用 Docker 更容易。本文的原始版本列出了旧名称。我更新了文章,根据读者建议使用管理命令名称。请注意,此更改仅引入两个命令名称更改 - 在大多数情况下,它只是意味向命令添加container
或image
。这里是命令的映射。
包
如果您刚刚开始使用 Docker,以下是三个最重要的命令:
docker container run my_image
-创建新容器并启动它。你可能想要一些标志在这里。
docker image build -t my_repo/my_image:my_tag .
-生成镜像。
docker image push my_repo/my_image:my_tag
-将镜像推送到远程注册表。
下面是基本 Docker 命令的较大列表:
容器
使用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 时查看 CLI 引用,只需在命令行中输入命令。
现在,您就可以使用 Docker 构建东西了!
结尾
如果您错过了本系列的早期文章,请查看它们。第一个是:《Docker-第1部分:什么是Docker?》
希望这些文章对您有帮助。
原文作者:Jeff Hale
原文地址:https://towardsdatascience.com/learn-enough-docker-to-be-useful-1c40ea269fa8
翻译:猪齿鱼技术团队
本文由猪齿鱼技术团队原创,转载请注明出处:猪齿鱼官网
Docker入门系列之五:15个 Docker 命令的更多相关文章
- Docker入门系列之二:Docker术语
原文作者:Jeff Hale 原文地址:https://towardsdatascience.com/learn-enough-docker-to-be-useful-1c40ea269fa8 翻译: ...
- Docker入门系列之一:在一个Docker容器里运行指定的web应用
实现题目描述的这个需求有很多种办法,作为入门,让我们从最简单的办法开始. 首先使用命令docker ps确保当前没有正在运行的Docker实例. 运行命令docker run -it nginx: 然 ...
- Docker入门系列之三:如何将dockerfile制作好的镜像发布到Docker hub上
这个系列的前两篇文章,我们已经把我们的应用成功地在Docker里通过nginx运行了起来,并且用dockerfile里制作好了一个镜像. Docker入门系列之一:在一个Docker容器里运行指定的w ...
- Docker入门系列(一):目标和安排
Docker入门系列(一) 这个系列的教程来源于docker的官方文档,此文档的目的在于一步一步学习docker的使用方法. 这一系列的教程有如下几篇文档: docker安装启动 构建第一个docke ...
- Docker入门教程(八)Docker Remote API
Docker入门教程(八)Docker Remote API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第八篇,重点介绍了Docker Remote ...
- Docker入门教程(七)Docker API
Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和 ...
- Docker入门教程(五)Docker安全
Docker入门教程(五)Docker安全 [编者的话]DockOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以通 ...
- Docker入门教程(四)Docker Registry
Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...
- Docker入门系列3:使用
入门 首先强烈建议玩一遍官方的入门教程,Interactive commandline tutorial,下面是答案: 查看版本:docker version 搜索Image:docker searc ...
随机推荐
- Java反射的浅显理解
一.回顾反射相关的知识 1.在xml文件中使用反射的好处: 1)代码更加灵活,后期维护只需要修改配置文件即可 · 初学者一般习惯于在代码本身上直接修改,后期也可以修改配置文件达到相同的目的 · 修改配 ...
- Java特性和优势
Java特性和优势 简单性 面向对象性 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性
- 简单三分钟,本地搭建 k8s
使用 minikube 在本地搭建 k8s 已经比以前要简单很多了.本文,我们通过简短的三分钟来重现一下在本地搭建 k8s 实验环境的步骤. Newbe.Claptrap 是一个用于轻松应对并发问题的 ...
- Mybatis-plus<一> Springboot框架使用MybatisPlus代码自动生成器
Mybatis-plus<一> Springboot框架使用MybatisPlus代码自动生成器 Mybatis-plus官网: https://mp.baomidou.com/ Demo ...
- 手写 lodash/get、lodash/set 方法
动机:平时写js代码时经常遇到要使用 lodash 中 _.get 和 _.set 的情况,每次使用都要引用 lodash,总感觉很烦,能不能自己实现一个简单的方法来实现一样的功能呢? get 方法实 ...
- 【流程】Flowable流程定义总结
背景 近几年,互联网企业从消费互联网向产业互联网转型.在消费互联网时期,企业面对的时C端消费者,而产业互联网面对的是B端用户. 产业互联网涉及方方面面,企业信息化的建设就是B端用户的业务之一,在企业就 ...
- NOIP模拟测试17&18
NOIP模拟测试17&18 17-T1 给定一个序列,选取其中一个闭区间,使得其中每个元素可以在重新排列后成为一个等比数列的子序列,问区间最长是? 特判比值为1的情况,预处理比值2~1000的 ...
- Python - pip 批量更新
pip 常用命令 https://www.cnblogs.com/poloyy/p/15170968.html pip list 结合 Linux 命令 pip list 命令可以查询已安装的库,结合 ...
- C# List集合类常用操作:三、查找
List集合查询数据 List<Employees> employees = new List<Employees>(); employees.Add(new Employee ...
- K8s工作流程详解
在学习k8s工作流程之前,我们得再次认识一下上篇k8s架构与组件详解中提到的kube-controller-manager一个k8s中许多控制器的进程的集合. 比如Deployment 控制器(Dep ...