在Docker中的容器
首先
这篇文章是关于Docker容器的总结。可能会有些信息已经过时,如果您能谅解就好了。
以下是我整理关于Docker相关内容的文章。如果您感兴趣的话,请查看一下。
-
- Dockerにおけるコンテナ
-
- Dockerにおけるイメージとは
-
- Dockerにおけるネットワーク
- Dockerにおけるデータ管理
Docker容器是什么?
我将解释与Docker容器相关的命令。
我希望确认一下最常用于创建和启动容器的docker run命令。
使用docker run命令创建并启动容器。
$ docker run hello-world
使用Docker命令的流程
从Docker客户端向Docker守护进程查找hello-world的镜像文件。如果有该镜像文件,则不会去Docker Hub查找。
Docker守护进程向Docker Hub查找镜像文件。
如果找到镜像,则将其下载并保存在电脑上。
Docker守护进程根据已保存的镜像启动容器,并执行容器中定义的命令。
实际上,docker run是一个将获取镜像的命令docker pull、创建容器的命令docker create以及启动容器的命令docker start合并在一起的命令。
用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]命令来确认容器的状态。
我用项目符号总结了执行哪些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シェルを利用できます。
结束
谢谢您一直看到文章的最后。
如果有任何错误,请您指出,我将不胜感激。
请您查阅