在CentOS 7上验证Docker命令

首先

为了复习Docker命令,我整理了一篇文章。

前提

我使用VirtualBox进行了CentOS7的Guest OS验证。

执行的命令

我查阅了以下网址作为参考:
https://matsuand.github.io/docs.docker.jp.onthefly/engine/reference/commandline/docker/

Docker镜像

最近生成的图像列表
以下是一个执行示例。

[root@localhost overlay2]# docker images
REPOSITORY           TAG       IMAGE ID       CREATED        SIZE
debian               latest    291bf168077c   2 weeks ago    124MB
jasonrivers/nagios   latest    0c33dd4f2c3e   3 months ago   794MB

我查找了Docker镜像的存储位置。
以下的Qiita文章对我很有参考价值。
https://qiita.com/tifa2chan/items/b9607d80fb58476e4ef5

以下是执行示例:
下面记载了容器(debian)和容器(jasonrivers/nagios)的图像信息。

[root@localhost overlay2]# cat /var/lib/docker/image/overlay2/repositories.json | python -mjson.tool
{
    "Repositories": {
        "debian": {
            "debian:latest": "sha256:291bf168077c554abde831d52178c76aa8d7dad0e55a2e37a68c2b55a5d92e64",
            "debian@sha256:a288aa7ad0e4d443e86843972c25a02f99e9ad6ee589dd764895b2c3f5a8340b": "sha256:291bf168077c554abde831d52178c76aa8d7dad0e55a2e37a68c2b55a5d92e64"
        },
        "jasonrivers/nagios": {
            "jasonrivers/nagios:latest": "sha256:0c33dd4f2c3e98dceada3974cffb2333c4fe4c5a6d53742f7aa1078e3451a7eb",
            "jasonrivers/nagios@sha256:d7696a34ac0508268ddd104a9ddc102c198c9ce567531ad6e876e9572c0a64fb": "sha256:0c33dd4f2c3e98dceada3974cffb2333c4fe4c5a6d53742f7aa1078e3451a7eb"
        }
    }
}

列出运行中的Docker容器。

我参考了以下的网址:
https://matsuand.github.io/docs.docker.jp.onthefly/engine/reference/commandline/ps/

显示正在运行的容器。以下是一个示例。由于没有运行中的容器,所以没有显示。

[root@localhost overlay2]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost overlay2]#

在展示所有容器时,包括停止中的容器。

由于容器名称(debian)已变为Exited 5天前,因此容器在5天前被停止。

[root@localhost overlay2]# docker ps -a
CONTAINER ID   IMAGE                       COMMAND                  CREATED        STATUS                    PORTS                            NAMES
c10cd2800f5a   debian                      "bash"                   5 days ago     Exited (0) 5 days ago                                      debian
fb470a7a23a7   jasonrivers/nagios:latest   "/usr/local/bin/star…"   2 months ago   Exited (255) 4 days ago   5667/tcp, 0.0.0.0:8888->80/tcp   nagios4

启动docker

我参考了以下的URL:
https://matsuand.github.io/docs.docker.jp.onthefly/engine/reference/commandline/start/

如果容器的名称像jasonrivers/nagios:latest这样,如果直接运行会出错。

docker start <コンテナ名>

[root@localhost overlay2]# docker start jasonrivers/nagios:latest
Error response from daemon: No such container: jasonrivers/nagios:latest
Error: failed to start containers: jasonrivers/nagios:latest

在上述情况下,通过指定容器ID来启动容器。

[root@localhost overlay2]# docker start fb470a7a23a7
fb470a7a23a7
[root@localhost overlay2]#

以下是指定容器名称并启动容器的示例。

[root@localhost overlay2]# docker start debian
debian
[root@localhost overlay2]#

已经启动了两台容器。

[root@localhost overlay2]# docker ps
CONTAINER ID   IMAGE                       COMMAND                  CREATED        STATUS          PORTS                            NAMES
c10cd2800f5a   debian                      "bash"                   5 days ago     Up 42 seconds                                    debian
fb470a7a23a7   jasonrivers/nagios:latest   "/usr/local/bin/star…"   2 months ago   Up 6 seconds    5667/tcp, 0.0.0.0:8888->80/tcp   nagios4
[root@localhost overlay2]#

