容器生命周期管理

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) image.png

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