首页>软件资讯>常见问题

常见问题

操作docker容器

发布时间:2024-07-18 10:26:05人气:196

概念:容器是docker的核心概念之一,容器是镜像运行的实例。镜像是一个只读的静态文件,容器是有运行时需要的可写文件层,容器中程序处于运行状态。

容器的7种状态

created(已创建)

restarting(重启中)

running(运行中)

removing(迁移中)

paused(暂停)

exited(停止)

dead(死亡)

 用docker ps -a 可以查看 容器的状态

4.1创建容器、删除容器


[xxx@rocky9-docker ~]$ docker create -it centos

837966a72016e4e8cb4471700ecd9fb408fbd693adec8bbadf62d40f6117eb8d

[xxx@rocky9-docker ~]$ docker ps

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

[xxx@rocky9-docker ~]$ docker ps -a

CONTAINER ID   IMAGE           COMMAND       CREATED         STATUS                     PORTS     NAMES

837966a72016   centos          "/bin/bash"   9 seconds ago   Created                              zen_fermi

2bae5889ca5f   test:0.11       "bash"        4 hours ago     Exited (0) 4 hours ago               friendly_chaplygin

25dbd5a4fdb5   ea16f5beeaac    "bash"        4 hours ago     Exited (0) 4 hours ago               ecstatic_engelbart

d914d1f8da7c   centos          "bash"        4 hours ago     Exited (2) 4 hours ago               hardcore_meninsky


[xxx@rocky9-docker ~]$ docker rm 837966a72016

837966a72016

[xxx@rocky9-docker ~]$ docker ps -a

CONTAINER ID   IMAGE           COMMAND   CREATED       STATUS                     PORTS     NAMES

2bae5889ca5f   test:0.11       "bash"    4 hours ago   Exited (0) 4 hours ago               friendly_chaplygin

25dbd5a4fdb5   ea16f5beeaac    "bash"    4 hours ago   Exited (0) 4 hours ago               ecstatic_engelbart

d914d1f8da7c   centos          "bash"    4 hours ago   Exited (2) 4 hours ago               hardcore_meninsky

命令解释:

docker create -it centos #创建一个容器,

-i保持标准输入打开   -t是否分配一个伪终端,默认为false

docker create的参数选项十分繁多,分为运行模式、环境配置、资源限制、安全保护。

docker rm 837966a72016  #删除容器ID为2016的容器,rm命令用于删除处于终止或者退出状态的容器.

-f  强行终止并删除一个运行的容器

-l  删除容器的连接,但保留容器

-v  删除容器挂载的数据卷

docker create命令,发现其相关选项有点多,为方便以后查看,通过网络搜索整理如下:


1、create 命令与容器运行模式相关的选项:

-a,--attach= []              是否绑定到标准输人、输出和错误

-d,--detach=true| false               是否在后台运行容器,默认为否

--detach-keys=""             从attach模式退出的快捷键

--entrypoint=""          镜像存在人口命令时,覆盖为新的命令

-- expose= []        指定容器会暴露出来的端口或端口范围

--group-add= []       运行容器的用户组

-i,-- interactive=true| false         保持标准输人打开,默认为false

--ipc=""            容器IPC命名空间,可以为其他容器或主机

-- isolation= "default"          容器使用的隔离机制

-- log-driver= "json-file"         指定容器的日志驱动类型,可以为json-file、syslog、journald、gelf、fluentd、awslogs、splunk、etwlogs、gcplogs或none

--log-opt=[]         传递给日志驱动的选项

- -net= "bridge"         指定容器网络模式,包括bridge、none、 其他容器内网络、host 的网络或某个现有网络等

--net-alias= []         容器在网络中的别名

-P,--publish-all=true | false           通过NAT机制将容器标记暴露的端口自动映射到本地主机的临时端口

-p, --publish=[]          指定如何映射到本地主机端口,例如-p 11234-12234:1234-2234

--pid=host          容器的PID命名空间

--userns=""          启用userns - remap时配置用户命名空间的模式

--uts=host            容器的utS命名空间

-- restart= "no"           容器的重启策略,包括no、on- failure[:max-retry]、always、unless- stopped等

-- rm=true | false         容器退出后是否自动删除,不能跟-d同时使用


