[Docker学习]四,其他常用命令,后台启动容器,查看日志,查看进程等

后台启动容器,不进入到容器

#docker run -d 镜像名centos

#docker run -d 镜像名centos
#问题:docker ps,发现centos停止了
#常见的坑,docker是容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
#nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

[root@iZwz9e60ytsp3m74u1cqhoZ /]# docker run -d centos
7ff3f0013851bb16f452432273bdb41a40547adb67869918b13a5245c113703c
[root@iZwz9e60ytsp3m74u1cqhoZ /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@iZwz9e60ytsp3m74u1cqhoZ /]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                      PORTS     NAMES
7ff3f0013851   centos    "/bin/bash"   12 seconds ago   Exited (0) 11 seconds ago             exciting_aryabhata
2bfc727f933c   centos    "/bin/bash"   3 minutes ago    Exited (0) 2 minutes ago              quirky_turing
[root@iZwz9e60ytsp3m74u1cqhoZ /]# 

查看日志命令 docker logs

docker logs
# docker logs -f -t --tail 5 33d06f2e15e7 #容器id没有日志

因为容器中没有日志,自己编写一段shell脚本

"while true: do echo testing; sleep 2; done"
#执行shell脚本
docker run -d centos /bin/sh -c "while true; do echo etesting; sleep 1; done"


[root@iZwz9e60ytsp3m74u1cqhoZ /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
a6ad27579a48   centos    "/bin/sh -c 'while t…"   11 seconds ago   Up 10 seconds             intelligent_banach

#再次查看日志
[root@iZwz9e60ytsp3m74u1cqhoZ /]# docker logs -f -t --tail 10 a6ad27579a48
2021-01-03T10:32:51.869503736Z etesting
2021-01-03T10:32:52.871768571Z etesting

显示日志 的参数 docker logs -f -t --tail 10 a6ad27579a48
-tf #-t显示的时候带上时间戳, -f动态显示
–tail number #要显示的日志条数

查看容器中的进程信息top( linux里面用ps)

docker top 容器id

[root@iZwz9e60ytsp3m74u1cqhoZ /]# docker top a6ad27579a48 
UID                 PID                 PPID                C                   STIME               TTY                 
root                2951                2931                0                   18:31               ?                              
root                3614                2951                0                   18:36               ?                            

查看容器内部的信息,查看镜像的元数据 inspect

#命令 docker inspect
[root@iZwz9e60ytsp3m74u1cqhoZ /]# docker inspect a6ad27579a48
[
    {
        "Id": "a6ad27579a4839ed5bfcd1c8f60661ac9ce834f8bedd96adc8c07667479bfad0",
        "Created": "2021-01-03T10:31:34.39709125Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true; do echo etesting; sleep 1; done"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 2951,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-01-03T10:31:34.703443547Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",
        "ResolvConfPath": "/var/lib/docker/containers/a6ad27579a4839ed5bfcd1c8f60661ac9ce834f8bedd96adc8c07667479bfad0/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/a6ad27579a4839ed5bfcd1c8f60661ac9ce834f8bedd96adc8c07667479bfad0/hostname",
        "HostsPath": "/var/lib/docker/containers/a6ad27579a4839ed5bfcd1c8f60661ac9ce834f8bedd96adc8c07667479bfad0/hosts",
        "LogPath": "/var/lib/docker/containers/a6ad27579a4839ed5bfcd1c8f60661ac9ce834f8bedd96adc8c07667479bfad0/a6ad27579a4839ed5bfcd1c8f60661ac9ce834f8bedd96adc8c07667479bfad0-json.log",
        "Name": "/intelligent_banach",
        "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": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "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",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "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/e9bdf7d9e2eacf74e33a4fef64122fea04a7bb36d588997e0b29f1d1a0109399-init/diff:/var/lib/docker/overlay2/54a9b186772b637a767106595ed2c8049ed249fdcf49b2b36b33932c6efd5aba/diff",
                "MergedDir": "/var/lib/docker/overlay2/e9bdf7d9e2eacf74e33a4fef64122fea04a7bb36d588997e0b29f1d1a0109399/merged",
                "UpperDir": "/var/lib/docker/overlay2/e9bdf7d9e2eacf74e33a4fef64122fea04a7bb36d588997e0b29f1d1a0109399/diff",
                "WorkDir": "/var/lib/docker/overlay2/e9bdf7d9e2eacf74e33a4fef64122fea04a7bb36d588997e0b29f1d1a0109399/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "a6ad27579a48",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "while true; do echo etesting; sleep 1; done"
            ],
            "Image": "centos",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20201204",
                "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": "7fd057a81aed122c0598dccf7fb3086da08da0d4988d2804fe809fa1b266b9c0",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/7fd057a81aed",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "232324f0d531520d3b54aa6188d6b12d82847582fc8552fcb998bd1a810a1607",
            "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": "020e8dae014a7cd1c96f3d17b91fe5fdc4fbb36d5cb3ca238b70b2ae5754ada0",
                    "EndpointID": "232324f0d531520d3b54aa6188d6b12d82847582fc8552fcb998bd1a810a1607",
                    "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
                }
            }
        }
    }
]

