容器时代

docker container 容器管理命令

Linux · 11月19日 · 2019年

文章目录

管理容器命令

命令 介绍
attach 将本地标准输入、输出和错误流附加到正在运行的容器中
commit 根据容器的更改创建新映像
cp 在容器和本地文件系统之间复制文件/文件夹
create 创建一个新容器
diff 检查容器文件系统中文件或目录的更改
exec 在正在运行的容器中运行命令
export 将容器的文件系统导出为tar存档
inspect 在一个或多个容器上显示详细信息
kill 杀死一个或多个正在运行的容
logs 获取容器的日志
ls 列表容器
pause 暂停一个或多个容器中的所有进程
port 出端口映射或容器的特定映射
prune 移除所有已停止的货柜
rename 重命名一个容器
restart 重启一个容器
rm 删除一个容器
run 在新容器中运行命令
start 启动容器
stats 显示容器资源使用统计信息的实时流
stop 停止一个或多个正在运行的容器
top 显示容器的运行进程
unpause 在一个或多个容器中暂停所有进程
update 更新一个或多个容器的配置
wait 阻塞,直到一个或多个容器停止,然后打印它们的退出代码

 

实战

ps 子命令参数

短参数 长参数 备注
-a –all 显示所有容器(默认显示正在运行)
-f –filter filter 根据提供的条件过滤输出
–format string 使用Go模板打印漂亮的容器
-n –last int 显示最后创建的n个容器(包括所有状态)(默认-1)
-l –latest 显示最新创建的容器(包括所有状态)
–no-trunc 不截断输出
-q –quiet 只显示数字id
-s –size 显示总文件大小
  • 显示正在运行和已停止的容器

docker ps命令默认仅显示正在运行的容器。要查看所有容器,请使用-a(或--all)标志:

[root@elsati ~]# docker container ps -a

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                   NAMES
1a102cea9995        nginx:1.14          "nginx -g 'daemon of…"   23 hours ago        Up 10 minutes               0.0.0.0:32769->80/tcp   nginx_02
ef0b5c9f9b86        nginx:1.14          "nginx -g 'daemon of…"   23 hours ago        Up 10 minutes               0.0.0.0:32768->80/tcp   nginx_01
42b94791ed92        centos:7            "/bin/bash"              47 hours ago        Up 10 minutes               0.0.0.0:28->22/tcp      web201
85646f36d6a2        centos:7            "/bin/bash"              47 hours ago        Created                                             web200
d9b63fecf342        nginx:1.14          "nginx -g 'daemon of…"   47 hours ago        Exited (0) 47 hours ago                             web_lnmp
e2b0989a8956        nginx:1.14          "nginx -g 'daemon of…"   47 hours ago        Exited (0) 47 hours ago                             kind_margulis              

  • 防止截断输出,显示三个链接的容器

[root@elsati ~]# docker container ps –no-trunc

CONTAINER ID                                                       IMAGE               COMMAND                    CREATED             STATUS              PORTS                   NAMES
1a102cea9995758ff60bc6119d57c0d064c18d1149c797238ca6672773049967   nginx:1.14          "nginx -g 'daemon off;'"   24 hours ago        Up 32 minutes       0.0.0.0:32769->80/tcp   nginx_02
ef0b5c9f9b86d443b94eb77a3e1491ea210a2e0c2bddf17bcf2af42dbc302483   nginx:1.14          "nginx -g 'daemon off;'"   24 hours ago        Up 32 minutes       0.0.0.0:32768->80/tcp   nginx_01
42b94791ed9292dda6d08b551fd70cc5f2ca3f4b19da9220ec2856ca0cbce83d   centos:7            "/bin/bash"                47 hours ago        Up 32 minutes       0.0.0.0:28->22/tcp      web201

 

  • 显示运行的容器

