【Docker】Docker的真谛

首先

本文中介绍了在几年时间里尝试使用无数的命令,通过各种经历,写下了一些必要的命令。有些命令确实很重要,而有些可能用得不多。

首先进行准备操

过程检查

这是一个检查容器进程的命令。

docker ps

我认为虽然简单地使用PS也是可以的,但实际上我更倾向于经常使用-A。

docker ps -a

从注册表中获取图像

获取 nginx 镜像的命令。

docker pull nginx

很多时候在pull时都会指定标签进行pull。这在Dockerfile中也是一样的。

展示保存的图像列表

获取保存的图像列表。

docker images

从Docker镜像中启动容器

在端口号为80的情况下启动nginx的命令。

docker run -p 80:80 -d --rm --name nginx_web nginx

有很多选项,但以下是它们的意思。

-p

ポートを指定する

-d

コンテナをバックグラウンドで実行し、コンテナIDを表示

–rm

コンテナ終了時にコンテナを削除する

–name

コンテナ起動時にコンテナに名前をつける

如果要进行音量挂载并启动的话

使用`–volume`参数将主机存储卷与容器关联在一起。

docker run -d --volume "$(pwd)":/usr/share/nginx/html -p 80:80 --rm --name nginx_web nginx

从容器中创建镜像

从正在运行的容器创建镜像。如果事先从容器创建镜像,
即使万一Dockerfile丢失,也可以根据容器信息重新构建Dockerfile。

docker commit nginx_web oreno

执行对容器的命令

在指定的容器上执行命令。在容器后面输入要执行的命令。在以下示例中,执行sh命令。

docker exec -it nginx_web sh

查看元数据

这个命令是用来查看镜像和/或容器的配置是什么样的。

如果查看图像

docker inspect nginx

如果要查看集装箱

docker inspect nginx_web

显示容器日志 (日志)

这是一个用于查看容器中发生的日志的命令。在容器的调试中非常有用。

docker logs nginx_web

停止Docker容器

停止指定的容器命令。

docker stop nginx_web

删除容器

通过指定容器ID来删除容器。

docker rm {コンテナID}

删除图像

通过指定图像ID来删除图像。

docker rmi {イメージID}

这里开始是正式的节目

我会写出实际上是这样的对话。当然,使用docker命令是必要的。

可能是从注册表中获取图像。

当进行pull操作时,需要指定标签或摘要。否则就无法知道拉取了什么。

只要了解有关“latest”标签带来的内容,我认为就没有问题。例如,如果您始终将最新的Amazon ECR图像命名为“latest”并负责对图像进行修改,那么使用“latest”标签也没有问题。

如果使用标签来指定的话

docker pull nginx:latest

如果要指定摘要的话

docker pull nginx@sha256:81be38025439476d1b7303cb575df80e419fd1b3be4a639f3b3e51cf95720c7b

从另一个角度来看,近年来各种不同结构的终端设备被广泛流通。

所有的docker build都在特定的计算基础设施中统一进行。换句话说,如果能在CI/CD流程中实现统一,那就没有问题,但经常出现不统一的情况。

换句话说,由于缺乏统一性,构建并推送的镜像在架构层面可能存在差异。因此,可能导致无法正常运行的情况。

可能的翻译:展示保存的图像列表

如果没有进行任何指定运行,我认为结果会如下所示。

REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE

根据我的观点,IMAGE ID是一个可用于图像删除等操作的ID,因此它不是完全没有信息量,但我认为它并不总是被常常查看的。

而且,我认为很难想象在什么时候需要使用它,即使假设我们确实需要查看它。特别是在删除存储在终端上的图像时,并不需要考虑图像ID。※原因稍后会解释。

在这种情况下该怎么办呢?我们只需显示所需的部分。
以下示例将以CSV格式显示Docker镜像。

docker images --digests --format='{{.ID}},{{.Repository}},{{.Tag}},{{.Digest}},{{.Size}}'

产生的结果

451bf5358040,nginx,<none>,sha256:18deb42e6d79c664b3fc231d60a44c8b017b0a61ecd288fab431b5ca63696481,182MB
81be38025439,nginx,1,sha256:565211f0ec2c97f4118c0c1b6be7f1c7775c0b3d44c2bb72bd32983a5696aa6a,192MB
81be38025439,nginx,1,sha256:86e53c4c16a6a276b204b0fd3a8143d86547c967dc8258b3d47c3a21bb68d3c6,192MB
81be38025439,nginx,latest,sha256:565211f0ec2c97f4118c0c1b6be7f1c7775c0b3d44c2bb72bd32983a5696aa6a,192MB
81be38025439,nginx,latest,sha256:86e53c4c16a6a276b204b0fd3a8143d86547c967dc8258b3d47c3a21bb68d3c6,192MB