进入当前正在运行的容器

通常容器都是使用后台方式运行,这个时候需要进入容器,修改一些配置

命令 一docker exec -it 容器id /bin/bash

#docker exec -it 容器id /bin/bash

#测试
[root@iZwz9e60ytsp3m74u1cqhoZ /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
a6ad27579a48   centos    "/bin/sh -c 'while t…"   22 minutes ago   Up 22 minutes             intelligent_banach

[root@iZwz9e60ytsp3m74u1cqhoZ /]# docker exec -it a6ad27579a48 /bin/bash
[root@a6ad27579a48 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

[root@a6ad27579a48 /]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 10:31 ?        00:00:00 /bin/sh -c while true; do echo etesting; sleep 1; done
root      1385     0  0 10:54 pts/0    00:00:00 /bin/bash
root      1417     1  0 10:54 ?        00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
root      1418  1385  0 10:54 pts/0    00:00:00 ps -ef

进入容器的方式二,docker attach 容器id

docker attach 容器id
#这个attach 的方式会正在执行当前的代码

#对比docker exec 和 docker attach
#docker exec -it 容器id /bin/bash #进入容器后开启一个新的终端,可以在里面操作(常用)
#docker attach #进入容器执行的终端,不会启动新的进程

从容器中拷贝文件到外部主机上

docker cp 容器id:容器内路径 目的路径
docker cp 787f9ca47b95:/home/testInContainer.java /home

#测试
[root@iZwz9e60ytsp3m74u1cqhoZ home]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS              PORTS     NAMES
787f9ca47b95   centos    "/bin/bash"   About a minute ago   Up About a minute             frosty_keldysh
[root@iZwz9e60ytsp3m74u1cqhoZ home]# docker attach 787f9ca47b95
[root@787f9ca47b95 /]# cd /home
[root@787f9ca47b95 home]# ls
[root@787f9ca47b95 home]# touch testInContainer.java      #dockers容器内部新建文件
[root@787f9ca47b95 home]# ls
testInContainer.java
[root@787f9ca47b95 home]# exit
exit
[root@iZwz9e60ytsp3m74u1cqhoZ home]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@iZwz9e60ytsp3m74u1cqhoZ home]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                      PORTS     NAMES
787f9ca47b95   centos    "/bin/bash"   4 minutes ago   Exited (0) 20 seconds ago             frosty_keldysh

#docker里面的数据拷贝到主机上
[root@iZwz9e60ytsp3m74u1cqhoZ home]# docker cp 787f9ca47b95:/home/testInContainer.java /home
[root@iZwz9e60ytsp3m74u1cqhoZ home]# ls
itiffany.java  redis  testInContainer.java  www


docker stats 查看cpu的状态

小结

attach, 当前shell下attach 连接指定运行镜像

build 通过dockerfile定制镜像

commit 提交当前容器为新的镜像

cp 从容器中拷贝指定文件或者目录到主机中

create 创建一个新的容器,同run,但是不会启动容器

diff 查看容器变化

events 从docker服务获取容器实时时间

exec 在已经存在的容器上运行命令

export 导出容器的内容作为一个tar归档文件

history 展示一个镜像形成历史

images 理出系统当前镜像

import 从tar包中的内容创建一个新的文件系统映像

info 显示系统相关信息

inspect 查看容器详情信息

kill kill掉指定docker容器

load 一个tar 包中加载一个镜像,对应sava

login 注册或者登陆一个docker源服务器

logout 从当前docker registry退出

logs输出当前容器日志信息

port 查看映射端口对应的容器内部源端口

pause 暂停容器

ps 列出容器列表

pull 拉取指定镜像

push 推送指定镜像或者库镜像到docker源服务器

restart 重启运行的容器

rm 移除一个或者多个容器

rmi 移除一个或者多个镜像(需要没有容器使用镜像时删除,或者-f强制删除)

run 创建一个新的容器并且运行一个命令

save 保存一个镜像为tar包,跟load对应

search 在docker hub中搜索镜像

start 启动容器

stop 停止容器

tag 给源中镜像打标签

top 查看容器中运行的进程信息

unpause 取消暂停容器

version 查看docker的版本号

wait 截取容器停止时的退出状态值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值