Docker基础

hefunghefung
9 分钟阅读

一、镜像管理

1 搜索镜像

docker search 是 Docker 提供的一个命令行工具,用于在 Docker Hub(或其他配置的镜像仓库)中搜索可用的镜像。
这个命令非常有用,尤其是在你想要查找某个特定功能的镜像(如 Nginx、MySQL、Python 等)时。

示例:搜索 Nginx 镜像

bash
root@00b62e4bbab4:/workspace<span class="token comment"># docker search nginx</span>
NAME                                     DESCRIPTION                                     STARS     OFFICIAL
nginx                                    Official build of Nginx.                        <span class="token number">20880</span>     <span class="token punctuation">[</span>OK<span class="token punctuation">]</span>
nginx/nginx-ingress                      NGINX and  NGINX Plus Ingress Controllers fo…   <span class="token number">108</span>       
nginx/nginx-prometheus-exporter          NGINX Prometheus Exporter <span class="token keyword">for</span> NGINX and NGIN…   <span class="token number">51</span>        
nginx/unit                               This repository is retired, use the Docker o…   <span class="token number">65</span>        
nginx/nginx-ingress-operator             NGINX Ingress Operator <span class="token keyword">for</span> NGINX and NGINX P…   <span class="token number">2</span>         
nginx/nginx-quic-qns                     NGINX QUIC interop                              <span class="token number">1</span>         
nginx/nginxaas-loadbalancer-kubernetes                                                   <span class="token number">1</span>         
nginx/unit-preview                       Unit preview features                           <span class="token number">0</span>         
bitnami/nginx                            Bitnami container image <span class="token keyword">for</span> NGINX               <span class="token number">200</span>

输出字段说明:

字段 说明
NAME 镜像名称
DESCRIPTION 镜像描述
STARS 收藏数(受欢迎程度)
OFFICIAL 是否为官方镜像([OK] 表示是)
AUTOMATED 是否为自动构建的镜像

使用建议:

  • 优先选择官方镜像([OK] in OFFICIAL):更安全、更新更及时。
  • 关注 STARS 数量:代表社区认可度。

2 拉取镜像

