Skip to content

Docker容器命令

1. docker run命令

格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 启动容器
OPTIONS说明(常用):
--name="容器新名字" 为容器指定一个名称;
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
-i以交互模式运行容器,通常与-t同时使用
-t为容器重新分配一个伪输入终端,通常与-i同时使用;也即启动交互式容器(前台有伪终端,等待交互)
-P: 随机端口映射,大写P;
-p: 指定端口映射,小写p,格式为hostPort:containerPort, 比如-p 8080:80 对外访问8080端口,内部暴露出去的端口为80;

sh
# 使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
[jack@hadoop104 ~]$ sudo docker run -it ubuntu /bin/bash 
root@661c8c5766e5:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
# 如需退出,使用exit即可
root@661c8c5766e5:/# exit
exit
[jack@hadoop104 ~]$

退出容器

  1. 直接退出容器:输入exit回车即可
  2. 容器不停止退出: 使用快捷键ctrl+P+Q即可

1.1 启动守护式容器

sh
[root@hadoop104 ~]# docker run -d -p 8080:8080 --name tomcat80 tomcat
b859f41f981606e7ef1e1b02445858dbeb5b1e85ffc1e36770e2bfa6159f8124
[root@hadoop104 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED         STATUS         PORTS                                       NAMES
b859f41f9816   tomcat    "catalina.sh run"   4 seconds ago   Up 3 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   tomcat80
# 但是后台运行ubuntu时,会发现启动后马上退出
[root@hadoop104 ~]# docker run -d  --name ubuntu ubuntu
a12982244c800b3a7612412da26f042107ccacca0cc004394f41c2f0df5e0873
[root@hadoop104 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED         STATUS         PORTS                                       NAMES
b859f41f9816   tomcat    "catalina.sh run"   4 minutes ago   Up 4 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   tomcat80

Docker容器后台运行,就必须有一个前台进程(比如运行top,tail),否则会自动退出的。这个是Docker的机制设计的问题,所以最佳的解决方案是,将你要运行的程序以前台进程的形式运行, 比如ubuntu执行交互模式命令就不会退出进程。

2. docker ps命令

格式:docker ps [OPTIONS] 列出当前所有正在运行的容器
OPTIONS说明(常用):
-a :列出当前所有正在运行的容器+历史上运行过的。
-l :显示最近创建的容器。
-n:显示最近n个创建的容器。
-q :静默模式,只显示容器编号。
--no-trunc :不截断输出。

sh
[root@hadoop104 ~]#  docker run --name tomcat -p 8080:8080 -d tomcat
fa0a57589dff1cb683d150220c9b4d9fde58073b5c4e79a27a95824dcea8b935
[root@hadoop104 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED         STATUS         PORTS                                       NAMES
fa0a57589dff   tomcat    "catalina.sh run"   4 seconds ago   Up 3 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   tomcat

3. docker start命令

格式:docker start 容器ID或者容器名 启动容器

sh
[root@hadoop104 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED          STATUS          PORTS                                       NAMES
43a8e5ae0118   ubuntu    "/bin/bash"         14 minutes ago   Up 14 minutes                                               busy_cerf
fa0a57589dff   tomcat    "catalina.sh run"   23 minutes ago   Up 23 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   tomcat
[root@hadoop104 ~]# docker kill fa0a57589dff
fa0a57589dff
[root@hadoop104 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
43a8e5ae0118   ubuntu    "/bin/bash"   14 minutes ago   Up 14 minutes             busy_cerf
[root@hadoop104 ~]# docker start fa0a57589dff
fa0a57589dff
[root@hadoop104 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED          STATUS          PORTS                                       NAMES
43a8e5ae0118   ubuntu    "/bin/bash"         15 minutes ago   Up 15 minutes                                               busy_cerf
fa0a57589dff   tomcat    "catalina.sh run"   24 minutes ago   Up 2 seconds    0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   tomcat

4. docker restart命令

格式:docker restart 容器ID或者容器名 重启容器

sh
[root@hadoop104 ~]# docker restart fa0a57589dff
fa0a57589dff
[root@hadoop104 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED          STATUS          PORTS                                       NAMES
43a8e5ae0118   ubuntu    "/bin/bash"         16 minutes ago   Up 16 minutes                                               busy_cerf
fa0a57589dff   tomcat    "catalina.sh run"   25 minutes ago   Up 3 seconds    0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   tomcat

可以看到tomcat被重启了。

5. docker stop命令

格式:docker stop 容器ID或者容器名 停止容器

sh
[root@hadoop104 ~]# docker stop fa0a57589dff
fa0a57589dff
[root@hadoop104 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
43a8e5ae0118   ubuntu    "/bin/bash"   17 minutes ago   Up 17 minutes             busy_cerf

6. docker kill命令

格式:docker kill 容器ID或者容器名 强制停止容器

sh
# 停止ubuntu容器,由于启动没有指定容器名称,busy_cerf为Docker随机生成的名字
[root@hadoop104 ~]# docker kill busy_cerf
busy_cerf
[root@hadoop104 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

7. docker rm命令

格式:docker rm 容器ID 删除已停止的容器
如果一次性删除多个容器, 有两种方式:

  • docker rm -f $(docker ps -a -q)
  • docker ps -a -q | xargs docker rm
sh
# 清空已经停止的容器,生产上面慎用
[root@hadoop104 ~]# docker rm -f $(docker ps -q -a)
5bf1ae2adb70
06e82da29ff9
0dfd8ec14717
43a8e5ae0118
f08ec6d92d9b
2aa01ed8f0e1
e31de493c48f
a379947215b9
b4ad63650fdc
fa0a57589dff
a74a08db4849
f732a04696d1
f46368af3f47
675f8261f4a4
7516e9febcb2
87c9590bf0ec
14595fefc0b6
92119b938e0f
6f9e0eb8bffd
661c8c5766e5
01effec270f5
06ee3502e53d
3521443f6ffd
a3a239208eb3

8. docker logs命令

格式:docker logs -f -t --tail 容器ID 查看容器日志

9. docker top命令

格式:docker top 容器ID 查看容器内运行的进程

sh
[root@hadoop104 ~]# docker top b859f41f9816
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                41620               41598               0                   17:36               ?                   00:00:09            /opt/java/openjdk/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED --enable-native-access=ALL-UNNAMED -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start

10. docker inspect命令

格式:docker inspect 容器ID 查看容器内部细节

sh
[root@hadoop104 ~]# docker inspect b859f41f9816
[
    {
        "Id": "b859f41f981606e7ef1e1b02445858dbeb5b1e85ffc1e36770e2bfa6159f8124",
        "Created": "2024-10-20T09:36:07.871496676Z",
        "Path": "catalina.sh",
        "Args": [
            "run"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 41620,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2024-10-20T09:36:08.267995403Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:0bcf1082c8a095b7f862a2f6e19c07036dab2fc57506d5ae9f20cfc66e2106f4",
        "ResolvConfPath": "/var/lib/docker/containers/b859f41f981606e7ef1e1b02445858dbeb5b1e85ffc1e36770e2bfa6159f8124/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/b859f41f981606e7ef1e1b02445858dbeb5b1e85ffc1e36770e2bfa6159f8124/hostname",
        "HostsPath": "/var/lib/docker/containers/b859f41f981606e7ef1e1b02445858dbeb5b1e85ffc1e36770e2bfa6159f8124/hosts",
        "LogPath": "/var/lib/docker/containers/b859f41f981606e7ef1e1b02445858dbeb5b1e85ffc1e36770e2bfa6159f8124/b859f41f981606e7ef1e1b02445858dbeb5b1e85ffc1e36770e2bfa6159f8124-json.log",
        "Name": "/tomcat80",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "bridge",
            "PortBindings": {
                "8080/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "8080"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                36,
                149
            ],
            "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": [],
            "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": "/var/lib/docker/overlay2/acee9045d8fc92626d7a090e605e1f2fc14ca96581578d3f348df8f15f39fe8c-init/diff:/var/lib/docker/overlay2/d22b82e4e254af411bcd5ca18ed245408326f2b8f0bb4ef5255e5b94a92b887a/diff:/var/lib/docker/overlay2/d4709eaa6146103af13c4267ab5566d5ba70d773b4dddd6dcec5e4f2ff8246a0/diff:/var/lib/docker/overlay2/859d2917cb6877004f5491ac7e5cd17e0b1349ed22c758e0035206a3654ba3e3/diff:/var/lib/docker/overlay2/da525f52209ae8b77906df68d35b38469ac73a6e2161cbaf872c109f1304288b/diff:/var/lib/docker/overlay2/27155cf114ddbcd5e0beaba705a7730f87bceed59b9a4a2d4f95c874ab14add6/diff:/var/lib/docker/overlay2/82813ccbd75f81ae57b7b799d654cd9de8c5a44f59ed9d07f11911ff101ea169/diff:/var/lib/docker/overlay2/f596cee1597b56fc92aa72578bb83fb3d63daa812e937e5d481f65a46738b892/diff:/var/lib/docker/overlay2/da818fcb23ac32eb572b9fae313b695781dd16ddd390c2b10d636f0994511346/diff:/var/lib/docker/overlay2/0989664ad566807c6b2eee2d3362f1253cdc3da302b0679906751c4faf02ae60/diff",
                "MergedDir": "/var/lib/docker/overlay2/acee9045d8fc92626d7a090e605e1f2fc14ca96581578d3f348df8f15f39fe8c/merged",
                "UpperDir": "/var/lib/docker/overlay2/acee9045d8fc92626d7a090e605e1f2fc14ca96581578d3f348df8f15f39fe8c/diff",
                "WorkDir": "/var/lib/docker/overlay2/acee9045d8fc92626d7a090e605e1f2fc14ca96581578d3f348df8f15f39fe8c/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "b859f41f9816",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "8080/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/tomcat/bin:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "JAVA_HOME=/opt/java/openjdk",
                "LANG=en_US.UTF-8",
                "LANGUAGE=en_US:en",
                "LC_ALL=en_US.UTF-8",
                "JAVA_VERSION=jdk-21.0.4+7",
                "CATALINA_HOME=/usr/local/tomcat",
                "TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib",
                "LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib",
                "GPG_KEYS=48F8E69F6390C9F25CFEDCD268248959359E722B A9C5DF4D22E99998D9875A5110C01C5A2F6059E7",
                "TOMCAT_MAJOR=11",
                "TOMCAT_VERSION=11.0.0",
                "TOMCAT_SHA512=f23c533f257725cd673eb39423459799b6647e6fa9dc14a0b252cb7186935870a36a657741f72578935a4b52330e128e15372fb6bb678a7fd26ae942710a1f1e"
            ],
            "Cmd": [
                "catalina.sh",
                "run"
            ],
            "Image": "tomcat",
            "Volumes": null,
            "WorkingDir": "/usr/local/tomcat",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.opencontainers.image.ref.name": "ubuntu",
                "org.opencontainers.image.version": "24.04"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "1c6e2d49c534dd17b6f1049d9a0d5efdb97d28a5cb4067d95f381f32a006fe4a",
            "SandboxKey": "/var/run/docker/netns/1c6e2d49c534",
            "Ports": {
                "8080/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8080"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "8080"
                    }
                ]
            },
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "f84725b558b6bbd0d4b6a6d77529de98f1f19f05f10c323411600096839d1db9",
            "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": "969c3bf150e4d91211fe63046b8913703d077cee8b2167c384eb43d9e4f61a7d",
                    "EndpointID": "f84725b558b6bbd0d4b6a6d77529de98f1f19f05f10c323411600096839d1db9",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DriverOpts": null,
                    "DNSNames": null
                }
            }
        }
    }
]

11. docker exec命令

格式:docker exec -it 容器ID bashShell 进入正在运行的容器并以命令行交互

sh
[root@hadoop104 ~]# docker exec -it b859f41f9816 /bin/bash
root@b859f41f9816:/usr/local/tomcat# java -version
openjdk version "21.0.4" 2024-07-16 LTS
OpenJDK Runtime Environment Temurin-21.0.4+7 (build 21.0.4+7-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.4+7 (build 21.0.4+7-LTS, mixed mode, sharing)

12. docker attach命令

格式:docker attach 容器ID 进入正在运行的容器并以命令行交互

sh
[root@hadoop104 ~]# docker run -it ubuntu  /bin/bash
root@7ff71fb0ec7e:/# [root@hadoop104 ~]# 
[root@hadoop104 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
7ff71fb0ec7e   ubuntu    "/bin/bash"   9 seconds ago   Up 8 seconds             infallible_herschel
[root@hadoop104 ~]# docker attach 7ff71fb0ec7e
root@7ff71fb0ec7e:/# date
Sun Oct 20 10:08:31 UTC 2024
root@7ff71fb0ec7e:/# exit
exit
[root@hadoop104 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

attach和exec命令的区别

  • exec命令:是在容器中打开新的终端,并且可以启动新的进程。
  • attach命令:直接进入容器启动命令的终端,不会启动新的进程。
    推荐使用exec命令,因为退出终端不会导致容器的停止。

13. docker cp命令

格式:docker cp 容器ID:容器内路径 目的主机路径 将容器内拷贝文件到主机上

sh
# 拷贝日志用来分析
[root@hadoop104 ~]# docker cp a2e728a2f60e:/usr/local/tomcat/logs /tmp/tomcat_logs/
                                               Successfully copied 10.2kB to /tmp/tomcat_logs/

14. docker导入导出命令

格式:docker export 容器ID > 文件名.tar 导出容器的内容流作为一个tar归档文件
格式:cat 文件名.tar | docker import -镜像用户/镜像名:镜像版本号 将镜像tar包导入为镜像中

sh
[root@hadoop104 ~]# docker export a2e728a2f60e > abcd.tar
[root@hadoop104 ~]# ll
总用量 460584
-rw-r--r--. 1 root root 471633920 10月 20 18:40 abcd.tar
[root@hadoop104 ~]# cat abcd.tar | docker import - jack/bak_tomcat:10
sha256:21bcb0153c1053c00770d2a84a259c23a55d78dfc104044024b9e3b6d947d340
[root@hadoop104 ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED          SIZE
jack/bak_tomcat   10        21bcb0153c10   11 seconds ago   466MB
ubuntu            latest    59ab366372d5   9 days ago       78.1MB
tomcat            latest    0bcf1082c8a0   10 days ago      465MB
redis             latest    f02a7f566928   2 weeks ago      117MB
nginx             latest    3b25b682ea82   2 weeks ago      192MB
redmine           latest    4c3c82c1166d   4 months ago     633MB
mysql             5.7       5107333e08a8   10 months ago    501MB
hello-world       latest    d2c94e258dcb   17 months ago    13.3kB