Docker Container -- 容器命令详解

目录

[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
相关推荐
say_fall1 小时前
【Linux系统编程】Linux进程信号:从“外卖到了“到内核里的一张位图
linux·运维·服务器·车载系统·智能硬件
Z21-X2 小时前
云原生运维实战笔记:企业网站综合上云部署与云运维服务全景解析
运维·笔记·学习·云原生
Decay__2 小时前
19_MySQL 告警与自动化运维 —— 告警分级收敛 / Webhook / 定时巡检 / 脚本库
运维·数据库·sql·mysql·架构
FungLeo2 小时前
成为全栈·基础补充·Linux 服务器入门
linux·运维·服务器·ssh·部署·成为全栈
爱和冰阔落2 小时前
【Linux网络】TCP 服务器怎么写?从 listen、accept 到 read/write,手写完整 Echo Server
linux·运维·服务器·网络
鲁邦通物联网3 小时前
工业装备OEM远程服务架构:边缘计算网关与售后运维系统设计
运维·边缘计算·数据采集·工业数据采集·边缘计算网关·plc数采·厂内数采
冯小鸟的探戈3 小时前
电脑重生之安装xp系统
运维·服务器·电脑
分布式存储与RustFS3 小时前
Longhorn 的卷备份别堆本地盘:用 RustFS 给它当 S3 备份目标
运维·云原生·开源·对象存储·分布式存储·s3·性能基准