-t,--tty=true | false            是否分配-一个伪终端,默认为false

-- tmpfs= []               挂载临时文件系统到容器

-v| --volume [= [ [HOST- DIR: ]    CONTAINER -DIR [:OPTIONS]]]           挂载主机上的文件卷到容器内

- -volume - driver=""           挂载文件卷的驱动类型

--volumes- from= []         从其他容器挂载卷

-W,--workdir= ””           容器内的默认工作目录


2、create命令与容器环境和配置相关的选项

-- add-host= []             在容器内添加一个 主机名到IP地址的映射关 系(通过/etc/hosts 文件)

-- device= []               映射物理机上的设备到容器内

--dns - search= []         DNS搜索域

--dns -opt= []             自定义的DNS选项

--dns= []                  自定义的DNS服务器

-e,--env= []            指定容器内环境变量

--env-file= []             从文件中读取环境变量到容器内

-h,-- hostname=" "           指定容器内的主机名

--ip=" "              指定容器的IPv4地址

--ip6=" "             指定容器的IPv6地址

--link= [<name or id>:alias]            链接到其他容器

--link-local-ip= [] :               容器的本地链接地址列表

- - mac-address=" "              指定容器的Mac地址

--name=" "          指定容器的别名


3、create命令与容器资源限制和安全保护相关的选项

--blkio-weight=10~1000                   容器读写块设备的1/0性能权重,默认为0

--blkio-weight-device=[DEVICE_ NAME : WEIGHT]                     指定各个块设备的I/O性能权重

--cpu-shares=0                       允许容器使用CPU资源的相对权重,默认一个容器能用满个核的 CPU

--cap-add=[]                    增加容器的Linux指定安全能力

--cap-drop=[]                   移除容器的Linux指定安全能力

--cgroup-parent=" "                   容器cgroups 限制的创建路径

--cidfile=""                  指定容器的进程ID号写到文件

--cpu-period=0                   限制容器在CFS调度器下的CPU占用时间片

--cpuset-cpus=" "                      限制容器能使用哪些CPU核心

--cpuset-mems=" "                 NUMA架构下使用哪些核心的内存

--cpu-quota=0                    限制容器在CFS调度器下的CPU配额

--device-read-bps=[]            挂载设备的读吞吐率(以bps为单位)限制

--device-write-bps=[]           挂载设备的写吞吐率(以bps为单位)限制

--device-read-iops=[]          挂载设备的读速率(以每秒io次数为单位)限制

--device-write-iops=[]          挂载设备的写速率(以每秒i/o次数为单位)限制

--health-cmd=" "                  指定检查容器健康状态的命令

--health-interval=0s               执行健康检查的间隔时间,单位可以为ms、s、 m或h

--health-retries=int                健康检查失败重试次数,超过则认为不健康

--health-start-period=0s               容器启动后进行健康检查的等待时间,单位可以为ms、s、m或h

--health-timeout=0s                         健康检查的执行超时,单位可以为ms、s、m或h

--no-healthcheck=true|false                 是否禁用健康检查

--init                           在容器中执行-一个init进程,来负责响应信号和处理僵尸状态子进程

--kernel-memory=" "                 限制容器使用内核的内存大小,单位可以是b、k、m或g

-m,--memory=" "                    限制容器内应用使用的内存,单位可以是b、k、m或g

--memory-reservation=""                          当系统中内存过低时,容器会被强制限制内存到给定值,默认情况下等于内存限制值

--memory-swap="LIMIT"                      限制容器使用内存和交换区的总大小

--oom-kill-disable=true|false                     内存耗尽时是否杀死容器

--00m-score-adj=""                       调整容器的内存耗尽参数

--pids-limit=""                         限制容器的pid个数

--privileged-true|false                     是否给容器高权限,这意味着容器内应用将不受权限的限制,一般不推荐

--read-only=true|false                           是否让容器内的文件系统只读

--security-opt= []                            指定一些安全参数,包括权限、安全能力、apparmor等

--stop-signal=SIGTERM                        指定停止容器的系统信号

-- shm-size=""                                 /dev/shm的大小

