搜索
首页运维Docker完全掌握Docker学习之容器的使用

本篇文章给大家带来了关于docker中容器的使用,希望对大家有帮助。

完全掌握Docker学习之容器的使用

运行一个容器

如果想要找到一个现有的镜像,可以在公开的 Docker Hub 上搜索,这里可以找到它的介绍和用法,就像在 GitHub 上找一个开源项目一样。

25.png

如果你是第一次使用 Docker Hub,可以先注册一个账号,在最顶上的搜索框里输入 ubuntu ,找到的第一个结果就是官方的 ubuntu 镜像,点开可以看到上图的页面。

这个页面上有镜像的一些基本信息和用法介绍,右边的 docker pull ubuntu 命令用来在本地拉取镜像。在上一篇已经说过,当我们实例化一个容器时,如果 Docker 在本地找不到指定的镜像,它会自动进行拉取,因此,我们可以直接在本地运行:

docker run -i -t ubuntu /bin/bash

这个命令比上次的示例多了一些参数,下面解释一下:

  • -i 可以保证容器中开启 STDIN

  • -t 会为容器分配一个伪 TTY 终端

  • ubuntu 是镜像的名称,相当于上个示例中的 hello-world

  • /bin/bash 是启动后要在容器中执行的命令

其中 -i 和 -t 两个参数可以使容器运行起来之后,我们可以与之交互。当容器创建完成,Docker 就会执行容器中的 /bin/bash 命令,因此,容器运行后我们的终端会附着到容器上:

26.png

此时,你可以在开启一个终端,输入 docker ps 命令,查看已经启动的容器,得到的结果如下:

CONTAINER ID   IMAGE     COMMAND       CREATED       STATUS       PORTS     NAMES
402c5d3468d7   ubuntu    "/bin/bash"   4 hours ago   Up 4 hours             reverent_wu

这里展示了容器的 ID、镜像、最后执行的命令、创建时间、状态、名称。这里的名称 reverent_wu 是 Docker 自动生成的,如果需要在创建容器时指定名称,可以使用 --name 来给容器命名。

深入容器内部

当前的状态下,我们可以在附着到容器的终端执行任何 ubuntu 系统下支持的命令。比如,输入 hostname 命令,发现容器的 hostname 就是它的容器 ID。

接着,可以看一下 /etc/hosts 文件:

root@402c5d3468d7:/# cat /etc/hosts
127.0.0.1        localhost
::1        localhost ip6-localhost ip6-loopback
fe00::0        ip6-localnet
ff00::0        ip6-mcastprefix
ff02::1        ip6-allnodes
ff02::2        ip6-allrouters
172.17.0.2        402c5d3468d7

你也可以自己尝试在容器中查看进程,甚至使用 apt-get 安装软件包。

最后,可以输入 exit 命令,推出容器,返回宿主机的命令提示符。注意,此时再执行 docker ps 时发现,容器的列表中,已经没有刚刚创建的 ubuntu 容器了。

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

当我们退出的时候,容器就停止运行了。不过,容器并没有被删除,可以通过 docker ps -a 命令,查看所有创建的容器,无论容器启动与否:

CONTAINER ID   IMAGE     COMMAND       CREATED       STATUS                     PORTS     NAMES
402c5d3468d7   ubuntu    "/bin/bash"   4 hours ago   Exited (0) 2 minutes ago             reverent_wu

这时,它的状态变成了 Exited (0) 2 minutes ago ,表示它在 2 分钟之前推出,退出的状态码是 0,表示正常退出。

我们可以通过一下的命令重新启动这个容器:

docker start 402c5d3468d7

这个命令中,docker start 后面跟的是容器的 ID,也可以使用容器的名称。执行成功后,再通过 docker ps 命令即可看到容器处于启动状态,通过 docker start 命令让容器重新启动后,会沿用 docker run 命令指定的参数,也就是启动后会运行 /bin/bash 启动一个 shell,但是我们并没有进入到容器的命令行当中。可以通过 docker attach 命令再次进入:

docker attach 402c5d3468d7

此时,就可以继续在容器中执行命令。

如果一个容器不再使用了,可以使用 docker rm 命令将它删除。

docker rm 402c5d3468d7

提供持续的服务

更多的时候,我们使用容器来运行应用程序和服务,并希望它在后台持续提供服务,这时候就需要以分离模式(或者叫守护模式)来运行容器。只需要在 docker run 后面增加一个 -d 参数,就可以让容器放到后台运行。

接下来,我们通过下面的命令再次运行一个容器:

docker run --name detached_mode -d ubuntu /bin/sh -c "while true; do echo Docker YYDS; sleep 1; done"

这一次,我们给这个容器明明叫 detached_mode,通过 -d 让它以分离模式运行,并通过执行一段脚本,每隔 1 秒钟打印一行 Docker YYDS 。

因为它是以分离模式运行的,所以启动后我们并不能在命令行看到打印的内容。但是可以通过 docker ps 命令看到容器在运行。

如果想让他停止运行,可以使用 docker stop 命令。

docker stop detached_mode

同样可以通过 docker start 命令再次启动它,或者,可以通过 docker restart 重启运行中的容器。

容器的运行状态

