ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Docker Container -- 容器命令详解

Docker Container -- 容器命令详解

目录

1. docker run

2. docker ps

3. docker create

4. docker logs

5. docker attach

6. docker exec

7. docker start

8. docker stop

9. docker restart

10. docker kill

11. docker top

12.docker stats

13. docker container inspect

15. docker port

15. docker cp

16. docker diff

17. docker commit

18. docker pause

19. docker unpause

20. docker rm

21. docker export

22. docker wait

23. docker rename

24. docker container prune

25.docker update


正文开始:

1. docker run

  • 功能:创建一个新的容器并运行一个命令
  • 语法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...] [OPTIONS]: (选项参数),这是 Docker 运行的配置项,用于控制容器的网络、存储、资源限制、运行模式等。选项非常多,通常以 - 或 -- 开头。 IMAGE: (镜像),这是必填项,指定你要基于哪个镜像来创建容器。 [COMMAND]: (命令),这是可选项,用于覆盖镜像中定义的默认启动命令(即 Dockerfile 中的 CMD 或 ENTRYPOINT)。 [ARG...]: (参数),这是可选项,是传递给 [COMMAND] 的参数。
# 在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

  • 别名
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

  • 功能:列出容器
  • 语法:
docker ps [OPTIONS]

  • 别名:
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:自动重启

样例:

docker create --name mynginx nginx:latest

4. docker logs

功能:查看容器日志

语法:

docker logs [OPTIONS] CONTAINER 别名 docker container logs

关键参数:

  • -f ,--follow:跟踪日志输出
  • --since :显示某个开始时间的所有日志
  • -t,--timestamps :显示时间戳
  • -n,--tail :仅列出最新N条容器日志

样例:

开启容器后:

#追踪查看容器 mynginx 的日志输出。 docker logs -f mynginx1 #查看容器 mynginx 从 2016 年 7 月 1 日后的最新 10 条日志。 docker logs --since="2016-07-01" --tail=10 mynginx

5.docker attach

功能:连接到正在运行中的容器。

语法:
docker attach [OPTIONS] CONTAINER 别名 docker container attach

关键参数:

  • --sig-proxy:是否将所有信号代理,默认是true,如果设置为false,退出的话不会影响容器,否则退出会导致容器退出

样例:

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

功能:在容器中执行命令

语法:

docker exec [OPTIONS] CONTAINER COMMAND [ARG...] 别名 docker container exec

关键参数:

  • -d :分离模式:在后台运行
  • -i :即使没有附加也保持STDIN打开
  • -t :分配一个伪终端
  • -e :设置环境变量
  • -u,--user :指定用户"<name|uid>[:<group|gid>]"
  • -w,--workdir:指定工作目录

样例:

#在容器 mynginx 中以交互模式执行 echo: docker exec -it mynginx echo "Hello bit" #在容器 mynginx 中以交互模式打开 shell: docker exec -it mynginx bash #通过 id 进去,docker ps 可以看到容器 id

7. docker start

功能:启动停止的容器

语法:

docker start [OPTIONS] CONTAINER [CONTAINER...] 别名 docker container start

样例:

8. docker stop

功能:停止运行的容器

语法:

docker stop [OPTIONS] CONTAINER [CONTAINER...] 别名 docker container stop

关键参数:

  • -s :发送的信号

9. docker restart

功能:重启容器

语法:

docker restart [OPTIONS] CONTAINER [CONTAINER...] 别名 docker container restart

关键参数:

  • -s :发送信号

10. docker kill

功能:强制退出容器

语法:

docker kill [OPTIONS] CONTAINER [CONTAINER...] 别名 docker container kill

关键参数:

  • -s :发送的信号

注意事项:Docker stop发送的是SIGTERM信号,docker kill发送的是SIGKILL信号

11. docker top

功能:查看容器中运行的进程信息,支持ps命令参数。

语法:

docker top CONTAINER [ps OPTIONS] 别名 docker container top

注意事项:容器运行时不一定有/bin/bash 终端来交互执行 top 命令,而且容器还不一定有top 命令,可以使用docker top来实现查看container中正在运行的进程。

12.docker stats

功能:显示容器资源的使用情况,包括:CPU、内存、网络I/O等。

语法:

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:容器创建的进程或线程数。

样例:

docker stats

13. docker container inspect

功能:查看容器详细信息

语法:

docker container inspect [OPTIONS] CONTAINER [CONTAINER...]

关键参数:

  • -f :指定返回值的模板文件。如table、json
  • -s :显示总的文件大小。

注意事项:

  • docker inspect会自动检查是镜像还是容器然后显示相信信息

15. docker port

功能:用于列出指定的容器的端口映射,或者查找将 PRIVATE_PORT NAT到面向公众的端口。

语法:

docker port CONTAINER [PRIVATE_PORT[/PROTO]] 别名 docker container port

样例:

15. docker cp

功能:在容器和宿主机之间拷贝文件

语法:

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

样例:

场景准备:

# 启动一个测试容器 docker run -d --name mynginx nginx

场景一:从容器复制文件到宿主机

# 把容器中的 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。

场景二:从宿主机复制文件进容器

# 把宿主机文件复制进容器: 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

功能:检查容器里文件结构的更改。

语法:

docker diff CONTAINER

17. docker commit

功能:从容器创建一个新的镜像。

语法:

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

参数:

  • -a :提交的镜像作者;
  • -c :使用Dockerfile指令来创建镜像;可以修改启动指令
  • -c :使用Dockerfile指令来创建镜像;可以修改启动指令
  • -c :使用Dockerfile指令来创建镜像;可以修改启动指令

18. docker pause

功能:暂停容器中所有的进程。

语法:

docker pause CONTAINER [CONTAINER...] 别名 docker container pause

样例:

19. docker unpause

功能:恢复容器中所有的进程。

语法:

docker unpause CONTAINER [CONTAINER...] 别名 docker container unpause

样例:

20. docker rm

功能:删除停止的容器

语法:

docker rm [OPTIONS] CONTAINER [CONTAINER...] 别名 docker container rm

关键参数:

  • -f :通过SIGKILL信号强制删除一个运行中的容器。

样例:

21. docker export

功能:导出容器内容为 tar文件

语法:

docker export [OPTIONS] CONTAINER 别名 docker container export

关键参数:

  • -o:写入到文件。

样例:

#导出 nginx 为 tar docker export -o mynginx202203.tar mynginx

22. docker wait

功能:阻塞运行直到容器停止,然后打印出它的退出代码。

语法:

docker wait CONTAINER [CONTAINER...] 别名 docker container wait

样例:

docker wait mynginx

23. docker rename

功能:重命名容器

语法:

docker rename CONTAINER NEW_NAME 别名 docker container rename

样例:

docker rename mynginx myweb

24. docker container prune

功能:删除所有停止的容器

语法:

docker container prune [OPTIONS]

关键参数:

  • -f, --force:不提示是否进行确认

样例:

docker container prune

25.docker update

功能:更新容器配置

语法:

docker update [OPTIONS] CONTAINER [CONTAINER...] 别名 docker container update

关键参数:

  • --cpus:cpu数量

  • --cpuset-cpus :使用哪些cpu

  • --memory :内存限制

  • --memory-swap:交换内存

  • --cpu-period:是用来指定容器对CPU 的使用要在多长时间内做一次重新分配

  • --cpu-quota:是用来指定在这个周期内,最多可以有多少时间用来跑这个容器

样例:

#更新内存 docker update -m 400m myweb
返回列表