尽管保留以上的书写方式作为数据是有益的,但实际上,我认为会使用特定的Docker镜像来创建Dockerfile。

我想在另一篇文章中重新概述有关Dockerfile的编写方式,但是我认为Dockerfile的基础镜像应该使用以标签或SHA256开头的摘要来指定。
要显示Docker镜像的摘要,可以使用以下命令。

docker images --digests --format='{{.Digest}}'

如果要显示标签

docker images --format='{{.Tag}}'

请使用 –filter=reference 参数,只显示相关的图像。

如果只想获取相关图像的名称,请使用以下命令可以实现。

docker images --format='{{.Repository}}' --filter=reference='nginx'

在特定的图像上进行精确提取时非常方便的命令。
通过使用–filter参数,您可以在不意识到图像ID的情况下,对指定的图像进行操作。
这就是为什么您无需关注之前提到的要删除的图像的图像ID的原因。

仅显示带有提示的图像。

如果想要显示未被使用在中间图像中的不必要的图像或者标签为的图像,可以使用以下命令。

docker images -f "dangling=true"

将上述命令与图像删除命令结合使用会很方便。

大概是要删除这个形象。

让我们首先看一下基本命令。
docker rmi命令是用来删除指定镜像ID的特定镜像的命令。

docker rmi {イメージID}

実際のところ、「削除対象のイメージIDを見て削除」って難しいと思うんですよね。
つまりは他のコマンドと組み合わせるのが良いのではないかなと思います。

以下的命令用于删除未使用的不必要的图像,这些图像不在中间映像中,并且其标记为。

docker rmi -f `docker images -f "dangling=true" -q`

ちなみに保存したイメージをすべて削除するときは下記のコマンドは有効です。

docker rmi -f `docker images -q`

提示修剪和远程方法调用(RMI)之间的差异。

下記のコマンドは24時間以内に使っていないイメージを削除します。

docker image prune -a --force --filter "until=24h"

docker rmiも同じイメージを削除するコマンドですが、何が違うのでしょうか。
結論を述べると削除するという文脈で言えば同じコマンドです。

然而,对于Prune来说,我们将重点放在删除不必要的内容上。

可能要删除容器。

まずは基本コマンドを見てみましょう。docker rmコマンドはコンテナIDを指定して特定のコンテナを削除するコマンドです。

docker rm {コンテナID}

实际上,我认为“通过查看要删除的容器ID来进行删除”是一件复杂的事情。

我认为最好的方法是将docker rm命令与docker ps命令结合使用。

以下的例子是删除所有容器的命令。

docker rm -f $(docker ps -a -q)

如果只想删除已停止的容器,请使用以下命令。

docker rm $(docker ps -a -q --filter "status=exited")

我希望对删除后正在运行的容器进行检查,所以对以上命令进行了一点改进,如下所示。

docker rm $(docker ps -a -q --filter "status=exited") && docker ps -a

我认为通过容器名称而不是容器ID可以更容易地进行配对。

清理Docker环境

首先,我们需要确认当前的情况。

docker system df

Images,Containers,Local Volumes,Build Cacheの4つの状態が表示されます。
それぞれイメージの容量、コンテナの容量、コンテナのボリューム容量、ビルド時に利用するキャッシュが表示されます。

如果你想要清理这些中不需要的数据,可以使用以下命令。

docker system prune

总结

这次我们再次回顾了Docker的用法。
仔细考虑一下,如果能够巧妙地使用显示镜像和容器信息的命令,例如docker images和docker ps,
也许还能够体验到其他命令的特色。

如果有希望输出和保存Docker环境的信息的需求,特别是关于docker images和docker ps命令的使用方式和选项,请确保学会使用它们。

今回はビルドコマンドについて細かくみてこなかったため、次はDockerfileの書き方と一緒に見ていきたいと思います。

请提供更多上下文信息。

Docker コマンド

docker pull

docker images

docker inspect

docker run

nginx DockerHub

结束

bannerAds