在Docker中的容器

首先

这篇文章是关于Docker容器的总结。可能会有些信息已经过时,如果您能谅解就好了。

以下是我整理关于Docker相关内容的文章。如果您感兴趣的话,请查看一下。

    • Dockerにおけるコンテナ

 

    • Dockerにおけるイメージとは

 

    • Dockerにおけるネットワーク

 

    Dockerにおけるデータ管理

Docker容器是什么?

Docker容器封装了执行所需的所有依赖关系(包括库、执行环境和配置文件等),为执行提供环境。

我将解释与Docker容器相关的命令。

我希望确认一下最常用于创建和启动容器的docker run命令。

使用docker run命令创建并启动容器。

$ docker run hello-world
スクリーンショット (246).png

使用Docker命令的流程

从Docker客户端向Docker守护进程查找hello-world的镜像文件。如果有该镜像文件,则不会去Docker Hub查找。
Docker守护进程向Docker Hub查找镜像文件。
如果找到镜像,则将其下载并保存在电脑上。
Docker守护进程根据已保存的镜像启动容器,并执行容器中定义的命令。

实际上,docker run是一个将获取镜像的命令docker pull、创建容器的命令docker create以及启动容器的命令docker start合并在一起的命令。

スクリーンショット (247).png

用docker run命令传递参数并执行

在docker run dokcer/whalesay之后,通过添加cowsay Hello!的命令来执行容器启动后的操作。

$ docker run docker/whalesay cowsay Hello!

使用docker run命令并传递选项来执行

在中国,只需要一种选择:使用以下命令以给定的选项在容器名称为<コンテナ名>的情况下以守护进程模式运行一个名为<イメージ名>的镜像,并将主机端口<ホスト側のポート番号>映射到容器端口<コンテナ側のポート番号>。

$ docker run --name some-nginx -d -p 8080:80 some-content-nginx

“使用 –rm 选项可以在停止容器时,同时删除该容器本身。”

$ docker run --name tmp-nginx --rm -d nginx

使用Docker运行容器的命令是:docker run –name <容器名称> -d -v <主机目录>:<容器挂载点>:<选项>。其中,-v选项用于设置绑定挂载,将Docker主机的文件或目录与容器关联起来。

在使用-v选项指定目录时,需要使用绝对路径书写。

$ docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx

此外,当与Docker容器进行交互对话时,可使用-it选项。

$ docker create --name status-test -it alpine /bin/sh

容器的生命周期

以下是容器状态转换图。您可以通过docker ps -a或docker inspect [容器名称或ID]命令来确认容器的状态。

スクリーンショット (250).png

我用项目符号总结了执行哪些Docker命令会导致状态如何转换的问题。

容器的生命周期

Created状态是使用docker create命令创建容器时的状态。

Running状态是使用docker start命令启动容器时的状态。

docker run命令执行图像获取、容器创建和容器启动,所以状态从Created过渡到Running只需要一个命令。

Paused状态是通过docker pause命令从Running过渡到Paused状态。然后,使用docker unpause命令从Paused过渡回Running状态。

Exited状态是使用docker stop命令停止容器时的状态。

Restart状态是使用docker restart命令重新启动容器时的瞬间过渡状态。但重启后并不直接过渡到Running,而是先过渡到Exited状态,然后回到Running状态。

Dead状态可能在容器内发生错误时过渡到。

Removing状态是使用docker rm命令删除容器时的状态。

将连接到容器中

您可以使用Docker exec命令连接到容器中。

$ docker run -d --name connect-test ubuntu tail -f /dev/null

$ docker exec -it connect-test /bin/bash
    • Ubuntuイメージを基にしたconnect-testという名前のコンテナがバックグラウンドで作成・実行されます。

 

    • tail -f /dev/nullは、無限に継続するプロセスであり、コンテナが実行中のままになります。

 

    外部からDockerコンテナ内に対話的なセッションを開き、コンテナ内部でBashシェルを利用できます。

结束

谢谢您一直看到文章的最后。

如果有任何错误,请您指出,我将不胜感激。

请您查阅

 

广告
将在 10 秒后关闭
bannerAds