本篇文章给大家带来了关于docker中容器的使用,希望对大家有帮助。
运行一个容器
如果想要找到一个现有的镜像,可以在公开的 Docker Hub 上搜索,这里可以找到它的介绍和用法,就像在 GitHub 上找一个开源项目一样。
如果你是第一次使用 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 命令,因此,容器运行后我们的终端会附着到容器上:
此时,你可以在开启一个终端,输入 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
使用 docker stats 命令,可以查看容器的CPU、内存、网络I/O、存储I/O的性能和指标。
另外,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中文网其他相关文章!

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

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

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

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

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

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

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

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


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

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

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

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

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

SublimeText3汉化版
中文版,非常好用