--sig-proxy=true| false                           是否代理收到的信号给应用,默认为true,不能代理SIGCHLD、SIGSTOP和SIGKILL信号

--memory-swappiness="0~100"                         调整容器的内存交换区参数

-U,--user=""                         指定在容器内执行命令的用户信息

--userns=""                      指定用户命名空间

--ulimit=[]                     通过ulimit来限制最大文件数、最大进程数



4.2 启动容器


在4.1中创建了一个容器又删除了,所以重新创建一个。


方法1:先create创建,再start启动


[xxx@rocky9-docker ~]$ docker create -it --name xxxcentos centos:20240712

f93c9478e03aca813350fa2b22a5b66f620ff8ffa632b0a71d0adcad921a515d

[xxx@rocky9-docker ~]$ docker ps -a

CONTAINER ID   IMAGE             COMMAND       CREATED         STATUS                     PORTS     NAMES

f93c9478e03a   centos:20240712   "/bin/bash"   7 seconds ago   Created                              xxxcentos

2bae5889ca5f   test:0.11         "bash"        4 hours ago     Exited (0) 4 hours ago               friendly_chaplygin

25dbd5a4fdb5   ea16f5beeaac      "bash"        4 hours ago     Exited (0) 4 hours ago               ecstatic_engelbart

d914d1f8da7c   centos            "bash"        4 hours ago     Exited (2) 4 hours ago               hardcore_meninsky

02ac80889c7b   centos            "bash"        4 hours ago     Exited (0) 4 hours ago               xenodochial_ramanujan

dc1b238d67ab   ubuntu            "bash"        6 hours ago     Exited (127) 5 hours ago             beautiful_mcclintock

cbe058205e27   centos            "bash"        6 hours ago     Exited (0) 6 hours ago               nifty_lalande

fe2a4243df90   centos            "bash"        6 hours ago     Exited (0) 6 hours ago               musing_benz

f7f0c5dd4e7b   centos:latest     "bash"        7 hours ago     Exited (0) 7 hours ago               nice_torvalds

1a8281e75284   ubuntu:latest     "bash"        7 hours ago     Exited (127) 7 hours ago             kind_nash

4d1e01af4f23   ubuntu:latest     "bash"        7 hours ago     Exited (0) 7 hours ago               sad_boyd

[xxx@rocky9-docker ~]$ docker start xxxcentos

xxxcentos

[xxx@rocky9-docker ~]$ docker ps -a

CONTAINER ID   IMAGE             COMMAND       CREATED              STATUS                     PORTS     NAMES

f93c9478e03a   centos:20240712   "/bin/bash"   About a minute ago   Up 3 seconds                         xxxcentos

2bae5889ca5f   test:0.11         "bash"        4 hours ago          Exited (0) 4 hours ago               friendly_chaplygin

如上命令所示,这回出现了一个新的--name选项,是定义容器名字,如果没有此参数,docker将自动生成一个容器名。


方法2:创建并启动


[xxx@rocky9-docker ~]$ docker run -d -it --name x2centos centos:latest bash

c6fa52ccd323cdc42c6b1dd1551cc622f25effe0addb431bc68bc4dd9a6e7c60

[xxx@rocky9-docker ~]$ docker ps

CONTAINER ID   IMAGE             COMMAND       CREATED         STATUS         PORTS     NAMES

c6fa52ccd323   centos:latest     "bash"        6 seconds ago   Up 5 seconds             x2centos

f93c9478e03a   centos:20240712   "/bin/bash"   6 minutes ago   Up 5 minutes             xxxcentos

如上命令所示,docker run -d选项是创建并运行,一条命令,它在后台的操作包含:


检查本地是否存在指定镜像,若不存在就去下载


利用镜像创建一个容器,并启动该容器


分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层


从宿主机配置的网桥接口中桥接一个虚拟接口到容器中


从网桥的地址池配置一个IP地址给容器


执行用户指定的用户程序


执行完毕后容器被自动终止




4.3 暂停、停止容器


[xxx@rocky9-docker ~]$ docker ps

CONTAINER ID   IMAGE             COMMAND       CREATED        STATUS        PORTS     NAMES

c6fa52ccd323   centos:latest     "bash"        38 hours ago   Up 38 hours             x2centos