使用Docker附加

使用docker attach命令,可以将标准输入、标准输出和标准错误输出(或其组合)附加到正在运行的容器中。看起来就像进入了容器内的shell中一样。

以下是一个参考网站:https://matsuand.github.io/docs.docker.jp.onthefly/engine/reference/commandline/attach/

Docker attach和exec的区别对我很有帮助。据说它们都是用于连接到正在运行的容器的命令。

已连接到容器”debian”。

[root@localhost overlay2]# docker attach  c10cd2800f5a
root@c10cd2800f5a:/#
root@c10cd2800f5a:/# cat /etc/debian_version
11.5
root@c10cd2800f5a:/#

注意事项:
在连接容器时执行”exit”命令将会导致容器停止。
这是在生产环境中需要注意的操作!!
参考链接:https://www.tohoho-web.com/docker/docker_exec.html

コンテナ「debian」が一つ実行中
[root@localhost overlay2]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED      STATUS          PORTS     NAMES
c10cd2800f5a   debian    "bash"    5 days ago   Up 23 seconds             debian

コンテナ「debian」へ接続する
[root@localhost overlay2]# docker attach  c10cd2800f5a
root@c10cd2800f5a:/#
root@c10cd2800f5a:/# cat /etc/debian_version
11.5
root@c10cd2800f5a:/# exit
exit

コンテナ「debian」が停止したため、何も表示されていません
[root@localhost overlay2]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost overlay2]#

在容器内执行Docker命令

docker attach命令是用于连接到指定容器的命令,与docker exec相似。根据以下验证结果,即使在连接到容器后执行exit命令,容器本身也不会停止,因此是安全的。

就我个人而言,我建议使用 “docker exec”。

docker exec -it <コンテナID指定> /bin/bash

コンテナ「debian」が一つ実行中
[root@localhost overlay2]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED      STATUS         PORTS     NAMES
c10cd2800f5a   debian    "bash"    5 days ago   Up 2 minutes             debian

コンテナ「debian」へ接続する
[root@localhost overlay2]# docker exec -it c10cd2800f5a /bin/bash
root@c10cd2800f5a:/#
root@c10cd2800f5a:/# exit
exit

コンテナ「debian」が一つ実行中
[root@localhost overlay2]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED      STATUS         PORTS     NAMES
c10cd2800f5a   debian    "bash"    5 days ago   Up 2 minutes             debian

执行docker运行

使用docker run命令可以创建一个处于运行状态的容器。以下网站提供了参考信息:
https://www.tohoho-web.com/docker/docker_run.html

使用nginx映像时,我们指定容器内的80端口,并使用8080端口来访问本地主机,以启动并创建容器。

[root@localhost overlay2]# docker run --name nginx -d -p 8080:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
3f4ca61aafcd: Pull complete
50c68654b16f: Pull complete
3ed295c083ec: Pull complete
40b838968eea: Pull complete
88d3ab68332d: Pull complete
5f63362a3fa3: Pull complete
Digest: sha256:0047b729188a15da49380d9506d65959cce6d40291ccfb4e039f5dc7efd33286
Status: Downloaded newer image for nginx:latest
e820c2036ef0a12e62fe1c5823af802722066f9d6e81d427ad92a1cbed80306e
[root@localhost overlay2]#


#作成したnginxのコンテナが起動しました
[root@localhost overlay2]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                   NAMES
e820c2036ef0   nginx     "/docker-entrypoint.…"   7 seconds ago   Up 6 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp   nginx
c10cd2800f5a   debian    "bash"                   5 days ago      Up 8 minutes                                           debian
image.png

总结

最好事先验证并了解容器命令的操作。连接到容器的命令中若按退出(exit),有些容器会停止,因此需要注意。

我在本文中列出了必需的容器命令。

bannerAds