容器created状态_Docker容器生命周期管理

本文详细介绍了Docker容器的生命周期管理,包括如何使用docker run启动容器,设置各种选项如-d、-i、-P等,以及查看、进入、停止、启动、重启、暂停和恢复容器的方法。此外,还讨论了如何删除容器,强调了运行中的容器不能直接删除,需要先停止。
摘要由CSDN通过智能技术生成

1. Docker容器生命周期管理

1.1 Docker容器状态图

1.2 Docker容器运行

docker run:运行容器

语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

选项:

-d: 后台运行容器,并返回容器ID

-i: 以交互模式运行容器,通常与 -t 同时使用

-P: 随机端口映射,容器内部端口随机映射到主机的端口

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用

--name="CONTAINER_NAME": 为容器指定一个名称

-h "CONTAINER_HOSTNAME": 指定容器的hostname

-e username="ritchie": 设置环境变量

--env-file=[]: 从指定文件读入环境变量

--net="bridge": 指定容器的网络连接类型

--volume , -v: 绑定一个卷

--restart=always|on-failure:3 设置重启策略

#用nginx:latest镜像后台启动一个名称为nginx的容器

[root@docker ~]# docker run -d --name nginx nginx:latest

b21290a97db082d8da61e6815370b6e988888368d536a6617d1eef38fb5bee26

备注:docker run返回的是镜像的长ID

#用nginx:latest镜像后台启动一个nginx容器并且将容器的80端口随机映射到主机

[root@docker ~]# docker -d run -P nginx:latest

1de5ec47cc6b17a7240ad2de26cb97b861a7e720f68a7c24391358e28c1b40bf

#用nginx:latest镜像后台启动一个进程并且容器的80端口映射到主机80端口,同时将主机的/data目录映射到容器

[root@docker ~]# docker -d run -p 80:80 -v /data:/data nginx:latest

8f5fd85307d26b143729a5ec1292366ed5a98c37861c755933fdb5a5b17ee1b4

#用nginx:latest镜像启动一个容器并进入容器内部

[root@docker ~]# docker run -it nginx:latest /bin/bash

root@b0ff1b41b29d:/# exit

备注:容器内部可以使用exit命令退出

1.3 查看容器

docker ps:查看容器状态

语法:docker ps [OPTIONS]

选项:

-a :显示所有的容器,包括未运行的

-f :根据条件过滤显示的内容

--format :指定返回值的模板文件

-l :显示最近创建的容器

-n :列出最近创建的n个容器。

-q :静默模式,只显示容器编号。

-s :显示总的文件大小。

#查看正在运行的容器

[root@docker ~]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

8f5fd85307d2 nginx:latest "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp elastic_ride

1de5ec47cc6b nginx:latest "/docker-entrypoint.…" 4 minutes ago Up 4 minutes 0.0.0.0:32768->80/tcp musing_northcutt

b21290a97db0 nginx:latest "/docker-entrypoint.…" 4 minutes ago Up 4 minutes 80/tcp nginx

CONTAINER ID:容器短ID(长ID的前12位)

IMAGE:镜像名称

COMMAND:启动容器时运行的命令

CREATED:运行时间

STATUS:容器状态

created(已创建)

restarting(重启中)

running(运行中)

removing(迁移中)

paused(暂停)

exited(停止)

dead(死亡)

PORTS:容器的端口信息和使用的连接类型(tcp\udp)

NAMES: 容器名称,没有使用--name选项指定则自动分配

#查看所有的容器

[root@docker ~]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

b0ff1b41b29d nginx:latest "/docker-entrypoint.…" 5 minutes ago Exited (0) 5 minutes ago vibrant_matsumoto

8f5fd85307d2 nginx:latest "/docker-entrypoint.…" 6 minutes ago Up 6 minutes 0.0.0.0:80->80/tcp elastic_ride

1de5ec47cc6b nginx:latest "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 0.0.0.0:32768->80/tcp musing_northcutt

b21290a97db0 nginx:latest "/docker-entrypoint.…" 8 minutes ago Up 8 minutes 80/tcp nginx

备注:所有容器包括退出运行状态的容器

#查看容器ID

[root@docker ~]# docker ps -a -q