f93c9478e03a   centos:20240712   "/bin/bash"   38 hours ago   Up 38 hours             xxxcentos

[xxx@rocky9-docker ~]$ docker pause x2centos

x2centos

[xxx@rocky9-docker ~]$ docker ps

CONTAINER ID   IMAGE             COMMAND       CREATED        STATUS                 PORTS     NAMES

c6fa52ccd323   centos:latest     "bash"        38 hours ago   Up 38 hours (Paused)             x2centos

f93c9478e03a   centos:20240712   "/bin/bash"   38 hours ago   Up 38 hours                      xxxcentos

[xxx@rocky9-docker ~]$ docker stop xxxdentos

Error response from daemon: No such container: xxxdentos

[xxx@rocky9-docker ~]$ docker stop xxxcentos

xxxcentos

[xxx@rocky9-docker ~]$ docker ps

CONTAINER ID   IMAGE           COMMAND   CREATED        STATUS                 PORTS     NAMES

c6fa52ccd323   centos:latest   "bash"    38 hours ago   Up 38 hours (Paused)             x2centos

命令:

docker pause 容器名或ID    #暂停

docker unpause 容器名或ID    #取消暂停

docker stop 容器名或ID  #停止

docker start 容器名或ID  #开启, 停止后只能重新开启

docker restart 容器名或ID  #将一个处于运行状态的容器终止,再开启。



4.4进入容器


进入容器命令行有2个命令,1.attach   2.exec


由于1.attach非常不方便,所以抛弃吧,直接用exec


[xxx@rocky9-docker ~]$ docker ps

CONTAINER ID   IMAGE           COMMAND   CREATED      STATUS      PORTS     NAMES

c6fa52ccd323   centos:latest   "bash"    3 days ago   Up 2 days             x2centos

[xxx@rocky9-docker ~]$ docker exec -it x2centos /bin/bash

[root@c6fa52ccd323 /]# ls

bin  etc   lib    lost+found  mnt  proc  run   srv  tmp  var

dev  home  lib64  media       opt  root  sbin  sys  usr

[root@c6fa52ccd323 /]#

docker exec -it  容器名 /bin/bash  即可进入


4.5导入和导出容器


[xxx@rocky9-docker ~]$ sudo docker export -o /home/test3.tar f93c9478e03a

[xxx@rocky9-docker ~]$ ls -lh /home/test3.tar

-rw-------. 1 root root 228M Jul 16 16:04 /home/test3.tar

sudo docker export -o 指定容器路径和文件名 容器名或容器ID


[xxx@rocky9-docker ~]$ sudo docker import /home/test2.tar import-test2

[sudo] password for xxx:

sha256:0f48638957f08ae45694dc1bb54ce6bcb6e6288d21db4a65a7d81d0efcd6b513

[xxx@rocky9-docker ~]$ docker images

REPOSITORY            TAG        IMAGE ID       CREATED         SIZE

import-test2          latest     0f48638957f0   6 seconds ago   231MB

sudo docker import 容器路径 导入后的镜像名


import导入后变成镜像而不是容器。


这里解释一下load import的区别,以及save export的区别。


docker load 会将整个镜像加载到 Docker 中,包括镜像的历史、标签、配置等元数据。


docker import 允许从文件系统快照创建一个新的 Docker 镜像。创建的镜像只包括文件系统快照和一些基本元数据,不包含原始镜像的完整元数据(如历史、标签等)。


如果你需要完整迁移整个镜像,备份所有元数据,那么 docker load 是更合适的选择。而如果你只有一个文件系统快照,并且想要创建一个简单的镜像,那么 docker import 可能更适合你。合理的选择取决于你的具体需求和项目背景。


docker save 保存的是完整的镜像,分层文件系统形式保存,export保存的是容器。转发某CS*DN的文章对比图片看看区别。

对比图.png

4.6查看容器


4.6.1查看详情:docker container inspect 容器名


以json格式返回包括容器ID\创建时间、路径形态、镜像配置等内容,如下代码。


[xxx@rocky9-docker ~]$ docker container inspect x2centos

