CKA备考实验 | 管理容器的命令

书籍来源:《CKA/CKAD应试指南:从Docker到Kubernetes完全攻略》

一边学习一边整理老师的课程内容及实验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:CKA备考实验 | 汇总_热爱编程的通信人的博客-CSDN博客


容器如同一台没有显示器的电脑,如何查看容器里的东西,又如何在容器里执行命令呢?这可以利用docker exec来实现,如图1-15所示。

通过docker exec就可以执行容器里的命令了。

在容器里执行指定的命令

语法:

docker exec 容器名 命令

步骤1:在容器db里执行ip a | grep 'inet ' 命令。

##########实操验证##########
[root@vms100 ~]# docker exec db ip a | grep 'inet '
    inet 127.0.0.1/8 scope host lo
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
[root@vms100 ~]# 

如果容器里没有要执行的命令,就会出现报错。

##########实操验证##########
[root@vms100 ~]# docker exec db ifconfig
OCI runtime exec failed: exec failed: unable to start container process: exec: "ifconfig": executable file not found in $PATH: unknown
[root@vms100 ~]# 

如果想获取shell控制台的话,需要加上-it选项。

步骤2:获取容器里bash控制台。

##########实操验证##########
[root@vms100 ~]# docker exec -it db bash
root@b1fff2458132:/# 
root@b1fff2458132:/# 
root@b1fff2458132:/# exit
exit
[root@vms100 ~]# 

注意:有的镜像里不存在bash,可以使用sh替代。

物理机和容器互相拷贝文件

有时我们需要让物理机和容器之间互相拷贝一些文件,它们之间拷贝文件的语法如下。

docker cp /path/file 容器:/path2 把物理机的/path/file拷贝到容器里的/path2里
docker cp 容器:/path2/file /path/ 把容器里的/path2/file拷贝到物理机的/path里

步骤1:把物理机的/etc/hosts拷贝到容器的/opt里。

##########实操验证##########
[root@vms100 ~]# docker exec db ls /opt
[root@vms100 ~]# 
[root@vms100 ~]# docker cp /etc/hosts db:/opt
                             Successfully copied 2.05kB to db:/opt
[root@vms100 ~]# docker exec db ls /opt
hosts
[root@vms100 ~]# 

可以看到容器的/opt目录里原来是没有hosts文件的,现在已经拷贝进去了。

步骤2:把容器的/etc/passwd拷贝到物理机的/opt里。

##########实操验证##########
[root@vms100 ~]# ls /opt/
containerd  rh
[root@vms100 ~]# docker cp db:/etc/passwd /opt/
                                               Successfully copied 3.07kB to /opt/
[root@vms100 ~]# ls /opt/
containerd  passwd  rh
[root@vms100 ~]# 

可以看到物理机的/opt目录里原来是没有passwd文件的,现在已经拷贝过来了。

关闭、启动、重启容器

一般情况下在操作系统里重启某个服务,可以通过systemctl restart服务名来重启,容器里一般是没法使用systemctl命令的。如果要重启容器里的程序,直接重启容器就可以了。下面演示如何关闭、启动、重启容器。

步骤1:关闭、启动、重启容器。

##########实操验证##########
[root@vms100 ~]# docker ps -q
b1fff2458132
[root@vms100 ~]# docker stop db
db
[root@vms100 ~]# docker ps -q
[root@vms100 ~]# docker start db
db
[root@vms100 ~]# docker ps -q
b1fff2458132
[root@vms100 ~]# docker restart db
db
[root@vms100 ~]# docker ps -q
b1fff2458132
[root@vms100 ~]# 

步骤2:查看容器里运行的进程。

语法:

docker top 容器名

这个类似于任务管理器,可以查看到容器里正在运行的进程。

##########实操验证##########
[root@vms100 ~]# docker top db
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
polkitd             41342               41323               1                   11:26               ?                   00:00:00            mysqld
[root@vms100 ~]# 

查看容器里的输出

当容器没法正常运行的时候,我们需要查看容器里的输出来进行排错。如果要查看容器里的日志信息,可以通过如下命令进行查看。

docker logs 容器名

查看容器日志时,如果要持续显示日志内容,即只要容器内容更新,日志中就能立刻显示出来,可以使用“docker logs -f 容器名”命令,操作如下。

步骤1:查看容器日志输出。

##########实操验证##########
[root@vms100 ~]# docker logs db
Initializing database
2023-05-03T03:19:46.157887Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2023-05-03T03:19:46.312799Z 0 [Warning] InnoDB: New log files created, LSN=45790
2023-05-03T03:19:46.338833Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
... #省略其中的大量内容
2023-05-03T03:26:02.814635Z 0 [Note] Executing 'SELECT * FROM INFORMATION_SCHEMA.TABLES;' to get a list of tables using the deprecated partition engine. You may use the startup option '--disable-partition-engine-check' to skip this check. 
2023-05-03T03:26:02.814638Z 0 [Note] Beginning of list of non-natively partitioned tables
2023-05-03T03:26:02.823602Z 0 [Note] End of list of non-natively partitioned tables
[root@vms100 ~]# 

如果要查看容器的属性,可以通过“docker inspect 容器名”来实现。

步骤2:查看容器db的属性。

