docker run
该命令用于在新容器中运行 image,IMAGE
可以为 image 的名称或者 ID。
1
| docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
|
-p
--publish
映射指定端口;-P
--publish-all
映射容器暴露的所有端口到随机端口;-i
和 -t
两者常常配合使用前者开启 STDIN,后者分配一个 TTY。共同使用可以进入容器的 shell;退出时,ctrl+p
再 ctrl+q
,可以保持容器在后台运行不终止。--name
指定容器名称;-d
--detach
在后台运行 container,并输出容器的 ID;—-rm
容器停止后自动删除容器。
-p
参数映射端口有以下几种形式:
-p 80
映射容器的 TCP 80 端口到宿主机随机端口;-p 8080:80
映射容器的 TCP 80 端口到宿主机的 8080 端口;-p 127.0.0.1:8080:80
映射容器的 TCP 80 端口到宿主机的 8080 端口,并监听 127.0.0.1;-p 8080:80/udp
映射 UDP 端口;
举例说明:
1
| docker run -p 80:80 nginx
|
使用 nginx 镜像新建一个 container,在前台运行 nginx,将容器的 80 端口映射到宿主机的 80 端口。访问 http://localhost/
就能够看到 nginx 的欢迎页面,使用 ctrl+c
终止运行。
如果命令执行时本地不存在镜像,会直接从 Docker Hub 拉取镜像。
docker ps
列出容器。
-a
列出所有容器,不加该参数只会列出运行中的容器。-q
只列出容器 ID。--no-trunc
显示完整的容器信息,包括完整的 ID,运行的命令等;
docker start
启动一个或多个已经停止的容器。
1
| docker start [OPTIONS] CONTAINER [CONTAINER...]
|
docker rm
删除一个或者多个容器。默认情况下不能删除正在运行的容器。
1
| docker rm [OPTIONS] CONTAINER [CONTAINER...]
|
-f
强制删除容器(使用 SIGKILL),该参数可以删除正在运行的容器。
与 docker ps
组合删除所有容器的命令:
1
| docker rm $(docker ps -a)
|
docker attach
将本地 STDIN,STDOUT 和 STDERR 附加到正在运行的容器。
1
| docker attach [OPTIONS] CONTAINER
|
适用于连接在后台运行的容器的 shell 等。比如:
1
| docker run -it ubuntu bash
|
ctrl+p
再 ctrl+q
退出后,容器仍然在后台运行,需要再次进入容器 shell 的时候,就可以使用本命令。
docker logs
查看容器日志。
1
| docker logs [OPTIONS] CONTAINER
|
—-tail n
输出末尾 n 行,默认为 all,即输出日志全部内容。-f
同 tail 命令的 -f
参数,实时输出最新日志内容;-t
输出日志时添加时间戳。
docker stop
停止正在运行的一个或多个容器。发送 SIGTERM 信号给容器中的主进程,超过等待时间后会再发送 SIGKILL 信号。
1
| docker stop [OPTIONS] CONTAINER [CONTAINER...]
|
docker kill
杀掉正在运行的一个或多个容器。直接发送 SIGKILL 信号。
1
| docker kill [OPTIONS] CONTAINER [CONTAINER...]
|
docker top
查看容器中正在运行的进程。
1
| docker top CONTAINER [ps OPTIONS]
|
docker exec
在运行的容器中运行命令。
1
| docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
|
docker cp
在宿主机和 Docker 容器之间拷贝文件。
1
2
| docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
|
-
代表标准输入输出。
docker port
展示容器的所有端口映射或特定端口映射。
1
| docker port CONTAINER [PRIVATE_PORT[/PROTO]]
|
例如:
1
2
3
4
5
6
7
8
9
10
11
12
| $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b650456536c7 busybox:latest top 54 minutes ago Up 54 minutes 0.0.0.0:1234->9876/tcp, 0.0.0.0:4321->7890/tcp test
$ docker port test
7890/tcp -> 0.0.0.0:4321
9876/tcp -> 0.0.0.0:1234
$ docker port test 7890/tcp
0.0.0.0:4321
$ docker port test 7890/udp
2014/06/24 11:53:36 Error: No public port '7890/udp' published for test
$ docker port test 7890
0.0.0.0:4321
|
docker inspect
展示容器的底层信息。比如容器的 IP 地址,运行的命令等等。
1
| docker inspect [OPTIONS] NAME|ID [NAME|ID...]
|
docker stats
实时展示容器资源使用量,包括 CPU、内存、网络、磁盘等。
1
| docker stats [OPTIONS] [CONTAINER...]
|
结果:
1
2
3
4
5
6
| CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
d384e1e2bab2 container1 0.07% 310.4MiB / 738.3MiB 42.05% 2.14MB / 58.6kB 72.8MB / 16.8MB 7
18097b8fd0ce container2 0.14% 67.96MiB / 738.3MiB 9.20% 75.9kB / 74.9kB 78.8MB / 1.61MB 2
34840174a49b container2 0.05% 14.93MiB / 738.3MiB 2.02% 59.8kB / 2.14MB 58.1MB / 12.7MB 30
75f1f2a10ab4 container2 0.13% 632KiB / 738.3MiB 0.08% 1.01kB / 0B 1.77MB / 266kB 4
e1e70fe93c75 container3 0.11% 43.36MiB / 738.3MiB 5.87% 75.9kB / 74.9kB 54.5MB / 999kB 85
|