docker容器运维命令

文章目录

  • [docker ps](#docker ps)
  • [docker exec](#docker exec)
  • [docker inspect](#docker inspect)
  • [docker top](#docker top)
  • [docker attach](#docker attach)
  • [docker wait](#docker wait)
  • [docker export](#docker export)
  • [docker import](#docker import)
  • [docker port](#docker port)
  • [docker cp](#docker cp)
  • [docker diff](#docker diff)
  • [docker rename](#docker rename)
  • [docker stats](#docker stats)
  • [docker update](#docker update)
  • 总结

docker ps

列出容器。

bash 复制代码
docker ps [OPTIONS]

OPTIONS说明:

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

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

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

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

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

--no-trunc :不截断输出。

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

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

docker exec

在运行的容器中执行命令。

bash 复制代码
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS说明:

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

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

-t :分配一个伪终端

bash 复制代码
docker exec mynginx ls
bin
boot
dev
docker-entrypoint.d
docker-entrypoint.sh
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
bash 复制代码
king@king-server:~$ docker exec -it mynginx2 bash
root@7229dc20b6df:/# ls
bin   dev                  docker-entrypoint.sh  home  lib32  libx32  mnt  proc  run   srv  tmp  var
boot  docker-entrypoint.d  etc                   lib   lib64  media   opt  root  sbin  sys  usr
root@7229dc20b6df:/# exit
exit

docker inspect

获取容器/镜像的元数据。

bash 复制代码
docker inspect [OPTIONS] NAME|ID [NAME|ID...]

OPTIONS说明:

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

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

--type :为指定类型返回JSON

docker top

查看容器中运行的进程信息,支持 ps 命令参数。

bash 复制代码
docker top [OPTIONS] CONTAINER [ps OPTIONS]

示例:

bash 复制代码
# 查看所有运行容器的进程信息。
for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done
bash 复制代码
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
165536              1835                1811                0                   05:35               ?                   00:00:00            nginx: master process nginx -g daemon off;
165637              1898                1835                0                   05:35               ?                   00:00:00            nginx: worker process
165637              1899                1835                0                   05:35               ?                   00:00:00            nginx: worker process

docker attach

连接到正在运行中的容器。

bash 复制代码
docker attach [OPTIONS] CONTAINER

docker exec 与 docker attach 的区别:

  • exec 在容器中执行命令,并且可以通过-i -t 创建虚拟终端的方式与容器交互。
  • attach 进入容器某个正在执行的命令终端,不能交互操作。但是如果该容器的命令终端是一个可以 交互的终端,那么也可以交互。

退出attach模式:

  1. 运行容器时指定 -i -t 参数,那么attach容器后可通过Ctrl + P + Ctrl + Q 退出attach状态。
bash 复制代码
docker run -d -it -P nginx
docker attach <containerID>
  1. 仅指定-t参数,可以通过Ctrl + C 退出attach状态。
  2. 不指定-t参数,在attach的时候指定 --sig-proxy=false ,可以通过 Ctrl + C 退出attach状态。--sig-proxy 仅在没有指定-t参数的情况下生效。于--sig-proxy 默认值为true,默认将所有接收信号代理给了容器中的进程,所以Ctrl + C 的时候会将sigint (signal interrupt)终止信号发送到attach进程,从而转发到被attach的进程,导致容器中进程中断,从而退出容器。

docker wait

阻塞运行直到容器停止,然后打印出它的退出代码。

docker export

将文件系统作为一个tar归档文件导出到STDOUT。

bash 复制代码
docker export [OPTIONS] CONTAINER

OPTIONS说明:

-o :将输入内容写到文件。

bash 复制代码
docker export mynginx -o mynginx.tar
# 解压归档文件,查看内容
tar vxf mynginx.tar -c mynginx

当容器出现问题时,可以将文件导出,保留现场。

docker import

将文件系统导入指定容器。

bash 复制代码
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

docker port

列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口。

bash 复制代码
docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]

docker cp

用于容器与主机之间的数据拷贝。

bash 复制代码
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

OPTIONS说明:

-L :保持源目标中的链接

示例,将容器的文件拷贝到主机:

docker diff

检查容器里文件结构的更改。docker diff命令会列出 3 种容器内文件状态变化(A - Add, D - Delete, C - Change )的列表清单。

bash 复制代码
docker diff [OPTIONS] CONTAINER

docker rename

重命名容器名。

bash 复制代码
docker rename CONTAINER NEW_NAME

docker stats

容器监控。

docker update

用来修改docker run 指定的运行参数。

总结

  1. 容器遵循最小原则,会尽可能不打包 非必须的程序进去。
  2. docker attach如果没有指定-i -t或者--sig-proxy=false,那么使用CTL+C的方式会把容器也退出。
相关推荐
chenbin52019 分钟前
Jenkins 自动构建Job
运维·jenkins
java 凯21 分钟前
Jenkins插件管理切换国内源地址
运维·jenkins
AI服务老曹24 分钟前
运用先进的智能算法和优化模型,进行科学合理调度的智慧园区开源了
运维·人工智能·安全·开源·音视频
sszdzq2 小时前
Docker
运维·docker·容器
book01212 小时前
MySql数据库运维学习笔记
运维·数据库·mysql
dmy2 小时前
docker 快速构建开发环境
后端·docker·容器
bugtraq20213 小时前
XiaoMi Mi5(gemini) 刷入Ubuntu Touch 16.04——安卓手机刷入Linux
linux·运维·ubuntu
xmweisi3 小时前
【华为】报文统计的技术NetStream
运维·服务器·网络·华为认证
VVVVWeiYee3 小时前
BGP配置华为——路径优选验证
运维·网络·华为·信息与通信
陆鳐LuLu3 小时前
日志管理利器:基于 ELK 的日志收集、存储与可视化实战
运维·elk·jenkins