在 detached_mode 容器运行的时候,可以通过 docker logs 命令获取容器的日志。也可以增加 -f 来持续监控日志,类似于 tail -f 命令。

docker logs -f detached_mode

此时就可以看到一直有 Docker YYDS 被打印。

除了监控容器的日志,也可以使用 docker top 命令,查看容器内的进程。

docker top detached_mode

27.png

使用 docker stats 命令,可以查看容器的CPU、内存、网络I/O、存储I/O的性能和指标。

28.png

另外,docker exec 命令可以在容器内部运行进程。

docker exec detached_mode cat /etc/hosts

以上命令可以让我们直接查看容器中的 hosts 文件的内容,如果需要运行一个后台进程,在指令后面增加 -d 参数就可以了。

容器的详细信息

使用 docker inspect 命令可以查看容器的详细信息,其结果是一个 JSON 结构,包含的信息非常丰富。可以通过 -f 或者 --format 来选定想要查看的部分。

docker inspect --format '{{ .NetworkSettings.IPAddress }}' detached_mode

执行以上的命令,只会在命令行展示容器的 IP 地址。

推荐学习:《docker视频教程

以上是完全掌握Docker学习之容器的使用的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:掘金。如有侵权,请联系admin@php.cn删除
Docker的体系结构:了解容器和图像Docker的体系结构:了解容器和图像May 08, 2025 am 12:17 AM

Docker架构的核心概念是容器和镜像:1.镜像是容器的蓝图,包含应用及其依赖。2.容器是镜像的运行实例,基于镜像创建。3.镜像由多个只读层组成,容器运行时添加可写层。4.通过Linux命名空间和控制组实现资源隔离和管理。

Docker的力量:集装箱化解释了Docker的力量:集装箱化解释了May 07, 2025 am 12:07 AM

Docker通过容器化技术简化了应用程序的构建、部署和运行。1)Docker是一个开源平台,使用容器技术打包应用及其依赖,确保跨环境一致性。2)镜像和容器是Docker的核心,镜像为应用的可执行包,容器为镜像的运行实例。3)Docker的基本用法如运行Nginx服务器,高级用法如使用DockerCompose管理多容器应用。4)常见错误包括镜像下载失败和容器启动失败,调试技巧包括查看日志和检查端口。5)性能优化和最佳实践包括镜像优化、资源管理和安全性提升。

Kubernetes和Docker:部署和管理集装箱应用程序Kubernetes和Docker:部署和管理集装箱应用程序May 06, 2025 am 12:13 AM

使用Kubernetes和Docker部署容器化应用的步骤包括:1.构建Docker镜像,使用Dockerfile定义应用镜像并推送到DockerHub。2.在Kubernetes中创建Deployment和Service来管理和暴露应用。3.使用HorizontalPodAutoscaler实现动态扩展。4.通过kubectl命令调试常见问题。5.优化性能,定义资源限制和请求,并使用Helm管理配置。

Docker:容器化技术简介Docker:容器化技术简介May 05, 2025 am 12:11 AM

Docker是一个开源平台,用于开发、打包和运行应用程序,通过容器化技术解决应用在不同环境中的一致性问题。1.构建镜像:通过Dockerfile定义应用环境和依赖,使用dockerbuild命令构建。2.运行容器:使用dockerrun命令从镜像启动容器。3.管理容器:通过dockerps、dockerstop、dockerrm等命令管理容器生命周期。

Docker和Linux:构建便携式应用程序Docker和Linux:构建便携式应用程序May 03, 2025 am 12:17 AM

如何利用Docker和Linux构建可移植的应用程序?首先,使用Dockerfile容器化应用,然后在Linux环境中管理和部署容器。1)编写Dockerfile,将应用及其依赖打包成镜像。2)使用dockerbuild和dockerrun命令在Linux上构建和运行容器。3)通过DockerCompose管理多容器应用,定义服务依赖关系。4)优化镜像大小和资源配置,增强安全性,提升应用性能和可移植性。

Docker和Kubernetes:集装箱编排的力量Docker和Kubernetes:集装箱编排的力量May 02, 2025 am 12:06 AM

Docker和Kubernetes通过容器编排提升应用部署和管理效率。1.Docker通过Dockerfile构建镜像并运行容器,确保应用一致性。2.Kubernetes通过Pod、Deployment和Service管理容器,实现自动化部署和扩展。

Docker vs. Kubernetes:主要差异和协同作用Docker vs. Kubernetes:主要差异和协同作用May 01, 2025 am 12:09 AM

Docker和Kubernetes是容器化和编排的领军者。Docker专注于容器生命周期管理,适合小型项目;Kubernetes则擅长容器编排,适用于大规模生产环境。两者结合可提升开发和部署效率。

Docker and Linux:完美的合作伙伴关系Docker and Linux:完美的合作伙伴关系Apr 30, 2025 am 12:02 AM

Docker和Linux是完美的搭配,因为它们可以简化应用的开发和部署流程。1)Docker利用Linux的namespaces和cgroups实现容器隔离和资源管理。2)Docker容器比虚拟机更高效,启动速度快,镜像分层结构便于构建和分发。3)在Linux上,Docker的安装和使用非常简单,只需几条命令即可。4)通过DockerCompose,可以方便地管理和部署多容器应用。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。