Docker的常用命令

    技术2026-08-05  20

    Docker的常用命令

    帮助命令

    docker version #显示docker的版本信息 docker info #显示docker的系统信息,包括镜像和容器的数量 docker 命令 --help #万能命令 帮助命令

    帮助文档的地址:https://docs.docker.com/reference/

    镜像命令

    docker images 查看所有本地的主机上的镜像

    [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest bf756fb1ae65 6 months ago 13.3kB #解释 REPOSITORY 镜像的仓库源 TAG 镜像的标签 IMAGE ID 镜像的id CREATED 镜像的创建时间 SIZE 镜像的大小 #可选项 -a, --all #列出所有的镜像 -q, --quiet #只显示镜像的id

    docker search 搜索镜像

    [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 9699 [OK] mariadb MariaDB is a community-developed fork of MyS… 3530 [OK] #可选项,通过收藏来过滤 [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker search mysql --filter=STARS=3000 NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 9699 [OK] mariadb MariaDB is a community-developed fork of MyS… 3530 [OK]

    docker pull 下载镜像

    #下载镜像 docker pull 镜像名[:tag] [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker pull mysql Using default tag: latest #如果不写tag,默认就是latest latest: Pulling from library/mysql 8559a31e96f4: Pull complete #分层下载,是docker images的核心 联合文件系统 d51ce1c2e575: Pull complete c2344adc4858: Pull complete fcf3ceff18fc: Pull complete 16da0c38dc5b: Pull complete b905d1797e97: Pull complete 4b50d1c6b05c: Pull complete c75914a65ca2: Pull complete 1ae8042bdd09: Pull complete 453ac13c00a3: Pull complete 9e680cd72f08: Pull complete a6b5dc864b6c: Pull complete Digest: sha256:8b7b328a7ff6de46ef96bcf83af048cb00a1c86282bfca0cb119c84568b4caf6 #签名信息 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest #真实地址 docker pull mysql等价于docker pull docker.io/library/mysql:latest #指定版本下载 [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker pull mysql:5.7 5.7: Pulling from library/mysql 8559a31e96f4: Already exists d51ce1c2e575: Already exists c2344adc4858: Already exists fcf3ceff18fc: Already exists 16da0c38dc5b: Already exists b905d1797e97: Already exists 4b50d1c6b05c: Already exists d85174a87144: Pull complete a4ad33703fa8: Pull complete f7a5433ce20d: Pull complete 3dcd2a278b4a: Pull complete Digest: sha256:32f9d9a069f7a735e28fd44ea944d53c61f990ba71460c5c183e610854ca4854 Status: Downloaded newer image for mysql:5.7 docker.io/library/mysql:5.7

    docker rmi 删除镜像

    [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker rmi -f 镜像的id #删除指定的镜像 [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker rmi -f 镜像的id 镜像的id 镜像的id #删除多个镜像 [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker rmi -f $(docker images -aq) #删除全部的镜像

    容器命令

    说明:我们有了镜像才可以创建容器,我们下载一个centos镜像来测试命令

    docker pull centos

    新建容器并启动

    docker run [可选参数] image #参数说明 --name="Name" 容器名字 类似tomcat01 tomcat02用于区分容器 -d 后台方式运行 -it 使用交互方式运行,进入容器查看内容 -p 指定容器的端口 -p 8080:8080 -p ip:主机端口:容器端口 -p 主机端口:容器端口(常用) -p 容器端口 容器端口 -P 随机指定端口 #测试,启动并进入容器 [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker run -it centos /bin/bash [root@319a47cdbcb5 /]# ls #查看容器内的centos,基础版本,很多命令都是不完善的 bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr #从容器中退回主机 [root@319a47cdbcb5 /]# exit exit

    列出所有运行的容器

    #docker ps命令 #列出当前正在运行的容器 -a #列出当前正在运行的容器 + 历史运行过的容器 -n=? #显示最近创建的容器 -q #只显示容器的编号 [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 319a47cdbcb5 centos "/bin/bash" 5 minutes ago Exited (0) 2 minutes ago distracted_merkle 50c8f2fefe42 bf756fb1ae65 "/hello" 2 hours ago Exited (0) 2 hours ago modest_noyce 38f8a163663a bf756fb1ae65 "/hello" 14 hours ago Exited (0) 14 hours ago loving_mclaren

    退出容器

    exit #直接容器停止并退出 Ctrl + P + Q #容器不停止并退出

    删除容器

    docker rm 容器id #删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -f docker rm -f $(docker ps -aq) #删除所有的容器 docker ps -a -q|xargs docker rm #删除所有的容器

    启动和停止容器的操作

    docker start 容器id #启动容器 docker restart 容器id #重启容器 docker stop 容器id #停止当前正在运行的容器 docker kill 容器id #强制停止当前容器

    常用的其他命令

    后台启动容器

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

    查看日志命令

    docker logs -f -t --tail 容器,没有日志 #自己编写一段shell脚本 [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker run -d centos /bin/sh -c "while true; do echo xmx; sleep 1;done" c1fc3a5b0b5bb9a2d1b24e5c3d1b1f9b81a46faf3151737a0d1c10af53630988 # [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c1fc3a5b0b5b centos "/bin/sh -c 'while t…" 5 seconds ago Up 4 seconds pensive_joliot 39cd59e590f8 centos "/bin/bash" 9 minutes ago Up 9 minutes charming_aryabhata #显示日志 -tf #要显示日志 --tail number #要显示日志的条数 [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker logs -t -f --tail 10 c1fc3a5b0b5b 2020-07-04T17:18:38.251707034Z xmx 2020-07-04T17:18:39.253835936Z xmx 2020-07-04T17:18:40.255927185Z xmx 2020-07-04T17:18:41.258150701Z xmx 2020-07-04T17:18:42.260208500Z xmx 2020-07-04T17:18:43.262449202Z xmx 2020-07-04T17:18:44.264598399Z xmx 2020-07-04T17:18:45.266726894Z xmx 2020-07-04T17:18:46.268773629Z xmx 2020-07-04T17:18:47.270822429Z xmx 2020-07-04T17:18:48.272899937Z xmx 2020-07-04T17:18:49.274992167Z xmx 2020-07-04T17:18:50.277027176Z xmx 2020-07-04T17:18:51.279165639Z xmx 2020-07-04T17:18:52.281279433Z xmx 2020-07-04T17:18:53.283339973Z xmx 2020-07-04T17:18:54.285376048Z xmx

    查看容器中的进程信息

    #top命令 docker top 容器id [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker top c1fc3a5b0b5b UID PID PPID C STIME TTY TIME CMD root 5761 5745 0 01:12 ? 00:00:00 /bin/sh -c while true; do echo xmx; sleep 1;done root 6423 5761 0 01:22 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1

    查看镜像的元数据

    #命令 docker inspect 容器id #测试 [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker inspect c1fc3a5b0b5b [ { "Id": "c1fc3a5b0b5bb9a2d1b24e5c3d1b1f9b81a46faf3151737a0d1c10af53630988", "Created": "2020-07-04T17:12:42.229565063Z", "Path": "/bin/sh", "Args": [ "-c", "while true; do echo xmx; sleep 1;done" ], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 5761, "ExitCode": 0, "Error": "", "StartedAt": "2020-07-04T17:12:42.507513222Z", "FinishedAt": "0001-01-01T00:00:00Z" }, "Image": "sha256:831691599b88ad6cc2a4abbd0e89661a121aff14cfa289ad840fd3946f274f1f", "ResolvConfPath": "/var/lib/docker/containers/c1fc3a5b0b5bb9a2d1b24e5c3d1b1f9b81a46faf3151737a0d1c10af53630988/resolv.conf", "HostnamePath": "/var/lib/docker/containers/c1fc3a5b0b5bb9a2d1b24e5c3d1b1f9b81a46faf3151737a0d1c10af53630988/hostname", "HostsPath": "/var/lib/docker/containers/c1fc3a5b0b5bb9a2d1b24e5c3d1b1f9b81a46faf3151737a0d1c10af53630988/hosts", "LogPath": "/var/lib/docker/containers/c1fc3a5b0b5bb9a2d1b24e5c3d1b1f9b81a46faf3151737a0d1c10af53630988/c1fc3a5b0b5bb9a2d1b24e5c3d1b1f9b81a46faf3151737a0d1c10af53630988-json.log", "Name": "/pensive_joliot", "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, "Capabilities": null, "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/9ac15cb3f51c090f7997f3b3bb7bb0d99412364ecffc989fc0c976d8bfc5e937-init/diff:/var/lib/docker/overlay2/02756429550d30c14e9feb91f2294cd9e32282d2eb561f802481f62dcbf0ddd6/diff", "MergedDir": "/var/lib/docker/overlay2/9ac15cb3f51c090f7997f3b3bb7bb0d99412364ecffc989fc0c976d8bfc5e937/merged", "UpperDir": "/var/lib/docker/overlay2/9ac15cb3f51c090f7997f3b3bb7bb0d99412364ecffc989fc0c976d8bfc5e937/diff", "WorkDir": "/var/lib/docker/overlay2/9ac15cb3f51c090f7997f3b3bb7bb0d99412364ecffc989fc0c976d8bfc5e937/work" }, "Name": "overlay2" }, "Mounts": [], "Config": { "Hostname": "c1fc3a5b0b5b", "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 xmx; sleep 1;done" ], "Image": "centos", "Volumes": null, "WorkingDir": "", "Entrypoint": null, "OnBuild": null, "Labels": { "org.label-schema.build-date": "20200611", "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": "f86145e6893f31877c81f328b004fbd7202462a209683a35deb97cccbeddcf08", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": {}, "SandboxKey": "/var/run/docker/netns/f86145e6893f", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "83be2055d04e232fd60d3518fdf0b323f7f8d192192394de6e6b6a3fec3b15cc", "Gateway": "172.17.0.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "172.17.0.3", "IPPrefixLen": 16, "IPv6Gateway": "", "MacAddress": "02:42:ac:11:00:03", "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "1c2a18e67a4afd52ea52db417d05da7f3ecfc39ac8fa28376184b2eaf86057c0", "EndpointID": "83be2055d04e232fd60d3518fdf0b323f7f8d192192394de6e6b6a3fec3b15cc", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.3", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:03", "DriverOpts": null } } } } ]

    进入当前正在运行的容器

    #我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置 #命令 docker exec -it 容器id bashShell #测试 [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c1fc3a5b0b5b centos "/bin/sh -c 'while t…" 18 minutes ago Up 18 minutes pensive_joliot 39cd59e590f8 centos "/bin/bash" 27 minutes ago Up 27 minutes charming_aryabhata [root@iZ2zedtw714kk6kmn4p41qZ ~]# docker exec -it c1fc3a5b0b5b /bin/bash [root@c1fc3a5b0b5b /]# ls bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr [root@c1fc3a5b0b5b /]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 17:12 ? 00:00:00 /bin/sh -c while true; do echo xmx; sleep 1;done root 1129 0 0 17:31 pts/0 00:00:00 /bin/bash root 1188 1 0 17:32 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/ root 1189 1129 0 17:32 pts/0 00:00:00 ps -ef #方式二 docker attach 容器id #会正在执行当前的代码 #docker exec #进入容器后开启一个新的终端,可以在里面操作(常用) #docker attach #进入正在执行的终端,不会启动新的进程

    从容器内拷贝文件到主机上

    docker cp 容器id:容器内路径 目的主机路径 #进入docker容器内部 [root@iZ2zedtw714kk6kmn4p41qZ home]# docker attach c528a4afaade [root@c528a4afaade /]# ls bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr [root@c528a4afaade /]# cd /home [root@c528a4afaade home]# ls #在容器内新建一个文件 [root@c528a4afaade home]# touch test.java [root@c528a4afaade home]# exit exit [root@iZ2zedtw714kk6kmn4p41qZ home]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c528a4afaade centos "/bin/bash" 3 minutes ago Exited (0) 12 seconds ago busy_noether cd6be8a07eb4 centos "/bin/bash" 4 minutes ago Exited (127) 3 minutes ago stupefied_hellman 9740c281a773 centos "/bin/bash" 5 minutes ago Exited (127) 4 minutes ago bold_mirzakhani #将文件拷贝出来到主机上 [root@iZ2zedtw714kk6kmn4p41qZ home]# docker cp c528a4afaade:home/test.java /home [root@iZ2zedtw714kk6kmn4p41qZ home]# ls test.java #拷贝是一个手动过程,未来我们使用-v卷的技术,可以实现,自动同步 /home /home
    Processed: 0.010, SQL: 9