##########实操验证##########
[root@vms100 ~]# docker inspect db
[
    {
        "Id": "b1fff2458132d47eb89958600445dce3942071ba638f7d5d0c6cb0cd0c7b6f08",
        "Created": "2023-05-03T03:19:45.765381166Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "mysqld"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 41342,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2023-05-03T03:26:02.458135184Z",
            "FinishedAt": "2023-05-03T03:26:02.051540248Z"
        },
        "Image": "sha256:9e64176cd8a206f88336506fe52cd8f87423147dc197d0250175dddc39465e90",
        "ResolvConfPath": "/var/lib/docker/containers/b1fff2458132d47eb89958600445dce3942071ba638f7d5d0c6cb0cd0c7b6f08/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/b1fff2458132d47eb89958600445dce3942071ba638f7d5d0c6cb0cd0c7b6f08/hostname",
        "HostsPath": "/var/lib/docker/containers/b1fff2458132d47eb89958600445dce3942071ba638f7d5d0c6cb0cd0c7b6f08/hosts",
        "LogPath": "/var/lib/docker/containers/b1fff2458132d47eb89958600445dce3942071ba638f7d5d0c6cb0cd0c7b6f08/b1fff2458132d47eb89958600445dce3942071ba638f7d5d0c6cb0cd0c7b6f08-json.log",
        "Name": "/db",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "always",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                54,
                185
            ],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "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": false,
            "PidsLimit": null,
            "Ulimits": null,
            "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"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/2bdbb486ed87a51450b7d7ab356d5d137285623495ea36c083c233c1549048fb-init/diff:/var/lib/docker/overlay2/e2bd254108d4be1c214cb4c4d4f54e09f5ba9d2f878fab2c0ec8d35658ecabe7/diff:/var/lib/docker/overlay2/cbbb70bf8f6a80cfa3e52ce8a3fac6609e07147ff8f5f1d5ff8eeba4a1ca6114/diff:/var/lib/docker/overlay2/1c980ec9e79968c392c20a77818ad66cb0632ba555d857dc282e7ff88b23a430/diff:/var/lib/docker/overlay2/afbb53c5b5d1b58f6014fa7c39e200c2fe4c77f1149347fd96008fac7e4ffecb/diff:/var/lib/docker/overlay2/3bb52f39959e2e49fb8ec139365eab13e64418b05fe873b428bc718e562c0d04/diff:/var/lib/docker/overlay2/70fbdb12349c7b0e7bf812edb79b83570be349eb168a9746e664da5a26d1ea3a/diff:/var/lib/docker/overlay2/ebffc7c353c581b9d75c69b105ddcaca2379b3312522339cc8f46b614e0d3787/diff:/var/lib/docker/overlay2/42717b05fc08c3827da977e200965dec44f4eece4f309ff36e0a4f64bc08442e/diff:/var/lib/docker/overlay2/e0ffac8f8d872dff032b3e02ca3063e2d18b241b3c1d126fcc918e4bd1ca84b1/diff:/var/lib/docker/overlay2/d5dc3a9249255c9d42c0e5235fee07fa211172657d69ff9a80cc5e09d068811e/diff:/var/lib/docker/overlay2/5449c9e57d4aa616794cd3ea229264ff5a3ec0232b5e9ab2ecccb36d35d69d93/diff",
                "MergedDir": "/var/lib/docker/overlay2/2bdbb486ed87a51450b7d7ab356d5d137285623495ea36c083c233c1549048fb/merged",
                "UpperDir": "/var/lib/docker/overlay2/2bdbb486ed87a51450b7d7ab356d5d137285623495ea36c083c233c1549048fb/diff",
                "WorkDir": "/var/lib/docker/overlay2/2bdbb486ed87a51450b7d7ab356d5d137285623495ea36c083c233c1549048fb/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "volume",
                "Name": "59e13d8a98549e71403c55dfb3653ddfdd325cb1e79af8485962dc110219beab",
                "Source": "/var/lib/docker/volumes/59e13d8a98549e71403c55dfb3653ddfdd325cb1e79af8485962dc110219beab/_data",
                "Destination": "/var/lib/mysql",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],
        "Config": {
            "Hostname": "b1fff2458132",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "3306/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "MYSQL_ROOT_PASSWORD=redhat",
                "MYSQL_DATABASE=blog",
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "GOSU_VERSION=1.7",
                "MYSQL_MAJOR=5.7",
                "MYSQL_VERSION=5.7.18-1debian8"
            ],
            "Cmd": [
                "mysqld"
            ],
            "Image": "hub.c.163.com/library/mysql",
            "Volumes": {
                "/var/lib/mysql": {}
            },
            "WorkingDir": "",
            "Entrypoint": [
                "docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "1c5900ee97fec43fde00cd3c90dd687c7aac3e41aa49b50675655750578ead17",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "3306/tcp": null
            },
            "SandboxKey": "/var/run/docker/netns/1c5900ee97fe",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "963e65b29c78971e86188648db68ba2edf33ac3a7177942a59693ccc0cf58c2b",
            "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,
                    "NetworkID": "3cd11d1bdf6950ae11dec919c8f9fdb20423180a976a04cc36368bc3376be4bf",
                    "EndpointID": "963e65b29c78971e86188648db68ba2edf33ac3a7177942a59693ccc0cf58c2b",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]
[root@vms100 ~]# 

在这个输出里,可以查看到容器的各种信息,比如数据卷、网络信息等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值