docker pull 是一个常用的 Docker 命令,用于从镜像仓库(如 Docker Hub下载(拉取)镜像到本地机器。

拉取默认标签的镜像

如果不指定标签,默认会拉取 latest 标签的镜像,以下指令等价于:docker pull ubuntu:latest

示例:

bash
root@00b62e4bbab4:/workspace<span class="token comment"># docker pull ubuntu</span>
Using default tag: latest
latest: Pulling from library/ubuntu
b08e2ff4391e: Pull complete 
Digest: sha256:440dcf6a5640b2ae5c77724e68787a906afb8ddee98bf86db94eea8528c2c076
Status: Downloaded newer image <span class="token keyword">for</span> ubuntu:latest
docker.io/library/ubuntu:latest

拉取特定版本的镜像(指定标签)

示例:拉取 Ubuntu 22.04 版本的镜像

bash
root@00b62e4bbab4:/workspace<span class="token comment"># docker pull ubuntu:22.04</span>
<span class="token number">22.04</span>: Pulling from library/ubuntu
e735f3a6b701: Pull complete 
Digest: sha256:3c61d3759c2639d4b836d32a2d3c83fa0214e36f195a3421018dbaaf79cbe37f
Status: Downloaded newer image <span class="token keyword">for</span> ubuntu:22.04
docker.io/library/ubuntu:22.04

3 查看镜像

在使用 Docker 时,我们经常需要查看本地已经存在的镜像
示例:

bash
<span class="token comment"># 查看docker所有镜像</span>
root@00b62e4bbab4:/workspace<span class="token comment"># docker images</span>
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       <span class="token number">22.04</span>     1b668a2d748d   <span class="token number">2</span> weeks ago   <span class="token number">77</span>.9MB
ubuntu       latest    f9248aac10f2   <span class="token number">2</span> weeks ago   <span class="token number">78</span>.1MB

4 删除镜像

docker rmi 是 Docker 提供的用于 删除一个或多个本地镜像(image) 的命令。

删除单个镜像(通过名称:标签)

bash
<span class="token function">docker</span> rmi nginx:latest

删除多个镜像

bash
<span class="token function">docker</span> rmi nginx redis mysql

使用镜像 ID 删除镜像

bash
<span class="token function">docker</span> rmi 602e111c06b6

强制删除镜像(即使有容器依赖)

⚠️ 注意:强制删除可能会导致已经运行的容器无法正常工作。

bash
<span class="token function">docker</span> rmi <span class="token parameter variable">-f</span> nginx

删除悬空镜像

悬空镜像是没有标签的镜像,通常是在构建失败或更新镜像后留下的旧版本。

bash
<span class="token function">docker</span> image prune

如果想删除所有未被使用的镜像(包括没有容器使用的镜像)

bash
<span class="token function">docker</span> image prune <span class="token parameter variable">-a</span>

5 镜像标签

docker tag 命令用于 为现有镜像创建一个新的标签(tag)。这在你希望重命名镜像、为镜像打版本号、或准备推送镜像到远程仓库(如 Docker Hub)时非常有用。

⚠️ 注意:新标签和原标签指向同一个镜像 ID,不会复制镜像,只是添加了一个新的“标签”。

示例:

bash
<span class="token comment"># 1.先用 docker images 查看本地已有的镜像</span>
root@00b62e4bbab4:/workspace<span class="token comment"># docker images</span>
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       <span class="token number">22.04</span>     1b668a2d748d   <span class="token number">2</span> weeks ago   <span class="token number">77</span>.9MB
ubuntu       latest    f9248aac10f2   <span class="token number">2</span> weeks ago   <span class="token number">78</span>.1MB

<span class="token comment"># 2.给镜像打一个新的标签</span>
<span class="token function">docker</span> tag ubuntu ubuntu:25.10

<span class="token comment"># 查看系统镜像</span>
root@00b62e4bbab4:/workspace<span class="token comment"># docker images</span>
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       <span class="token number">22.04</span>     1b668a2d748d   <span class="token number">2</span> weeks ago   <span class="token number">77</span>.9MB
ubuntu       <span class="token number">1.12</span>      f9248aac10f2   <span class="token number">2</span> weeks ago   <span class="token number">78</span>.1MB
ubuntu       latest    f9248aac10f2   <span class="token number">2</span> weeks ago   <span class="token number">78</span>.1MB

6 镜像推送

docker push 命令用于将镜像推送到镜像仓库(如 Docker Hub),也可以推送到自己搭建的镜像仓库(Harbor)。
这里以推送到cnb平台仓库为例,cnb镜像推送命名规则:docker.cnb.cool/<组织名>/[子组织名]/<仓库名>/<image_name>:<tag>

示例:

bash
<span class="token function">docker</span> pull nginx
<span class="token function">docker</span> tag nginx docker.cnb.cool/<span class="token operator">&lt;</span>组织名<span class="token operator">></span>/<span class="token punctuation">[</span>子组织名<span class="token punctuation">]</span>/<span class="token operator">&lt;</span>仓库名<span class="token operator">></span>/nginx:1.24.2
<span class="token function">docker</span> push docker.cnb.cool/<span class="token operator">&lt;</span>组织名<span class="token operator">></span>/<span class="token punctuation">[</span>子组织名<span class="token punctuation">]</span>/<span class="token operator">&lt;</span>仓库名<span class="token operator">></span>/nginx:1.24.2

二、容器生命周期管理

1 创建并启动一个新容器

docker run [options] 命令是一个常用的 Docker 命令,用于创建并启动一个新容器。
常用选项:

  • -d: 后台运行容器,并返回容器 ID。
  • -it: 启动一个交互式的容器,并进入容器。
  • --name: 指定容器的名称。
  • --rm: 创建并运行容器后,自动删除容器。
  • p: 端口映射,将容器的端口映射到主机的端口。
  • v: 挂载卷,将容器的文件系统映射到主机的文件系统。
  • e: 设置环境变量。

示例:

bash
<span class="token function">docker</span> run <span class="token parameter variable">-d</span> <span class="token parameter variable">-it</span> <span class="token parameter variable">-p</span> <span class="token number">80</span>:80 <span class="token parameter variable">--name</span> my-nginx nginx:1.12.0

2 停止容器

docker stop 命令是一个常用的 Docker 命令,用于停止一个正在运行的容器。
docker stop 命令会向容器发送一个停止信号,并等待容器停止。如果容器无法停止,则需要使用 docker kill 命令强制停止容器。

示例:

bash
<span class="token comment"># 1. 根据容器名称停止容器</span>
<span class="token function">docker</span> stop my-nginx

<span class="token comment"># 2. 根据容器ID停止容器</span>
<span class="token function">docker</span> stop 5c86c7e2fc95

3 启动/重启已停止容器

docker start 命令是一个常用的 Docker 命令,用于启动一个已停止的容器。

示例:

bash
<span class="token comment"># 1. 根据容器名称启动容器</span>
<span class="token function">docker</span> start my-nginx

<span class="token comment"># 2. 根据容器ID启动容器</span>
<span class="token function">docker</span> start 5c86c7e2fc95

<span class="token comment"># 3. 重启已停止的容器</span>
<span class="token function">docker</span> restart my-nginx

<span class="token comment"># 4. 根据容器ID重启容器</span>
<span class="token function">docker</span> restart 5c86c7e2fc95

4 删除容器

docker rm 命令是一个常用的 Docker 命令,用于删除一个或多个容器。
docker rm 命令会删除容器,但不会删除容器所使用的镜像。

示例:

bash
<span class="token comment"># 1. 根据容器名称删除容器</span>
<span class="token function">docker</span> <span class="token function">rm</span> my-nginx

<span class="token comment"># 2. 根据容器ID删除容器</span>
<span class="token function">docker</span> <span class="token function">rm</span> 5c86c7e2fc95

<span class="token comment"># 3. 强制删除容器</span>
<span class="token function">docker</span> <span class="token function">rm</span> <span class="token parameter variable">-f</span> my-nginx

<span class="token comment"># 4. 删除所有停止的容器</span>
<span class="token function">docker</span> <span class="token function">rm</span> <span class="token variable"><span class="token variable">$(</span><span class="token function">docker</span> <span class="token function">ps</span> <span class="token parameter variable">-a</span> <span class="token parameter variable">-q</span><span class="token variable">)</span></span>

5 查看所有容器

docker ps 命令是一个常用的 Docker 命令,用于查看所有正在运行的容器。

示例:

bash
<span class="token comment"># 1. 查看所有正在运行的容器</span>
<span class="token function">docker</span> <span class="token function">ps</span>

<span class="token comment"># 2. 查看所有容器(包含已停止的容器)</span>
<span class="token function">docker</span> <span class="token function">ps</span> <span class="token parameter variable">-a</span>

三、容器交互与监控

1 容器交互

docker exec 命令是一个常用的 Docker 命令,用于在运行中的容器中执行命令。
docker exec -it :在运行中的容器内执行命令 (常用 /bin/bash, /bin/sh)

示例:

bash
<span class="token function">docker</span> <span class="token builtin class-name">exec</span> <span class="token parameter variable">-it</span> my-nginx <span class="token function">bash</span>

2 容器日志

docker logs 命令是一个常用的 Docker 命令,用于查看容器的日志。

示例:

bash
<span class="token comment"># 1. 查看容器的当前日志</span>
<span class="token function">docker</span> logs my-nginx

<span class="token comment"># 2. 持续查看容器的日志</span>
<span class="token function">docker</span> logs <span class="token parameter variable">-f</span> my-nginx

3 容器/镜像信息

docker inspect 命令是一个常用的 Docker 命令,用于查看容器或镜像的详细信息。

示例:

bash
<span class="token comment"># 1. 查看容器的详细信息</span>
<span class="token function">docker</span> inspect my-nginx

<span class="token comment"># 2. 查看镜像的详细信息</span>
<span class="token function">docker</span> inspect nginx

<span class="token comment"># 3. 获取容器的IP地址</span>
<span class="token function">docker</span> inspect <span class="token parameter variable">--format</span><span class="token operator">=</span><span class="token string">'{{.NetworkSettings.IPAddress}}'</span> my-nginx

<span class="token comment"># 4. 查看容器资源使用情况 (CPU, 内存, 网络, 磁盘)</span>
<span class="token function">docker</span> stats my-nginx

<span class="token comment"># 5. 查看容器内运行的进程</span>
docket <span class="token function">top</span> my-nginx
hefung

hefung

发布于 2025年08月30日

更新于 2025年10月27日

评论

暂无评论。

欢迎到原文中评论及订阅。