[root@elsati ~]# docker container ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
1a102cea9995        nginx:1.14          "nginx -g 'daemon of…"   24 hours ago        Up 37 minutes       0.0.0.0:32769->80/tcp   nginx_02
ef0b5c9f9b86        nginx:1.14          "nginx -g 'daemon of…"   24 hours ago        Up 37 minutes       0.0.0.0:32768->80/tcp   nginx_01
42b94791ed92        centos:7            "/bin/bash"              47 hours ago        Up 37 minutes       0.0.0.0:28->22/tcp      web201

 

  • 显示最新创建的容器

[root@elsati ~]# docker container ps -l

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
1a102cea9995        nginx:1.14          "nginx -g 'daemon of…"   24 hours ago        Up 46 minutes       0.0.0.0:32769->80/tcp   nginx_02

 

实战

attach子命令参数

短参数 长参数 备注
–detach-keys 覆盖分离容器的键序列
–no-stdin 不要附上STDIN
–sig-proxy true 代理所有接收到的信号到进程
  • 进入容器命令

[root@elsati ~]# docker run -itd –name webapp centos:7

1a8f80e3ea777421cddb51704f3309dfaa6e7db292cd10a8b0d31507cd518302
[root@elsati ~]# docker attach webapp 
[root@1a8f80e3ea77 /]# exit
exit

说明:用于docker attach使用容器的ID或名称将终端的标准输入,输出和错误(或这三者的任意组合)附加到正在运行的容器上。这使您可以查看其正在进行的输出或以交互方式控制它,就像命令直接在您的终端中运行一样。

注意:attach命令将显示ENTRYPOINT/CMD进程的输出。实际上,当进程可能当时根本不与终端交互时,这似乎好像挂起了attach命令。退出容器将立刻停止。

实战

commit 子命令参数

短参数 长参数 备注
-a –author 提交的镜像作者;
-c –change 使用Dockerfile指令来创建镜像;
-m 提交时的说明文字;
-p –pause 在commit时,将容器暂停。
  • 将容器ef0b5c9f9b86 保存为新的镜像,并添加提交人信息和说明信息。

[root@elsati ~]# docker commit -a "ZengFangQuan emil <3456358780@qq.com>,blog <www.gylinux.cn>;" -m "介绍容器说明" nginx_02

sha256:93a5be8f8cfcb742247614b51d8bff8e6006706bf013c428c75cceefa96bb83d

 

实战

cp ̵1; 子命令参数

短参数 长参数 备注
-a –archive 存档模式(复制所有uid/gid信息)
-L –follow-link 始终跟随SRC路径中的符号链接
  • 拷贝物理机文件到容器根目录下

[root@elsati ~]# docker container cp 1235688.txt lnmp_01:/

验证:

进入容器查询结果如下

[root@elsati ~]# docker exec -it lnmp_01 bash
[root@e0d2f64964f2 /]# ls
1235688.txt  anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

 

  • 重容器根目录考文件到物理机/tmp

[root@elsati ~]# docker container cp lnmp_01:/1235688.txt /tmp/
[root@elsati ~]# ls

验证:

[root@elsati tmp]# ls
1235688.txt      

实战

create -子命令参数

