目录
[1. docker run](#1. docker run)
[2. docker ps](#2. docker ps)
[3. docker create](#3. docker create)
[4. docker logs](#4. docker logs)
[5. docker attach](#5. docker attach)
[6. docker exec](#6. docker exec)
[7. docker start](#7. docker start)
[8. docker stop](#8. docker stop)
[9. docker restart](#9. docker restart)
[10. docker kill](#10. docker kill)
[11. docker top](#11. docker top)
[12.docker stats](#12.docker stats)
[13. docker container inspect](#13. docker container inspect)
[15. docker port](#15. docker port)
[15. docker cp](#15. docker cp)
[16. docker diff](#16. docker diff)
[17. docker commit](#17. docker commit)
[18. docker pause](#18. docker pause)
[19. docker unpause](#19. docker unpause)
[20. docker rm](#20. docker rm)
[21. docker export](#21. docker export)
[22. docker wait](#22. docker wait)
[23. docker rename](#23. docker rename)
[24. docker container prune](#24. docker container prune)
[25.docker update](#25.docker update)
正文开始:
1. docker run
- 功能:创建一个新的容器并运行一个命令
- 语法
bash
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
[OPTIONS]:
(选项参数),这是 Docker 运行的配置项,用于控制容器的网络、存储、资源限制、运行模式等。选项非常多,通常以 - 或 -- 开头。
IMAGE:
(镜像),这是必填项,指定你要基于哪个镜像来创建容器。
[COMMAND]:
(命令),这是可选项,用于覆盖镜像中定义的默认启动命令(即 Dockerfile 中的 CMD 或 ENTRYPOINT)。
[ARG...]:
(参数),这是可选项,是传递给 [COMMAND] 的参数。
bash
# 在Ubuntu 的宿主机上再创建一个CentOS 7的一个操作系统
root@hcss-ecs-c91e:~# cat /etc/*release*
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.4 LTS"
PRETTY_NAME="Ubuntu 24.04.4 LTS"
NAME="Ubuntu"
....
#去docker hub 找到centos对应的tag将他拉取下来
root@hcss-ecs-c91e:~# docker pull centos:7
root@hcss-ecs-c91e:~# docker run centos:7 #一跑发现这个容器直接退出了
root@hcss-ecs-c91e:~#
# docker ps不带任何参数时查看的是运行时的容器
root@hcss-ecs-c91e:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@hcss-ecs-c91e:~# docker ps -a #查看所有容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
081c2a30fe7f centos:7 "/bin/bash" 3 minutes ago Exited (0) 3 minutes ago optimistic_mcnulty

- 别名
bash
docker container run
- 关键参数
1. -d: 后台运行容器,并返回容器 ID;
2. **-i:**以交互模式运行容器,通常与 -t 同时使用;

exit可退出容器的交互模式
3. -P:随机端口映射,容器内部端口随机映射到主机的端口
**4. -p:**指定端口映射,格式为:主机(宿主)端口:容器端口
我们知道,我们的LXC或者是我们的Docker,它底层都使用了namespace这种隔离技术,namespace把我们的网络做了一个隔离, 而我们的端口也被隔离起来了,隔离起来后,如果我们容器里面有一个服务是web服务(Nginx), nginx服务可对外提供服务,它有的一个80端口,因为我们给他做了隔离,我们外部的用户访问不到它,这个时候我们就可以通过 -p / -P把我们容器的一个端口和宿主机的端口做一个打通,打通之后,当访问宿主机的这个80端口时可以自动的把这个流量转到我们容器的一个端口,从而访问到nginx, 这就是端口映射,从而可以访问到我们容器里面的服务.





此处需注意,当我们通过外部浏览器访问时,因为我们并没有开通这个32772或32773的防火墙,所以我们会访问不通,但是我们直接通过curl 命令在我们的宿主机上访问本机的127.0.0.1,则可行。若我们想通过浏览器通过公网进行访问,因为我们使用的是云服务器,则需先开通防护墙

5. **-t:**为容器重新分配一个伪输入终端,通常与 -i 同时使用;
6. **--name="nginx-lb":**为容器指定一个名称;

7. **-h "mars":**指定容器的 hostname;



8. **-e username="ritchie":**设置环境变量;
9. **--cpuset-cpus="0-2" or --cpuset-cpus="0,1,2":**绑定容器到指定 CPU运行;
10. **-m :**设置容器使用内存最大值;
11. **--network="bridge":**指定容器的网络连接类型;
12. **--link= :**添加链接到另一个容器;
13. **--volume , -v:**绑定一个卷
14. --rm:shell 退出的时候自动删除容器
2. docker ps
- 功能:列出容器
- 语法:
bash
docker ps [OPTIONS]

- 别名:
bash
docker container ls, docker container list, docker container ps
- 关键参数:
- **-a :**显示所有的容器,包括未运行的。
- **-f :**根据条件过滤显示的内容。
- **--format :**指定返回值的模板文件。如 json 或者 table
- **-l :**显示 latest 的容器。
- **-n :**列出最近创建的 n 个容器。
- **--no-trunc :**不截断输出。
- **-q :**静默模式,只显示容器编号。
- **-s :**显示总的文件大小。
3. docker create
**功能:**创建一个新的容器但不启动它
语法:
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
别名
docker container create
关键参数:
- **-i:**以交互模式运行容器,通常与 -t 同时使用;
- -P:随机端口映射,容器内部端口随机映射到主机的端口
- **-p:指定端口映射,格式为:主机(宿主)端口:**容器端口
- **-t:**为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- **--name="nginx-lb":**为容器指定一个名称;
- **-h "mars":**指定容器的 hostname;
- **-e username="ritchie":**设置环境变量;
- **--cpuset-cpus="0-2" or --cpuset-cpus="0,1,2":**绑定容器到指定 CPU 运行;
- **-m :**设置容器使用内存最大值;
- **--network="bridge":**指定容器的网络连接类型;
- **--link= :**添加链接到另一个容器;
- **--volume , -v:**绑定一个卷
- --rm:shell 退出的时候自动删除容器
- --restart:自动重启
样例:
bash
docker create --name mynginx nginx:latest
4. docker logs
功能:查看容器日志
语法:
bash
docker logs [OPTIONS] CONTAINER
别名
docker container logs
关键参数:
- **-f ,--follow:**跟踪日志输出
- **--since :**显示某个开始时间的所有日志
- **-t,--timestamps :**显示时间戳
- -n**,****--tail :**仅列出最新 N 条容器日志
样例:


开启容器后:
bash
#追踪查看容器 mynginx 的日志输出。
docker logs -f mynginx1
#查看容器 mynginx 从 2016 年 7 月 1 日后的最新 10 条日志。
docker logs --since="2016-07-01" --tail=10 mynginx
5. docker attach
功能:连接到正在运行中的容器。
语法:
bash
docker attach [OPTIONS] CONTAINER
别名
docker container attach
关键参数:
- --sig-proxy **:**是否将所有信号代理,默认是 true,如果设置为 false,退出的话不会影响容器,否则退出会导致容器退出
样例:
bash
root@139-159-150-152:/data/myworkdir/dockerfile/cache# docker attach mynginx
#此处按了 ctrl+c 后会把容器杀死
^C2023/03/15 06:26:24 [notice] 1#1: signal 2 (SIGINT) received, exiting
2023/03/15 06:26:24 [notice] 28#28: exiting
2023/03/15 06:26:24 [notice] 28#28: exit
2023/03/15 06:26:24 [notice] 1#1: signal 17 (SIGCHLD) received from 28
2023/03/15 06:26:24 [notice] 1#1: worker process 28 exited with code 0
2023/03/15 06:26:24 [notice] 1#1: exit
root@139-159-150-152:/data/myworkdir/dockerfile/cache# docker attach --sig-proxy=false mynginx
#此处按了 ctrl+c 不会把容器杀死

显示报文为:
- CONTAINER ID: 容器 ID。
- IMAGE: 使用的镜像。
- COMMAND: 启动容器时运行的命令。CREATED: 容器的创建时间。
- STATUS: 容器状态。
- PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
- NAMES: 自动分配的容器名称。
6. docker exec
功能:在容器中执行命令
语法:
bash
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
别名
docker container exec
关键参数:
- **-d :**分离模式: 在后台运行
- **-i :**即使没有附加也保持 STDIN 打开
- **-t :**分配一个伪终端
- **-e :**设置环境变量
- **-u,--user :**指定用户 "<name|uid>:\
" - **-w,--workdir:**指定工作目录
样例:

bash
#在容器 mynginx 中以交互模式执行 echo:
docker exec -it mynginx echo "Hello bit"
#在容器 mynginx 中以交互模式打开 shell:
docker exec -it mynginx bash
#通过 id 进去,docker ps 可以看到容器 id
7. docker start
功能:启动停止的容器
语法:
bash
docker start [OPTIONS] CONTAINER [CONTAINER...]
别名
docker container start
样例:

8. docker stop
功能:停止运行的容器
语法:
bash
docker stop [OPTIONS] CONTAINER [CONTAINER...]
别名
docker container stop
关键参数:
- **-s :**发送的信号
9. docker restart
功能:重启容器
语法:
bash
docker restart [OPTIONS] CONTAINER [CONTAINER...]
别名
docker container restart
关键参数:
- **-s :**发送信号
10. docker kill
功能:强制退出容器
语法:
bash
docker kill [OPTIONS] CONTAINER [CONTAINER...]
别名
docker container kill
关键参数:
- **-s :**发送的信号
注意事项:Docker stop 发送的是 SIGTERM信号,docker kill 发送的是 SIGKILL信号
11. docker top
功能:查看容器中运行的进程信息,支持 ps 命令参数。
语法:
bash
docker top CONTAINER [ps OPTIONS]
别名
docker container top
注意事项:容器运行时不一定有/bin/bash 终端来交互执行 top 命令,而且容器还不一定有top 命令,可以使用 docker top 来实现查看 container 中正在运行的进程。

12.docker stats
功能:显示容器资源的使用情况,包括:CPU、内存、网络 I/O 等。
语法:
bash
docker stats [OPTIONS] [CONTAINER...]
别名
docker container stats
关键参数:
-
**--all , -a :**显示所有的容器,包括未运行的。
-
**--format :**指定返回值的模板文件。如 table,json
-
**--no-stream :**展示当前状态就直接退出了,不再实时更新。
-
**--no-trunc :**不截断输出。
返回报文:
- **CONTAINER ID与NAME:**容器 ID 与名称。
- **CPU %与MEM %:**容器使用的 CPU 和内存的百分比。
- **MEM USAGE / LIMIT:**容器正在使用的总内存,以及允许使用的内存总量。
- **NET I/O:**容器通过其网络接口发送和接收的数据量。
- **BLOCK I/O:**容器从主机上的块设备读取和写入的数据量。
- **PIDs:**容器创建的进程或线程数。
样例:
bash
docker stats

13. docker container inspect
功能:查看容器详细信息
语法:
bash
docker container inspect [OPTIONS] CONTAINER [CONTAINER...]
关键参数:
-
**-f :**指定返回值的模板文件。如 table、json
-
**-s :**显示总的文件大小。
注意事项:
- docker inspect 会自动检查是镜像还是容器然后显示相信信息
15. docker port
功能:用于列出指定的容器的端口映射,或者查找将 PRIVATE_PORT NAT 到面向公众的端口。
语法:
bash
docker port CONTAINER [PRIVATE_PORT[/PROTO]]
别名
docker container port
样例:


15. docker cp
功能:在容器和宿主机之间拷贝文件
语法:
bash
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH | -
CONTAINER: 容器名称或 ID
SRC_PATH: 容器内的源路径
DEST_PATH: 宿主机的目标路径
-: 特殊符号,表示输出到标准输出(stdout)
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
SRC_PATH: 宿主机的源路径
-: 从标准输入(stdin)读取数据
CONTAINER: 容器名称或 ID
DEST_PATH: 容器内的目标路径
别名
docker container cp
样例:
场景准备:
bash
# 启动一个测试容器
docker run -d --name mynginx nginx
场景一:从容器复制文件到宿主机
bash
# 把容器中的 nginx 配置文件复制出来:
docker cp mynginx:/etc/nginx/nginx.conf ./nginx.conf
#结果:在当前目录下得到 nginx.conf 文件。
# 复制整个目录:
docker cp mynginx:/etc/nginx ./nginx-conf-backup
#结果:把容器内的 /etc/nginx 目录完整复制到宿主机的 ./nginx-conf-backup。
场景二:从宿主机复制文件进容器
bash
# 把宿主机文件复制进容器:
docker cp ./index.html mynginx:/usr/share/nginx/html/index.html
# 结果:替换容器中 nginx 的首页文件。
# 复制整个目录到容器:
docker cp ./my-website/. mynginx:/usr/share/nginx/html/
# 注意末尾的 / 和 .:表示把 my-website 里的内容复制到目标目录。
16. docker diff
功能:检查容器里文件结构的更改。
语法:
bash
docker diff CONTAINER
17. docker commit
功能:从容器创建一个新的镜像。
语法:
bash
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
参数:
- **-a :**提交的镜像作者;
- **-c :**使用 Dockerfile 指令来创建镜像;可以修改启动指令
- **-c :**使用 Dockerfile 指令来创建镜像;可以修改启动指令
- **-c :**使用 Dockerfile 指令来创建镜像;可以修改启动指令


18. docker pause
功能:暂停容器中所有的进程。
语法:
bash
docker pause CONTAINER [CONTAINER...]
别名
docker container pause
样例:

19. docker unpause
功能:恢复容器中所有的进程。
语法:
bash
docker unpause CONTAINER [CONTAINER...]
别名
docker container unpause
样例:

20. docker rm
功能:删除停止的容器
语法:
bash
docker rm [OPTIONS] CONTAINER [CONTAINER...]
别名
docker container rm
关键参数:
- **-f :**通过 SIGKILL 信号强制删除一个运行中的容器。
样例:




21. docker export
功能:导出容器内容为 tar 文件
语法:
bash
docker export [OPTIONS] CONTAINER
别名
docker container export
关键参数:
- **-o:**写入到文件。
样例:
bash
#导出 nginx 为 tar
docker export -o mynginx202203.tar mynginx
22. docker wait
功能:阻塞运行直到容器停止,然后打印出它的退出代码。
语法:
bash
docker wait CONTAINER [CONTAINER...]
别名
docker container wait
样例:
bash
docker wait mynginx
23. docker rename
功能:重命名容器
语法:
bash
docker rename CONTAINER NEW_NAME
别名
docker container rename
样例:
bash
docker rename mynginx myweb
24. docker container prune
功能:删除所有停止的容器
语法:
bash
docker container prune [OPTIONS]
关键参数:
- -f, --force:不提示是否进行确认
样例:
bash
docker container prune
25.docker update
功能:更新容器配置
语法:
bash
docker update [OPTIONS] CONTAINER [CONTAINER...]
别名
docker container update
关键参数:
-
--cpus**:**cpu 数量
-
**--cpuset-cpus :**使用哪些 cpu
-
**--memory :**内存限制
-
--memory-swap:交换内存
-
--cpu-period:是用来指定容器对 CPU 的使用要在多长时间内做一次重新分配
-
--cpu-quota**:**是用来指定在这个周期内,最多可以有多少时间用来跑这个容器
样例:
bash
#更新内存
docker update -m 400m myweb