Docker命令入门
1. 使用容器运行 Nginx 应用
1.1 使用 docker run 命令运行 Nginx 应用
1.1.1 观察下载容器镜像过程
查找本地容器镜像文件
执行命令过程一:下载容器镜像
$ docker run -d nginx:latestUnable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
b3407f3b5b5b: Pull complete
a3bfeb063ded: Pull complete
10d3f5dcba63: Pull complete
6d01b3c42c10: Pull complete
ecab78f9d45d: Pull complete
7996b9ca9891: Pull complete
5850200e50af: Pull complete
Digest: sha256:84ec966e61a8c7846f509da7eb081c55c1d56817448728924a87ab32f12a72fb
Status: Downloaded newer image for nginx:latest
bfb33ebe75bc65f75c569053e8400b82a0a729ddc48dd017716cd16dad81bb0a
命令解释:
docker run:启动一个容器-d:把容器镜像中需要执行的命令以 daemon(守护进程)的方式运行nginx:应用容器镜像的名称,通常表示该镜像为某一个软件latest:表示上述容器镜像的版本,表示最新版本,用户可自定义其标识,例如v1或v2等
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bfb33ebe75bc nginx:latest "/docker-entrypoint.…" 50 seconds ago Up 49 seconds 80/tcp condescending_shamir
命令解释:
docker ps类似于 Linux 系统的 ps 命令,查看正在运行的容器,如果想查看没有运行的容器,需要在此命令后使用--all
输出内容解释:
- CONTAINERID 9834c8c18a7c
| 列名 | 值 | 说明 |
|---|---|---|
| CONTAINER ID | bfb33ebe75bc | 容器 ID |
| IMAGE | nginx:latest | 容器使用的镜像 |
| COMMAND | "/docker-entrypoint.…" | 容器中运行的命令 |
| CREATED | 50 seconds ago | 容器创建时间 |
| STATUS | Up 49 seconds | 容器状态 |
| PORTS | 80/tcp | 容器对外开放的端口 |
| NAMES | condescending_shamir | 容器名称 |
1.2 访问容器中运行的 Nginx 服务
1.2.1 确认容器 IP 地址
实际工作中不需要此步操作。
# 说明
# 使用容器 ID 的时候,如果容器 ID 的部分已经可以唯一标识该容器,则可以使用 ID 的子集
# 例如:docker inspect bfb3$ docker inspect bfb33ebe75bc"GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"IPAddress": "172.17.0.2", # 容器IP地址"IPPrefixLen": 16,"IPv6Gateway": "","MacAddress": "02:42:ac:11:00:02","Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"NetworkID": "d3de2fdbc30ee36a55c1431ef3ae4578392e552009f00b2019b4720735fe5a60","EndpointID": "d91f47c9f756ff22dc599a207164f2e9366bd0c530882ce0f08ae2278fb3d50c","Gateway": "172.17.0.1","IPAddress": "172.17.0.2", # 容器IP地址"IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:ac:11:00:02","DriverOpts": null}}}}
]
命令解释:
docker inspect:查看容器结构信息命令bfb33ebe75bc:容器 ID 号,使用这个 ID 号时,由于其较长,使用时能最短识别即可。
1.2.2 容器网络说明