b0ff1b41b29d

8f5fd85307d2

1de5ec47cc6b

b21290a97db0

1.4 进入容器内部

docker exec:在运行的容器中执行命令

语法:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

选项:

-d :分离模式: 在后台运行

-i :即使没有附加也保持STDIN打开

-t :分配一个伪终端

#进入nginx容器内部

[root@docker ~]# docker exec -it nginx /bin/bash

root@b21290a97db0:/#

备注:-it用于进入nginx的内部,/bin/bash以bash环境进入容器

#容器执行命令

[root@docker ~]# docker exec nginx date

Thu Sep 24 11:55:41 UTC 2020

[root@docker ~]# docker exec nginx nginx -v

nginx version: nginx/1.19.2

docker attach:连接到正在运行中的容器

语法:docker attach [OPTIONS] CONTAINER

备注:

1)docker attach要attach上去的容器必须正在运行,可以同时连接上同一个container来共享屏幕

2)docker attach要attach上的容器必须是有输出的否则没什么效果

3)CTRL-C退出attach容器会导致退出容器,--sig-proxy=false来确保CTRL-D或CTRL-C不会关闭容器

4)Ctrl+p然后Ctrl+q组合键可以退出attach终端

1.5 停止运行的容器

docker stop:停止一个运行中的容器

docker stop [OPTIONS] CONTAINER [CONTAINER...]

#停止nginx容器

[root@docker ~]# docker stop nginx

nginx

备注:容器在docker host中是一个进程,docker stop命令本质上是向该进程发送一个 SIGTERM信号

docker kill:杀掉一个运行中的容器

语法:docker kill [OPTIONS] CONTAINER [CONTAINER...]

选项:

-s :向容器发送一个信号

#停止一个容器

[root@docker ~]# docker kill elastic_ride

elastic_ride

1.6 启动容器

docker start:启动一个或多个已经被停止的容器

语法:docker start [OPTIONS] CONTAINER [CONTAINER...]

#启动nginx容器

[root@docker ~]# docker start nginx

nginx

备注:docker start可以启动处于停止状态的容器,并且会保留容器的第一次启动时的所有参数

docker restart:重启容器

语法:docker restart [OPTIONS] CONTAINER [CONTAINER...]

#重启nginx容器

[root@docker ~]# docker restart nginx

nginx

备注:docker restart可以重启容器,其作用就是依次执行docker stop和docker start

1.7 暂停容器

docker pause:暂停容器中所有的进程

语法:docker pause [OPTIONS] CONTAINER [CONTAINER...]

#暂停nginx容器

[root@docker ~]# docker pause nginx

nginx

[root@docker ~]# docker ps -a -f name=nginx

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

b21290a97db0 nginx:latest "/docker-entrypoint.…" 35 minutes ago Up 5 minutes (Paused) 80/tcp nginx

备注:处于paused状态的容器不会消耗CPU资源

docker unpause:恢复容器中所有的进程

语法:docker unpause [OPTIONS] CONTAINER [CONTAINER...]

#恢复nginx容器

[root@docker ~]# docker unpause nginx

nginx

[root@docker ~]# docker ps -a -f name=nginx

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

b21290a97db0 nginx:latest "/docker-entrypoint.…" 35 minutes ago Up 5 minutes 80/tcp nginx

1.8 删除容器

docker rm:删除一个或多个容器。

语法:docker rm [OPTIONS] CONTAINER [CONTAINER...]

选项:

-f :通过 SIGKILL 信号强制删除一个运行中的容器

-l :移除容器间的网络连接,而非容器本身

-v :删除与容器关联的卷

#删除nginx容器

[root@docker ~]# docker rm nginx

Error response from daemon: You cannot remove a running container b21290a97db082d8da61e6815370b6e988888368d536a6617d1eef38fb5bee26. Stop the container before attempting removal or force remove

备注:处于运行状态的容器不能被删除

#强制删除nginx容器

[root@docker ~]# docker rm -f nginx

nginx

#匹配删除容器

[root@docker ~]# docker rm -f `docker ps -a -q`

b0ff1b41b29d

8f5fd85307d2

1de5ec47cc6b

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值