搜索
首页运维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中rm和rmi有什么区别docker中rm和rmi有什么区别Jul 14, 2022 am 11:02 AM

docker中rm和rmi的区别:rm命令用于删除一个或者多个容器,而rmi命令用于删除一个或者多个镜像;rm命令的语法为“docker rm [OPTIONS] CONTAINER [CONTAINER...]”,rmi命令的语法为“docker rmi [OPTIONS] IMAGE [IMAGE...]”。

docker官方镜像有哪些docker官方镜像有哪些May 12, 2022 pm 02:23 PM

docker官方镜像有:1、nginx,一个高性能的HTTP和反向代理服务;2、alpine,一个面向安全应用的轻量级Linux发行版;3、busybox,一个集成了三百多个常用Linux命令和工具的软件;4、ubuntu;5、PHP等等。

docker容器重启后数据会丢吗docker容器重启后数据会丢吗Jun 17, 2022 am 10:41 AM

docker容器重启后数据会丢失的;但是可以利用volume或者“data container”来实现数据持久化,在容器关闭之后可以利用“-v”或者“–volumes-from”重新使用以前的数据,docker也可挂载宿主机磁盘目录,用来永久存储数据。

docker是免费的吗docker是免费的吗Jul 08, 2022 am 11:21 AM

docker对于小型企业、个人、教育和非商业开源项目来说是免费的;2021年8月31日,docker宣布“Docker Desktop”将转变“Docker Personal”,将只免费提供给小型企业、个人、教育和非商业开源项目使用,对于其他用例则需要付费订阅。

docker能安装oracle吗docker能安装oracle吗Jul 08, 2022 pm 04:07 PM

docker能安装oracle。安装方法:1、拉取Oracle官方镜像,可以利用“docker images”查看镜像;2、启动容器后利用“docker exec -it oracle11g bash”进入容器,并且编辑环境变量;3、利用“sqlplus /nolog”进入oracle命令行即可。

docker存储空间不足怎么办docker存储空间不足怎么办Jul 22, 2022 pm 03:44 PM

解决方法:1、停止docker服务后,利用“rsync -avz /var/lib/docker 大磁盘目录/docker/lib/”将docker迁移到大容量磁盘中;2、编辑“/etc/docker/daemon.json”添加指定参数,将docker的目录迁移绑定;3、重载和重启docker服务即可。

什么是docker最早支持的存储引擎什么是docker最早支持的存储引擎May 12, 2022 pm 03:27 PM

AUFS是docker最早支持的存储引擎。AUFS是一种Union File System,是文件级的存储驱动,是Docker早期用的存储驱动,是Docker18.06版本之前,Ubuntu14.04版本前推荐的,支持xfs、ext4文件。

docker容器管理ui有哪些docker容器管理ui有哪些May 11, 2022 pm 03:39 PM

容器管理ui工具有:1、Portainer,是一个轻量级的基于Web的Docker管理GUI;2、Kitematic,是一个GUI工具,可以更快速、更简单的运行容器;3、LazyDocker,基于终端的一个可视化查询工具;4、DockStation,一款桌面应用程序;5、Docker Desktop,能为Docker设置资源限制,比如内存,CPU,磁盘镜像大小;6、Docui。

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脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

mPDF

mPDF

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

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

SecLists

SecLists

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

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用