[

    {

        "Id": "c6fa52ccd323cdc42c6b1dd1551cc622f25effe0addb431bc68bc4dd9a6e7c60",

        "Created": "2024-07-12T14:02:12.797002744Z",

        "Path": "bash",

        "Args": [],

        "State": {

            "Status": "running",

            "Running": true,

            "Paused": false,

            "Restarting": false,

            "OOMKilled": false,

            "Dead": false,

            "Pid": 957647,

            "ExitCode": 0,

            "Error": "",

            "StartedAt": "2024-07-14T03:50:41.720299027Z",

            "FinishedAt": "2024-07-14T03:50:41.363533516Z"

        },

        "Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",

        "ResolvConfPath": "/docker/docker-data/containers/c6fa52ccd323cdc42c6b1dd1551cc622f25effe0addb431bc68bc4dd9a6e7c60/resolv.conf",

        "HostnamePath": "/docker/docker-data/containers/c6fa52ccd323cdc42c6b1dd1551cc622f25effe0addb431bc68bc4dd9a6e7c60/hostname",

        "HostsPath": "/docker/docker-data/containers/c6fa52ccd323cdc42c6b1dd1551cc622f25effe0addb431bc68bc4dd9a6e7c60/hosts",

        "LogPath": "/docker/docker-data/containers/c6fa52ccd323cdc42c6b1dd1551cc622f25effe0addb431bc68bc4dd9a6e7c60/c6fa52ccd323cdc42c6b1dd1551cc622f25effe0addb431bc68bc4dd9a6e7c60-json.log",

        "Name": "/x2centos",

        "RestartCount": 0,

        "Driver": "overlay2",

        "Platform": "linux",

        "MountLabel": "",

        "ProcessLabel": "",

        "AppArmorProfile": "",

        "ExecIDs": [

            "48f8456f315bcaf4b44108a5db7139d0790c1bc1729d33fe5323f235fc93d6e5"

        ],

        "HostConfig": {

            "Binds": null,

            "ContainerIDFile": "",

            "LogConfig": {

                "Type": "json-file",

                "Config": {}

            },

            "NetworkMode": "bridge",

            "PortBindings": {},

            "RestartPolicy": {

                "Name": "no",

                "MaximumRetryCount": 0

            },

            "AutoRemove": false,

            "VolumeDriver": "",

            "VolumesFrom": null,

            "ConsoleSize": [

                46,

                146

            ],

            "CapAdd": null,

            "CapDrop": null,

            "CgroupnsMode": "private",

            "Dns": [],

            "DnsOptions": [],

            "DnsSearch": [],

            "ExtraHosts": null,

            "GroupAdd": null,

            "IpcMode": "private",

            "Cgroup": "",

            "Links": null,

            "OomScoreAdj": 0,

            "PidMode": "",

            "Privileged": false,

            "PublishAllPorts": false,

            "ReadonlyRootfs": false,

            "SecurityOpt": null,

            "UTSMode": "",

            "UsernsMode": "",

            "ShmSize": 67108864,

            "Runtime": "runc",

            "Isolation": "",

            "CpuShares": 0,

            "Memory": 0,

            "NanoCpus": 0,

            "CgroupParent": "",

            "BlkioWeight": 0,

            "BlkioWeightDevice": [],

            "BlkioDeviceReadBps": [],

            "BlkioDeviceWriteBps": [],

            "BlkioDeviceReadIOps": [],

            "BlkioDeviceWriteIOps": [],

            "CpuPeriod": 0,

            "CpuQuota": 0,

            "CpuRealtimePeriod": 0,

            "CpuRealtimeRuntime": 0,

            "CpusetCpus": "",

            "CpusetMems": "",

            "Devices": [],

            "DeviceCgroupRules": null,

            "DeviceRequests": null,

            "MemoryReservation": 0,

            "MemorySwap": 0,

            "MemorySwappiness": null,

            "OomKillDisable": null,

            "PidsLimit": null,

            "Ulimits": [],

            "CpuCount": 0,

            "CpuPercent": 0,

            "IOMaximumIOps": 0,

            "IOMaximumBandwidth": 0,

            "MaskedPaths": [

                "/proc/asound",

                "/proc/acpi",

                "/proc/kcore",

                "/proc/keys",

                "/proc/latency_stats",

                "/proc/timer_list",

                "/proc/timer_stats",

                "/proc/sched_debug",

                "/proc/scsi",

                "/sys/firmware",

                "/sys/devices/virtual/powercap"

            ],

            "ReadonlyPaths": [

                "/proc/bus",

                "/proc/fs",

                "/proc/irq",

                "/proc/sys",

                "/proc/sysrq-trigger"

            ]

        },

        "GraphDriver": {

            "Data": {

                "LowerDir": "/docker/docker-data/overlay2/79b25983fb0eab9b2fb8b5371d6465d8adf561d7ccf8473c516edf3404e538c7-init/diff:/docker/docker-data/overlay2/0d87995612142bb3d8b4c8434e6dddccde49ee39a51d7955e19eea15915bb696/diff",

                "MergedDir": "/docker/docker-data/overlay2/79b25983fb0eab9b2fb8b5371d6465d8adf561d7ccf8473c516edf3404e538c7/merged",

                "UpperDir": "/docker/docker-data/overlay2/79b25983fb0eab9b2fb8b5371d6465d8adf561d7ccf8473c516edf3404e538c7/diff",

                "WorkDir": "/docker/docker-data/overlay2/79b25983fb0eab9b2fb8b5371d6465d8adf561d7ccf8473c516edf3404e538c7/work"

            },

            "Name": "overlay2"

        },

        "Mounts": [],

        "Config": {

            "Hostname": "c6fa52ccd323",

            "Domainname": "",

            "User": "",

            "AttachStdin": false,

            "AttachStdout": false,

            "AttachStderr": false,

            "Tty": true,

            "OpenStdin": true,

            "StdinOnce": false,

            "Env": [

                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

            ],

            "Cmd": [

                "bash"

            ],

            "Image": "centos:latest",

            "Volumes": null,

            "WorkingDir": "",

            "Entrypoint": null,

            "OnBuild": null,

            "Labels": {

                "org.label-schema.build-date": "20210915",

                "org.label-schema.license": "GPLv2",

                "org.label-schema.name": "CentOS Base Image",

                "org.label-schema.schema-version": "1.0",

                "org.label-schema.vendor": "CentOS"

            }

        },

        "NetworkSettings": {

            "Bridge": "",

            "SandboxID": "27e58949196d4a30f78c41dd86c52a8efd5d9021d91ff92aa26bb87b28cac642",

            "SandboxKey": "/var/run/docker/netns/27e58949196d",

            "Ports": {},

            "HairpinMode": false,

            "LinkLocalIPv6Address": "",

            "LinkLocalIPv6PrefixLen": 0,

            "SecondaryIPAddresses": null,

            "SecondaryIPv6Addresses": null,

            "EndpointID": "9a8e8ed32d7886856101261d94d7bc1d3e8f006277bb5187a7a593ea1e8cde1b",

            "Gateway": "172.17.0.1",

            "GlobalIPv6Address": "",

            "GlobalIPv6PrefixLen": 0,

            "IPAddress": "172.17.0.2",

            "IPPrefixLen": 16,

            "IPv6Gateway": "",

            "MacAddress": "02:42:ac:11:00:02",

            "Networks": {

                "bridge": {

                    "IPAMConfig": null,

                    "Links": null,

                    "Aliases": null,

                    "MacAddress": "02:42:ac:11:00:02",

                    "NetworkID": "64d986b97cdc8b1006f04246a652b046ad9430cb2012128deef024aee668b2b9",

                    "EndpointID": "9a8e8ed32d7886856101261d94d7bc1d3e8f006277bb5187a7a593ea1e8cde1b",

                    "Gateway": "172.17.0.1",

                    "IPAddress": "172.17.0.2",

                    "IPPrefixLen": 16,

                    "IPv6Gateway": "",

                    "GlobalIPv6Address": "",

                    "GlobalIPv6PrefixLen": 0,

                    "DriverOpts": null,

                    "DNSNames": null

                }

            }

        }

    }

]

