Docker命令入门

news/2025/11/21 22:11:14/文章来源:https://www.cnblogs.com/dataverse/p/19254664

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 容器网络说明

image-20220121172037253(1)

# 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:把将运行的容器命名为c1
  • centos: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/972583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025.11.21 - A

今天形势与政策,听了一些国际形势,收获颇丰

2025年新版ADB工具箱下载+驱动+ADB指令集+fastboot刷机ROOT程序

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

P7960 [NOIP2021] 报数__洛谷题解

P7960 [NOIP2021] 报数 题目描述 报数游戏是一个广为流传的休闲小游戏。参加游戏的每个人要按一定顺序轮流报数,但如果下一个报的数是 \(7\) 的倍数,或十进制表示中含有数字 \(7\),就必须跳过这个数,否则就输掉了游…

The 5W2H Problem-Solving Method

The 5W2H Problem-Solving Method https://www.msicertified.com/wp-content/uploads/2024/02/The-5W2H-Problem-Solving-Method.pdf 出处:http://www.cnblogs.com/lightsong/本文版权归作者和博客园共有,欢迎转载,但…

题解:SP5830 ALTPERM - Alternating Permutations

题意:给你 \(K\) 个下标,保证 \(A_1=1,A_K=N\),且对任意的 \(i<N\) 有 \(A_i<A_{i+1}\)。 如果一个排列,在下标 \(A_1\) 到 \(A_2\) 处单调递增,在下标 \(A_2\) 到 \(A_3\) 处单调递减,在下标 \(A_3\) 到 …

图床创建:github+Picgo+obsidian 带有同步删除的自动上传

最近一直在做DL部分的学习笔记,一个比较麻烦的地方就是我一直用的obsidian做笔记内容,在博客园导入随笔后,图片的链接一直是我的本地路径,自然无法显示,于是我只好在导入随笔后再把图片一张张上传到博客园的图床上…

重组生长因子全面解析:从结构功能到科研应用指南

重组生长因子是现代生命科学研究中不可或缺的重要工具,它们通过基因工程技术在体外表达和纯化获得,为细胞生物学、发育生物学及信号转导研究提供了高纯度、高活性的关键试剂。作为科研试剂,重组生长因子以其精确的序…

2055.11.21

十点睡醒起床,吃饭 然后洗澡回宿舍上网课,开团会,出去吃饭,回宿舍准备睡觉

Dify异步接口调用优化实践:解决长时任务处理与网络超时疑问

Dify异步接口调用优化实践:解决长时任务处理与网络超时疑问pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

STM32系统时钟与SysTick定时器

一、系统嘀嗒定时器(SysTick)全面解析 1. SysTick定时器基本概念 定时器是STM32 中常用的外设,一般定时器的基本功能就是定时,而在Cortex M3/M4 内核中也包含一个简单的定时器,就是系统嘀嗒定时器(Systick),它是属…

【251121】CF2171 Div.3 vp 总结

老师说让我尝试体验快乐 AK,但是我失败了。 还是太菜了喵! 题目梗概题目编号 题目名称 题目链接A Shizuku Hoshikawa and Farm Legs LinkB Yuu Koito and Minimum Absolute Sum LinkC1 / C2 Renako Amaori and XOR G…

OI 笑传 #32

なんてったって春今天是 bct Day2,赛时 \(40+60+10+0=110\),rk 70。 挂分原因是被 vector 卡常了/fn。然后 T4 捆绑 Sbt#1 T 了一个于是又没了 20pts。 评价是 ok 场,练习了对拍的使用。 发现 hm2ns 总是会随口否掉…

PyOpenGL实现Bresenham算法

Bresenham直线算法 Bresenham画圆算法 中点Bresenham画椭圆算法1. Bresenham直线生成算法 1.1 理论基础 绘制直线的最直观想法是使用直线方程 y = mx + b,并对x的每个整数值计算y 这涉及到大量的浮点数乘法和舍入运算…

【Linux】教你在 Linux 上搭建 Web 服务器,步骤清晰无门槛 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【第7章 I/O编程与异常】\r\n 和 \n\r是一回事吗?

\r\n 和 \n\r 不是一回事,它们是两种完全不同的字节序列,在语义和实际效果上也完全不同。 一、含义对比 序列 字节(十六进制) 含义\r\n 0x0D 0x0A 回车(Carriage Return) + 换行(Line Feed)✅ Windows 标准换行…

2025-11-21

CF Problem - 1234C - Codeforces(贪心) #include <bits/stdc++.h> using namespace std; #define LL long long const LL mod = 998244353; const int N=2e5+10; string s[2];void solve() {int n;cin >&g…

深入解析:windows显示驱动开发-CCD api的摘要及方案(一)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

nju实验七 状态机及键盘输入

本实验的目的是学习状态机的工作原理,了解状态机的编码方式,并利用PS/2键盘输入实现简单状态机的设计。实验七 状态机及键盘输入 简单状态机 . ├── build ├── constr │ └── top.nxdc ├── csrc │ └…

2025-11-21 XQQ NOIP Round 1 hetao1733837的record

2025-11-21 XQQ NOIP Round 1 hetao1733837的record2025-11-21 XQQ NOIP Round 1 hetao1733837的record A.tree 提交链接:树 题面 题目描述 给定一棵 $n$ 个点的树和一个长度为 $n$ 的数组 $score[0], ..., score[n-1…