静下心来的个人专栏
上一篇

管理docker容器——深入了解

广告
选中文字可对指定文章内容进行评论啦,→和←可快速切换按钮,绿色背景文字可以点击查看评论额。
大纲

管理docker容器——深入了解

Docker architecture

上一节对Docker镜像有了一定的深入理解,这一节我们来学习如何管理Docker容器

Docker 容器是另一个重要的概念。容器是镜像的可运行实例。容器是一组独立运行的应用程序。示例可以使用 centos7 + jdk + tomcat + web-app 构建单个容器。它运行的隔离环境称为 docker 运行时。在本页中,将通过示例讨论如何执行 docker run、docker exec、导入容器、导出容器、清理容器。

 

Docker容器的一些命令

Docker run 用于从 IMAGE 创建容器并运行它。

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

docker run -it --rm nginx:latest bash

启动一个容器

基本上有两种启动容器的方法,

(i)使用 docker run 从 docker 映像创建容器或

(ii)使用 docker start 启动终止/停止的容器

Docker 容器是轻量级的,通常的做法是随时删除和重新创建容器。

创建一个容器并运行

基本上, docker run 用于创建容器并从镜像运行。此镜像必须在注册表(docker hub 或自定义注册表)中可用,或者您使用 docker build 命令从 Dockerfile 构建镜像。

让我们看下面的例子:

docker run -it --name centos-container centos:7 bash

上面的例子运行 centos:7 docker 容器并将容器命名为 centos-container。输入 exit 退出容器,这也将终止容器。现在运行 docker container ls --all,您将能够在容器列表中看到 centos:7。

现在,使用以下命令再次启动终止的容器

docker start centos-container

停止容器并再次启动容器

运行 docker stop containerID/containerNAME 以停止正在运行的容器。您可以使用 docker start 再次启动容器。

docker stop centos-container
docker start centos-container

暂停正在运行的容器并取消暂停

使用 docker pause 暂停,使用 docker unpause 恢​​复容器。

docker pause centos-container
docker unpause centos-container

 

连接正在运行的容器

有时您需要进入正在运行的容器来调试、检查或运行命令。 Docker 提供了 2 个相同的命令, docker attach 和 docker exec 。

使用 docker attach

Docker attach 用于将终端连接到正在运行的容器。查看不同的示例以清楚了解何时使用此命令。

docker attach [OPTIONS] CONTAINER

示例(按 ctrl + c 退出容器)

docker run -d --name topdemo ubuntu /usr/bin/top -b
docker attach topdemo

Linux top 命令可以显示系统摘要信息以及当前由 Linux 内核管理的任务列表。以上示例说明了如何将本地终端连接到正在运行的容器。

在下面的示例中,您将看到 bash 进程返回的exit 13,也由 docker attach 命令返回。

使用 docker execute

正如官方文档所说,使用 docker exec 在正在运行的容器中运行命令。命令在运行容器的默认目录中运行。默认目录在 Dockerfile 中指定为 WORKDIR。

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

在下面的示例中,-d 用于打印摘要,以便您可以连接到它。 -i 以交互模式启动,-t 以新的终端会话启动。

docker run -dit centos

从上面复制摘要并将其与可用命令一起使用。

docker exec -it 6f2b11a3af bash

始终建议使用 docker exec 而不是 docker attach

 

导出和导入 docker 容器

使用 docker export 或 docker container export 命令将容器的文件系统导出为 tar 存档。

docker export [OPTIONS] CONTAINER

看下面的例子

docker run --name export-import-container -d -it debian

docker export export-import-container > centos:7.tar

同样,使用 docker import 命令从 tarball 导入内容以创建文件系统镜像。

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

重新导入,上面导出的centos:7.tar,按照下面的代码

cat centsos:7.tar | docker import - test/imported-centos

或者,您可以通过指定 URL 或目录来导入它,例如

docker import http://example.com/exampleimage.tgz example/imagerepo

注意:使用 docker load 导入存储在本地镜像库中的镜像文件。使用 docker import 将容器的快照导入本地镜像库。两者的区别在于容器快照文件会丢弃所有的历史和元数据信息(即只有容器当时的快照状态),而镜像存储文件会保存完整的记录,而且很大。此外,从容器快照文件导入时,可以重新分配标签等元数据信息。

清理容器

通常的做法是清理/删除旧容器并从映像存储库中重建新容器。在您的情况下,您可能每天早上都部署了一个测试版本,因此基本上删除旧容器并重新创建新容器。

使用 docker rm containerId 或 docker container rm containerId 删除容器。您可以使用 containerId、container-name 或 digest 来删除。

docker rm [OPTIONS] CONTAINER [CONTAINER...]

删除特定容器的示例

docker rm 7ea20a106509

使用上面的命令,你只能删除一个终止的容器。使用 -f 强制删除正在运行的容器,但要小心。

要清理所有终止的容器,请使用 docker container prune,查看以下代码

版权声明:著作权归作者所有。

X

欢迎加群学习交流

联系我们