短参数 长参数 备注
-a &#8211;add-host list 添加自定义主机到ip的映射(主机:ip)
–attach list 连接到标准输入、标准输出或标准输入
–blkio-weight uint16 块IO(相对权重),在10和1000之间,或0禁用(默认0)
–blkio-weight-device list 块IO权值(相对设备权值)(默认[])
–cap-add list 添加Linux功能
–cap-drop list Linux的能力下降
–cgroup-parent string 容器的可选父cgroup
–cidfile string 将容器ID写入文件
–cpu-period int 限制CPU CFS(完全公平调度程序)周期
–cpu-quota int 限制CPU CFS(完全公平调度程序)配额
–cpu-rt-period int 限制CPU实时周期(以微秒为单位)
–cpu-rt-runtime int 限制CPU实时运行时间(以微秒为单位)
-c –cpu-shares int CPU份额(相对权重)
–cpus decimal cpu的数量
–cpuset-cpus string 允许执行的cpu (0- 3,0,1)
–cpuset-mems string 允许执行的MEMs (0- 3,0,1)
–device list 将主机设备添加到容器中
–device-cgroup-rule list 在cgroup允许设备列表中添加一个规则
–device-read-bps list 限制设备的读取速率(每秒字节数)(默认[])
–device-read-iops list 限制设备读取速率(每秒IO)(默认[])
–device-write-bps list 将写速率(每秒字节数)限制为一个设备(默认[])
–device-write-iops list 将写速率(IO /秒)限制在一个设备上(默认[])
–disable-content-trust 跳过图像验证(默认为真)
–dns list 设置自定义DNS服务器
–dns-option list 设置DNS选项
–dns-search list 设置自定义DNS搜索域
–domainname string 容器NIS域名
&#8211;entrypoint string 覆盖图像的默认入口点
-e –env list 设置环境变量
–env-file list 读取环境变量文件
R11;expose list 公开端口或端口范围
–gpus gpu-request 将GPU设备添加到容器中(‘all’传递所有GPU)
–group-add list 添加其他组以加入
–health-cmd string 命令运行以检查健康状况
–health-interval duration 运行检查间隔时间(ms|s|m|h)(默认0s)
&#8211;health-retries int 需要报告不健康的连续故障
–health-start-period duration 开始健康重试倒计时前容器初始化的起始时间(ms|s|m|h)(默认0s)
–health-timeout duration 允许一次检查运行的最长时间(ms|s|m|h)(默认0s)
–help 打印使用
-h –hostname string 容器主机名
–init 转发信号和获取进程的容器中运行init
-i –interactive 保持STDIN打开,即使没有连接
–ip string IPv4地址(如172.30.100.104)
–ip6 string IPv6地址(例如,2001:db8::33)
–ipc string 使用IPC模式
–isolation string 容器隔离技术
–kernel-memory bytes 内核内存限制
-l –label list 在容器上设置元数据
–label-file list 读取以行分隔的标签文件
–link list 添加链接到另一个容器
–link-local-ip list 容器IPv4/IPv6链路本地地址
–log-driver string 容器的日志驱动程序
–log-opt list 日志驱动器选项
;mac-address string 容器MAC地址(例如:92:d0:c6:0a:29:33)
-m –memory bytes 内存限制
–memory-reservation bytes 内存软限制
–memory-swap bytes 交换限制等于内存加交换:’-1’以启用无限交换
–memory-swappiness int 调整容器内存swappiness(0到100)(默认-1)
–mount mount 将文件系统挂载附加到容器
–name string 为容器分配一个名称
–network network 将容器连接到网络
network-alias list 为容器添加网络范围的别名
–no-healthcheck 禁用任何容器指定的健康检查
–oom-kill-disable 禁用伯父杀手
–oom-score-adj int 调整主机的OOM首选项(-1000到1000)
̵1;pid string 要使用的PID名称空间
–pids-limit int 调整容器pid限制(将-1设置为无限制)
–privileged 将扩展权限授予此容器
-p –publish list 将容器的端口发布到主机
-P –publish-all 将所有公开的端口发布到随机端口
–read-only 将容器的根文件系统挂载为只读
–restart string 在容器退出时应用重启策略(默认为“no”)
–rm 在容器退出时自动删除它
–runtime string 用于此容器的运行时
–security-opt list 安全选项
–shm-size bytes /dev/shm大小
–stop-signal string 停止容器的信号(默认为“SIGTERM”)
–stop-timeout int 超时(秒)以停止容器
–storage-opt list 容器的存储驱动程序选项
–sysctl map Sysctl选项(默认映射[])
–tmpfs list 挂载tmpfs目录
-t –tty 分配一个pseudo-TTY
&#8211;ulimit ulimit Ulimit选项(默认[])
-u –user string 用户名或UID(格式:< name| UID >[:<group|gid>])
–userns string 要使用的用户名称空间
–uts string 要使用的UTS名称空间
-v 211;volume list 绑定装入卷
–volume-driver string 容器的可选卷驱动程序
volumes-from list 从指定容器装入卷
-w –workdir string 容器内的工作目录

 

  • 创建一个新的容器

