容器生命周期管理
start/stop/restart
docker start:启动一个或多个已经被停止的容器
docker stop:停止一个运行中的容器
docker restart:重启容器
docker start/stop/restart [OPTIONS] CONTAINER [CONTAINER…]
kill
docker kill:杀掉一个运行中的容器。
docker kill [OPTIONS] CONTAINER [CONTAINER…]
- -s :向容器发送一个信号
docker kill -s KILL mynginx
RM
docker rm :删除一个或多个容器。
docker rm [OPTIONS] CONTAINER [CONTAINER…]
- -f :通过 SIGKILL 信号强制删除一个运行中的容器。
- -l :移除容器间的网络连接,而非容器本身。
- -v :删除与容器关联的卷。
强制删除容器 db01、db02:
docker rm -f db01 db02
移除容器 nginx01 对容器 db01 的连接,连接名 db:
docker rm -l db
删除容器 nginx01, 并删除容器挂载的数据卷:
docker rm -v nginx01
删除所有已经停止的容器:
docker rm $(docker ps -a -q)
pause/unpause
docker pause :暂停容器中所有的进程。
docker unpause :恢复容器中所有的进程。
docker pause/unpause CONTAINER [CONTAINER…]
暂停数据库容器db01提供服务。
docker pause db01
恢复数据库容器 db01 提供服务。
docker unpause db01
create
docker create :创建一个新的容器但不启动它
用法同 docker run
docker create [OPTIONS] IMAGE [COMMAND] [ARG…]
使用docker镜像nginx:latest创建一个容器,并将容器命名为myrunoob
docker create —name myrunoob nginx:latest
exec
docker exec :在运行的容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
OPTIONS说明:
- -d :分离模式: 在后台运行
- -i :即使没有附加也保持STDIN 打开
- -t :分配一个伪终端
使用 docker ps -a 命令查看已经在运行的容器,然后使用容器 ID 进入容器。
docker ps -a
9df70f9a0714 openjdk “/usercode/script.sh…” docker exec -it 9df70f9a0714 /bin/bash
容器操作
ps
docker ps : 列出容器
docker ps [OPTIONS]
- -a :显示所有的容器,包括未运行的。
- -f :根据条件过滤显示的内容。
- —format :指定返回值的模板文件。
- -l :显示最近创建的容器。
- -n :列出最近创建的n个容器。
- —no-trunc :不截断输出。
- -q :静默模式,只显示容器编号。
- -s :显示总的文件大小。
docker ps 输出详情介绍: CONTAINER ID: 容器 ID。 IMAGE: 使用的镜像。 COMMAND: 启动容器时运行的命令。 CREATED: 容器的创建时间。 STATUS: 容器状态。 状态有7种:
- created(已创建)
- restarting(重启中)
- running(运行中)
- removing(迁移中)
- paused(暂停)
- exited(停止)
- dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。 NAMES: 自动分配的容器名称。
inspect
docker inspect : 获取容器/镜像的元数据。
docker inspect [OPTIONS] NAME|ID [NAME|ID…] OPTIONS说明:
- -f :指定返回值的模板文件。
- -s :显示总的文件大小。
- —type :为指定类型返回JSON
——format=’’ 使用了Go模板常用语法 docker常用命令 查询全部dockerIP docker inspect —format=’{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ $(docker ps -q) 查询全部MAC地址 docker inspect —format=’{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}’ $(docker ps -a -q) 查询全部容器名字 docker inspect —format=’{{.Name}}’ $(docker ps -aq) 获取容器Hostname和IP docker inspect —format ‘Hostname:{{ .Config.Hostname }} Name:{{.Name}} IP:{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ $(docker ps -q)
top
docker top :查看容器中运行的进程信息,支持 ps 命令参数。
docker top [OPTIONS] CONTAINER [ps OPTIONS] 容器运行时不一定有/bin/bash 或者 top命令,可以使用docker top来实现查看container中正在运行的进程。
查看所有运行容器的进程信息。 for i in
docker ps |grep Up|awk '{print $1}'
;do echo \ &&docker top $i; done
attach
docker attach :连接到正在运行中的容器。
docker attach [OPTIONS] CONTAINER 使用时需加上 —sig-proxy=false 来确保CTRL-D或CTRL-C不会关闭容器。
docker attach —sig-proxy=false imageId
events
docker events : 从服务器获取实时事件(查看命令)
语法
docker events [OPTIONS] OPTIONS说明:
- -f :根据条件过滤事件;
- —since :从指定的时间戳后显示所有事件;
- —until :流水时间显示到指定的时间为止;
docker events —since=”2020-07-01” imageId