笛里谁知壮士心,沙头空照征人骨。这篇文章主要讲述Docker容器实战九:容器生命周期管理相关的知识,希望能为你提供帮助。
本文将讲解关于容器生命周期的管理,包括容器的创建、维护、停止到删除的整个过程。
一. 创建容器创建新的容器可以使用docker [container] run命令,该命令会创建一个容器并启动运行。
如:
$ docker run nginx:1.21
?
docker [container] run命令带有非常多的选项,在实际应用中,我们会根据需要添加对应的项进行启动。
下面我们通过多个示例来进行了解。
- 更改镜像的默认启动命令
$ docker run centos echo Hello World
Hello World
注:如果镜像是用ENTRYPOINT指令启动的话,那么新的命令只会做为参数加到原有命令后面。
- 后台运行容器?
$ docker run-d nginx:1.21
- 命名容器
$ docker run-d --name web nginx:1.21
- 开放网络端口?
如:
$ docker run-d-p 80:80 nginx:1.21
在将端口绑定后,此时在浏览器中通过本机IP直接访问80端口,即可访问nginx页面。
如果本机有多张网卡,而只需要在其中一张网卡上映射端口的话,可以加上网卡IP地址 。
如:
$ docker run-d-p 192.168.10.20:80:80 nginx:1.21
甚至,我们还可以指定对应的网络协议。
$ docker run-d-p 192.168.10.20:80:80/tcp nginx:1.21
- 目录挂载?
如下面的命令会将宿主机的/data/nginx目录挂载到容器中的/data/nginx,这样可将数据保存到本机目录。
$ docker run-d-p 80:80 -v /data/nginx:/data/nginx nginx:1.21
【Docker容器实战九(容器生命周期管理)】以上只是命令其中一部分使用方法,更多内容读者可通过 --help自行查阅。
二. 查看容器1. 查看容器状态
执行docker ps 或docker [container] ls 命令,可以查看当前正在运行中的容器。
$ docker ps
CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
dca4193d0509nginx:1.21"/docker-entrypoint.…"8 minutes agoUp 8 minutes80/tcpcool_mendeleev
注释:CONTAINER ID为容器的短ID号;IMAGE为该容器使用的镜像;COMMAND显示容器执行的命令;CREATED为创建时间;STATUS为容器状态;PORTS显示映射的端口号;NAMES为容器名称。
如果要查看所有容器,则需要加上 -a选项,此时会显示包括已退出的容器在内的完整列表。
$ docker ps -a
CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
b2cdebf18464nginx:1.21"/docker-entrypoint.…"9 minutes agoExited (127) 9 minutes agoboring_leakey
dca4193d0509nginx:1.21"/docker-entrypoint.…"10 minutes agoUp 10 minutes80/tcpcool_mendeleev
2. 查看容器详情
使用docker [container] inspect 命令,可以查看指定容器的详细信息。
$ docker inspect b2cdebf18464
[
"Id": "b2cdebf184644afbf9c2d3cddba1dc632eb7bf990766c4a548585512b04b88ca",
"Created": "2022-04-22T11:58:59.155528401Z",
"Path": "/docker-entrypoint.sh",
"Args": [
......
命令支持使用容器名称或ID号指定,结果将以Json格式返回,包括容器id、创建时间、镜像、配置等信息。
3. 查看容器进程
要查看容器内进程情况,可以使用docker [container] top 命令,输出结果包括PID、启动命令等基本信息。
$ docker container top cool_mendeleev
UIDPIDPPIDCSTIMETTYTIMECMD
root74947475007:58?00:00:00nginx: master process nginx -g daemon off;
10175457494007:58?00:00:00nginx: worker process
10175467494007:58?00:00:00nginx: worker process
4. 查看容器资源情况
docker [container] stats 可用于查看容器的资源使用情况,如CPU、内存、网络等信息。
$docker stats cool_mendeleev
CONTAINER IDNAMECPU %MEM USAGE / LIMITMEM %NET I/OBLOCK I/OPIDS
dca4193d0509cool_mendeleev0.00%20.06MiB / 1.777GiB1.10%9.7MB / 148kB0B / 8.61MB3
三. 进入容器Docker的exec命令用于在运行的容器中执行命令,比较重要的参数有:
-d, --detach:在容器中后台执行命令;
--privileged=true|false:是否给执行命令以高权限,默认值为false;
-i, --interactive=true|false:打开标准输入接受用户输入命令,默认值为false;
-t, --tty=true|false:分配伪终端,默认值为false;
在某些场景下,我们可能需要进入到容器里面进行查看或操作,此时,可以使用docker [container] exec命令来实现。-it选项将会分配一个交互的伪终端,并连接到容器内系统。
$ docker exec -it cool_mendeleev bash
root@dca4193d0509:/#
四. 启动/停止容器Docker支持启动/停止/重启几个操作,对应的命令选项分别为docker [container] + start/stop/restart + < container_name>
$ docker start cool_mendeleev#启动
$ docker stop cool_mendeleev#退出
$ docker restart cool_mendeleev #重启
$ docker pause cool_mendeleev#暂停
在使用stop命令停止容器时,该命令并不是直接关掉容器,而是先向它发送SIGTERM信号,要求程序正常退出。在等待超时后(默认为10秒),会再发送SIGKILL信号来终止容器。
如果希望立即杀死容器进程,则可以使用docker kill < container_name> 命令操作。
五. 删除容器在容器不需要使用时,我们可以用stop 命令将其停止,这样不会占用机器的CPU和内存资源。但在容器停止后,依然会占用宿主机的存储空间,如果确定后续不再使用,我们可以用docker [container] rm + < container_name> 将其删除。
$ docker rm cool_mendeleev
rm命令可同时删除多个容器,删除前请先确认容器已经停上,否则会有报错提示。虽然可以添加 -f 参数强行删除运行中的容器,但不建议如此操作。
docker container prune 命令也是用于清理容器,但它的好处是不需要指定容器。在运行命令后会清理所有已经停止的容器,并在执行完成后汇报回收空间大小。
$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
9477c87afadf810f24a46d356b8eb3995756f8adcc3f1ac4ad6f15812e9302a2
77f5a301bf079419cafd81e7c5be5f69a7ccf6e8158d98747752f03d357f955c
Total reclaimed space: 2.186kB
专注于Devops、SRE、运维开发等技术分享,扫码关注公众号,获取更多精彩内容!
推荐阅读
- MA8601 pin√pin替代汤铭FE1.1s无须更改电路板|完美替代FE1.1s方案
- 4G智能安全帽(记录仪)应用分析
- Install Jumpserver
- 以字节跳动内部 Data Catalog 架构升级为例聊业务系统的性能优化
- #yyds干货盘点# 解决剑指offer(跳台阶)
- 108个Python精选库,建议收藏留用!
- AIoT时代,如何颠覆传统AI硬件产研模式
- 数据库数据恢复存储损坏导致SQL Server数据库崩溃的数据恢复案例
- BI 如何让SaaS产品具有 “安全感”和“敏锐感”(上)