[root@elsati tmp]# docker container create nginx:1.14 
092023e82d2706af3ad62f64a495e5b9bc6dea189414d6839a83e7fac5e0f86c

 

验证:

[root@elsati tmp]# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
092023e82d27        nginx:1.14          "nginx -g 'daemon of…"   25 seconds ago      Created                                 pensive_rosalind

实战

diff 子命令参数

 

  • 检查容器文件系统上文件或目录的更改

[root@elsati tmp]# docker container diff nginx_01 
C /var
C /var/cache
C /var/cache/nginx
A /var/cache/nginx/fastcgi_temp
A /var/cache/nginx/proxy_temp
A /var/cache/nginx/scgi_temp
A /var/cache/nginx/uwsgi_temp
A /var/cache/nginx/client_temp
C /run
A /run/nginx.pid

 

实战

exec 子命令参数

短参数 长参数 备注
-d, –detach 分离模式:在后台运行命令
–detach-keys string 覆盖用于分离容器的键序列
-e, –env list 设置环境变量
-i, –interactive 保持STDIN打开,即使没有连接
–privileged 将扩展的特权授予该命令
-t, 211;tty 分配一个pseudo-TTY
-u, –user string 用户名或UID(格式:< name| UID >[:<group|gid>])
-w, –workdir string 容器内的工作目录
  • 进入容器

[root@elsati tmp]# docker exec -it nginx_02 bash

 

实战

export子命令参数

短参数 长参数 备注
-o –output 写入文件,而不是STDOUT
  • 将容器的文件系统导出为tar存档
[root@elsati ~]# docker container export nginx_02 >test.tar

 

验证:

  • [root@elsati ~]# ll

总用量 108568 -rw-r--r--. 1 root root 0 11月 20 23:25 1235688.txt -rw-------. 1 root root 1236 8月 25 22:56 anaconda-ks.cfg -rw-r--r--. 1 root root 111169024 11月 21 23:01 test.tar

实战

inspect子命令参数

短参数 长参数 备注
-f –format 使用给定的Go模板格式化输出
-s –sisz 显示总文件大小
  • 查看容器详细参数