# ip a s 命令也可以查询网卡
$ ifconfig# docker0 网桥,用于为容器提供桥接,转发到主机之外的网络
5: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group defaultlink/ether 02:42:d5:c3:d4:cc brd ff:ff:ff:ff:ff:ffinet 172.17.0.1/16 brd 172.17.255.255 scope global docker0valid_lft forever preferred_lft foreverinet6 fe80::42:d5ff:fec3:d4cc/64 scope linkvalid_lft forever preferred_lft forever# 与容器中的虚拟网络设备在同一个命名空间中,用于把容器中的网络连接到主机
9: veth393dece@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group defaultlink/ether 02:e3:11:58:54:0f brd ff:ff:ff:ff:ff:ff link-netnsid 0inet6 fe80::e3:11ff:fe58:540f/64 scope linkvalid_lft forever preferred_lft forever
1.2.3 使用 curl 命令访问
# 进入容器内部
$ docker exec -it bfb33ebe75bc /bin/sh# 访问 nginx
# curl http://172.17.0.2
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html># 退出容器
# exit
2. Docker 命令
2.1 Docker 命令获取帮助方法
$ docker -hFlag shorthand -h has been deprecated, use --help# 使用方法
Usage: docker [OPTIONS] COMMAND# 功能介绍
A self-sufficient runtime for containersCommon Commands:run Create and run a new container from an imageexec Execute a command in a running containerps List containersbuild Build an image from a Dockerfilebake Build from a filepull Download an image from a registrypush Upload an image to a registryimages List imageslogin Authenticate to a registrylogout Log out from a registrysearch Search Docker Hub for imagesversion Show the Docker version informationinfo Display system-wide information# 管理类命令
Management Commands:ai* Docker AI Agent - Ask Gordonbuilder Manage buildsbuildx* Docker Buildxcloud* Docker Cloudcompose* Docker Composecontainer Manage containerscontext Manage contextsdebug* Get a shell into any image or containerdesktop* Docker Desktop commandsextension* Manages Docker extensionsimage Manage imagesinit* Creates Docker-related starter files for your projectmanifest Manage Docker image manifests and manifest listsmcp* Docker MCP Pluginmodel* Docker Model Runner (EXPERIMENTAL)network Manage networksplugin Manage pluginssbom* View the packaged-based Software Bill Of Materials (SBOM) for an imagescout* Docker Scoutsystem Manage Dockertrust Manage trust on Docker imagesvolume Manage volumesSwarm Commands:swarm Manage Swarm# 未分组命令
Commands:attach Attach local standard input, output, and error streams to a running containercommit Create a new image from a container's changescp Copy files/folders between a container and the local filesystemcreate Create a new containerdiff Inspect changes to files or directories on a container's filesystemevents Get real time events from the serverexport Export a container's filesystem as a tar archivehistory Show the history of an imageimport Import the contents from a tarball to create a filesystem imageinspect Return low-level information on Docker objectskill Kill one or more running containersload Load an image from a tar archive or STDINlogs Fetch the logs of a containerpause Pause all processes within one or more containersport List port mappings or a specific mapping for the containerrename Rename a containerrestart Restart one or more containersrm Remove one or more containersrmi Remove one or more imagessave Save one or more images to a tar archive (streamed to STDOUT by default)start Start one or more stopped containersstats Display a live stream of container(s) resource usage statisticsstop Stop one or more running containerstag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGEtop Display the running processes of a containerunpause Unpause all processes within one or more containersupdate Update configuration of one or more containerswait Block until one or more containers stop, then print their exit codes# 全局选项
Global Options:--config string Location of client config files (default "/Users/yangyunhe/.docker")-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and defaultcontext set with "docker context use")-D, --debug Enable debug mode-H, --host list Daemon socket to connect to-l, --log-level string Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")--tls Use TLS; implied by --tlsverify--tlscacert string Trust certs signed only by this CA (default "/Users/yangyunhe/.docker/ca.pem")--tlscert string Path to TLS certificate file (default "/Users/yangyunhe/.docker/cert.pem")--tlskey string Path to TLS key file (default "/Users/yangyunhe/.docker/key.pem")--tlsverify Use TLS and verify the remote-v, --version Print version information and quitRun 'docker COMMAND --help' for more information on a command.For more help on how to use Docker, head to https://docs.docker.com/go/guides/
2.2 Docker官网提供的命令说明
网址链接:https://docs.docker.com/reference/cli/docker/
2.3 docker 命令应用
2.3.1 docker run
# docker run -i -t --name c1 centos:latest bash
[root@948f234e22a1 /]#
命令解释:
docker run:运行一个命令在容器中,命令是主体,没有命令容器就会消亡-i:交互式-t:提供终端--name c1:把将运行的容器命名为c1centos:latest:使用 centos 最新版本容器镜像bash:在容器中执行的命令
# 查看主机名
[root@948f234e22a1 /]## 查看网络信息
[root@948f234e22a1 /]# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
12: eth0@if13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group defaultlink/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft forever# 查看进程
[root@948f234e22a1 /]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 12036 2172 pts/0 Ss 09:58 0:00 bash
root 16 0.0 0.0 44652 1784 pts/0 R+ 10:02 0:00 ps aux# 查看用户
[root@948f234e22a1 /]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin# 查看目录
[root@948f234e22a1 /]# pwd
/
[root@948f234e22a1 /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr# 退出命令执行,观察容器运行情况
[root@948f234e22a1 /]# exit
2.3.2 docker ps
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
命令解释:
docker ps:查看正在运行的容器,本案例由于没有命令在容器中运行,因此容器被停止了,所以本次查看没有结果。
# -a, --all 可以查看正在运行的和停止运行的容器
$ docker ps --allCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
948f234e22a1 centos:latest "bash" 10 minutes ago Exited (0) 2 minutes ago c1
2.3.3 docker inspect
$ docker run -it --name c2 centos:latest bash
[root@9f2eea16da4c /]# # 操作说明
# 在上述提示符处按住 ctrl 键,再按 p 键与 q 键,可以退出交互式的容器,容器会处于运行状态。# 可以看到容器处于运行状态
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f2eea16da4c centos:latest "bash" 37 seconds ago Up 35 seconds c2# docker inpect 查看容器详细信息
$ docker inspect c2"Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"NetworkID": "d3de2fdbc30ee36a55c1431ef3ae4578392e552009f00b2019b4720735fe5a60","EndpointID": "d1a2b7609f2f73a6cac67229a4395eef293f695c0ac4fd6c9c9e6913c9c85c1c","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}}}}
]
2.3.4 docker exec
# docker exec -it c2 ls /root
anaconda-ks.cfg anaconda-post.log original-ks.cfg
命令解释:
docker exec:在容器外实现与容器交互执行某命令-it:交互式c2:正在运行的容器名称ls /root:在正在运行的容器中运行相关的命令
下面命令与上面命令执行效果一致:
$ docker exec c2 ls /root
anaconda-ks.cfg
anaconda-post.log
original-ks.cfg
2.3.5 docker attach
# 查看正在运行的容器
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f2eea16da4c centos:latest "bash" 13 minutes ago Up 13 minutes c2# docker attach 类似于ssh命令,可以进入到容器中
$ docker attach c2
[root@9f2eea16da4c /]#
说明:docker attach 退出容器时,如不需要容器再运行,可直接使用 exit 退出;
如需要容器继续运行,可使用 ctrl+p+q
2.3.6 docker stop
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f2eea16da4c centos:latest "bash" 22 minutes ago Up 22 minutes c2$ docker stop 9f2eea
9f2eea$ docker ps --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f2eea16da4c centos:latest "bash" 22 minutes ago Exited (137) 4 seconds ago c2
2.3.7 docker start
$ docker ps --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f2eea16da4c centos:latest "bash" 22 minutes ago Exited (137) 4 seconds ago c2$ docker start 9f2eea
9f2eea$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f2eea16da4c centos:latest "bash" 24 minutes ago Up 16 seconds c2
2.3.8 docker top
在 Docker Host 查看容器中运行的进程信息
$ docker top c2
UID PID PPID C STIME TTY TIME CMD
root 69040 69020 0 18:37 pts/0 00:00:00 bash
命令解释:
docker top 查看 container 内进程信息,指在 docker host 上查看,与 docker exec -it c2 ps -ef 不同。
输出说明:
- UID 容器中运行的命令用户ID
- PID 容器中运行的命令PID
- PPID 容器中运行的命令父PID,由于PPID是一个容器,此可指为容器在 Docker Host 中进程 ID
- C 占用CPU百分比
- STIME 启动时间
- TTY 运行所在的终端
- TIME 运行时间
- CMD 执行的命令
2.3.9 docker rm
如果容器已停止,使用此命令可以直接删除;如果容器处于运行状态,则需要提前关闭容器后,再删除容器。下面演示容器正在运行关闭后删除的方法。
2.3.9.1 指定删除容器
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f2eea16da4c centos:latest "bash" 2 days ago Up 3 seconds c2$ docker stop c2
# 或
$ docker stop 9f2eea16da4c$ docker rm c2
# 或
$ docker rm 9f2eea16da4c
2.3.9.2 批量删除容器
$ docker ps --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
948f234e22a1 centos:latest "bash" 2 days ago Exited (0) 2 days ago c1
01cb3e01273c centos:latest "bash" 2 days ago Exited (0) 2 days ago systemimage1
46d950fdfb33 nginx:latest "/docker-ent..." 2 days ago Exited (0) 2 days ago upbeat_goldberg$ docker ps --all | awk '{if (NR>=2){print $1}}' | xargs docker rm