[xxx@rocky9-docker ~]$

4.6.2查看容器内进程docker container top 容器名


[xxx@rocky9-docker ~]$ docker container top x2centos

UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD

root                957647              957615              0                   Jul14               pts/0               00:00:00            bash

root                1575253             957615              0                   Jul15               pts/1               00:00:00            /bin/bash



4.6.3查看容器统计信息,显示CPU内存存储网络等使用情况


docker container stats 容器名


可用选项: -a 输出所有容器统计信息,--format string格式化输出信息,--no-stream 不持续输出。


[xxx@rocky9-docker ~]$ docker container stats -a  x2centos

CONTAINER ID   NAME       CPU %     MEM USAGE / LIMIT     MEM %     NET I/O       BLOCK I/O         PIDS

c6fa52ccd323   x2centos   0.00%     2.039MiB / 7.499GiB   0.03%     4.94kB / 0B   1.25MB / 8.19kB   2

CONTAINER ID   NAME       CPU %     MEM USAGE / LIMIT     MEM %     NET I/O       BLOCK I/O         PIDS

c6fa52ccd323   x2centos   0.00%     2.039MiB / 7.499GiB   0.03%     4.94kB / 0B   1.25MB / 8.19kB   2



4.7其他容器命令cp,diff,port,update的使用