[root@elsati ~]# docker container inspect nginx_02 
[
    {
        "Id": "1a102cea9995758ff60bc6119d57c0d064c18d1149c797238ca6672773049967",
        "Created": "2019-11-19T14:18:31.143476546Z",
        "Path": "nginx",
        "Args": [
            "-g",
            "daemon off;"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 2150,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2019-11-21T14:55:19.280425863Z",
            "FinishedAt": "2019-11-21T22:55:13.025070706+08:00"

 

实战

kill子命令参数

短参数 长参数 备注
-s –signal 发送到容器的信号(默认为“KILL”)
  • 杀掉一个容器服务
[root@elsati ~]# docker container kill nginx_13
nginx_13

 

实战

logs子命令参数

短参数 长参数 备注
–details 显示提供给日志的额外细节
-f –follow 跟踪日志输出
–since string 显示时间戳以来的日志(如2013-01-02T13:23:37)或相关日志(如42m, 42分钟)
–tail string 从日志末尾显示的行数(默认为“all”)
-t –timestamps 显示时间戳
–until string 在时间戳前显示日志(如2013-01-02T13:23:37)或相关日志(如42分钟内显示42m)
  • 查看容器日志

[root@elsati ~]# docker container logs nginx_13

实战

ls子命令参数

短参数 长参数 备注
-a –all 显示所有容器(默认显示正在运行)
-f ;filter filter 根据提供的条件过滤输出
–format string 使用Go模板打印漂亮的容器
-n –last int 示最后创建的n个容器(包括所有状态)(默认-1)
-l –latest 显示最新创建的容器(包括所有状态)
–no-trunc 不截断输出
-q –quiet 只显示数字id
-s –size 显示总文件大小

实战

pause 子命令参数

 

实战

port 子命令参数

  • 查看容器端口

docker container port nginx_13

实战

prune 子命令参数

短参数 长参数 备注
R11;filter filter 提供筛选值(例如:“直到= <时间>”)
-f –force 不提示确认

实战

rename 子命令参数

  • 为容器重命名

[root@elsati ~]# docker rename nginx_02 nginx_13

 

 

实战

restart 子命令参数

短参数 长参数 备注
-t –time 在杀死容器之前等待停止的秒数(默认为10)
  • 重启容器

docker container restart nginx_01

实战

rm 子命令参数

短参数 长参数 备注
-f –force 强制移除正在运行的容器(使用SIGKILL)
-l –link 删除指定的链接
-v –volumes 删除与容器关联的卷
  • 删除一个容器

[root@elsati ~]# docker container rm webapp

webapp

 

实战

start子命令参数

短参数 长参数 备注
-a –attach 连接STDOUT/STDERR和转发信号
–detach-keys string 覆盖用于分离容器的键序列
-i –interactive 将容器的STDIN
  • 重启一个容器

[root@elsati ~]# docker start lnmp_01

lnmp_01

 

实战

stats 子命令参数

短参数 长参数 备注
-a –all 显示所有容器(默认显示正在运行)
–format string 使用Go模板打印漂亮的图像
–no-stream 禁用流统计,只提取第一个结果
R11;no-trunc 不截断输出
  • 显示所有容器运行的资源

[root@elsati ~]# docker stats -a



CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
092023e82d27        pensive_rosalind    0.00%               0B / 0B               0.00%               0B / 0B             0B / 0B             0
1a8f80e3ea77        webapp              0.00%               0B / 0B               0.00%               0B / 0B             0B / 0B             0
e0d2f64964f2        lnmp_01             0.00%               0B / 0B               0.

 

实战

stop 子命令参数

短参数 长参数 备注
-t –time 在杀死容器之前等待停止的秒数(默认为10)
  • 停止容器

[root@elsati ~]# docker container stop webapp

webapp

实战

top 子命令参数

  • top查看容器运行进程

[root@elsati ~]# docker container top nginx_01

UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                2175                2148                0                   11月21               pts/0               00:00:00            nginx: master process nginx -g daemon off;
101                 2261                2175                0                   11月21               pts/0               00:00:00            nginx: worker process

&nbsp;

实战

unpause 子命令参数

 

实战

update 子命令参数

短参数 长参数 备注
–blkio-weight uint16 块IO(相对权重),在10和1000之间,或0禁用(默认0)
–cpu-period int 限制CPU CFS(完全公平调度程序)周期
–cpu-quota int 限制CPU CFS(完全公平调度程序)配额
–cpu-rt-period int 限制CPU实时周期(以微秒为单位)
–cpu-rt-runtime int 限制CPU实时运行时间(以微秒为单位)
-c –cpu-shares int CPU份额(相对权重)
–cpus decimal cpu的数量
–cpuset-cpus string 允许执行的cpu (0- 3,0,1)
–cpuset-mems string 允许执行的MEMs (0- 3,0,1)
–kernel-memory bytes 内核内存限制
-m –memory bytes 内存限制
;memory-reservation bytes 内存软限制
–memory-swap bytes 交换限制等于内存加交换:’-1217;以启用无限交换
–pids-limit int 调整容器pid限制(将-1设置为无限制)
&#8211;restart string 重新启动策略,以便在容器退出时应用

实战

wait 子命令参数

  • 在后台启动一个容器。

 

$ docker run -dit --name=my_container ubuntu bash

 

  • 运行docker wait,它将阻塞直到容器退出。

$ docker wait my_container

 

  • 在另一个终端,停止第一个容器。docker wait上面的命令返回退出代码。

$ docker stop my_container
  • docker wait与上面的命令相同,但是现在退出,返回0

$ docker wait my_container

0

 

0 条回应