1.cp

docker cp命令是Docker提供的一个用于在主机和容器之间复制文件和目录的命令。它的语法如下:


docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH

docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

CONTAINER,可以是正在运行或已停止的容器,名称或ID均可

SRC_PATH,源文件或目录在容器内的路径

DEST_PATH,目标路径在主机上的位置

[xxx@rocky9-docker ~]$ docker run -itd --name test1 test:0.11 /bin/bash

87f7aed860559af7c1390810638c77394037486108c2d0b23d6feb225dfa5803

[xxx@rocky9-docker ~]$ docker ps

CONTAINER ID   IMAGE           COMMAND       CREATED         STATUS         PORTS     NAMES

87f7aed86055   test:0.11       "/bin/bash"   2 seconds ago   Up 2 seconds             test1

c6fa52ccd323   centos:latest   "bash"        4 days ago      Up 2 days                x2centos

[xxx@rocky9-docker ~]$


先开启2个容器。


[xxx@rocky9-docker ~]$ docker exec -it test1 /bin/bash

[root@87f7aed86055 /]# ls

bin  etc   lib    lost+found  mnt  proc  run   srv  test  usr

dev  home  lib64  media       opt  root  sbin  sys  tmp   var

[root@87f7aed86055 /]# touch /tmp/test.test  #创建一个文件

[root@87f7aed86055 /]# ls -l /tmp/test.test

-rw-r--r--. 1 root root 0 Jul 17 01:34 /tmp/test.test

[root@87f7aed86055 /]# exit

exit

[xxx@rocky9-docker ~]$ sudo docker cp test1:/tmp/test.test /home/ #从容器复制文件到宿主机

[sudo] password for xxx:

Successfully copied 1.54kB to /home/

[xxx@rocky9-docker ~]$ docker cp test1:/tmp/ /tmp/www/ #从容器复制目录到宿主机

Successfully copied 8.7kB to /tmp/www/

[xxx@rocky9-docker ~]$ docker cp /etc/passwd test1:/tmp/ps.d  #从宿主机复制文件到容器

Successfully copied 3.07kB to test1:/tmp/ps.d


从容器复制到宿主机:


sudo docker cp 容器名:绝对路径 目的地址


从容器复制目录到宿主机:


sudo docker cp 容器名:绝对路径 目的地址


注意:docker不支持从容器复制文件到容器,只能先复制到宿主机再从宿主机复制到另外一个容器。


2.diff命令查看容器内的数据修改:


[xxx@rocky9-docker ~]$ docker ps

CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS     NAMES

87f7aed86055   test:0.11       "/bin/bash"   23 minutes ago   Up 23 minutes             test1

c6fa52ccd323   centos:latest   "bash"        4 days ago       Up 2 days                 x2centos

[xxx@rocky9-docker ~]$ docker container diff test1

C /tmp

A /tmp/test.test

A /tmp/ps.d

C /root

C /root/.bash_history

3.docker container port test1 查看容器的端口映射情况


4.docker update更新容器配置,包含限制CPU、内容使用等参数,这里不详解。


上一条:Docker安装以Ubuntu系统24.04为基础环境

下一条:容器化及Docker基础概念