十分钟Docker零基础实战指南

面向零基础快速实现Docker入门,涵盖了Docker的所有常用功能与命令。

核心概念

Docker容器是一种容器化技术。

容器化技术和虚拟机技术有些类似,但是本质是不同的。图1 显示了容器和虚拟机的区别,每个容器化均不包含操作系统,共用一个操作系统内核;每个虚拟机则包含完整的独立操作系统内核,和主机的操作系统内核是独立的。

图1:容器化与虚拟机架构对比

安装

Linux和Win的安装略有不同。

Win

win上直接前往官网安装Docker Desktop进行管理即可。

Linux

Linux安装参考教程,注意千万不要安装Docker Desktop,会因为权限问题,产生两个不同的Docker。

下载镜像

镜像是容器的模板,可以根据一个制作好的镜像配置无数个类似的模板,其关系和Ubuntu系统镜像与Ubuntu系统的关系类似。

docker pull命令用于从 Docker 注册表(例如 Docker Hub)中拉取(下载)镜像到本地。

1
2
3
4
5
6
7
8
9
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
NAME: 镜像名称,通常包含注册表地址(如 docker.io/library/ubuntu)。
TAG(可选): 镜像标签,默认为 latest。
DIGEST(可选): 镜像的 SHA256 摘要。

常用选项:
--platform=xxxxxx 用于限制CPU的架构

例子:docker pull docker.io/library/ubuntu:20.04

下面对NAME属性的结构进行解释:

  1. docker.io表示仓库地址,当处于内陆时,可以使用镜像源替代;
  2. library 表示命名空间,一般是作者的名字;
  3. ubuntu 镜像的名字

可以在docker hub进行镜像的查找和选取,当然内陆可以使用fxxk docker等第三方镜像网站替代。

配置镜像站

如果不对NAME属性的仓库地址进行单独配置,内陆需要配置镜像站以解决网络问题。

Linux

打开配置文件:

1
sudo vi /etc/docker/daemon.json

/etc/docker/daemon.json中填入以下内容:

1
2
3
4
5
6
7
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"https://hub.rat.dev"
]
}

重启Docker:

1
sudo service docker restart

Win

打开Setting->Docker Engine,在输入框中添加:

1
2
3
4
5
6
7
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1panel.live",
"https://hub.rat.dev"
]
}

其他命令

  • 查看 sudo docker images
  • 删除 docker rmi [OPTIONS] IMAGE [IMAGE...]

创建容器

创建容器使用docker run命令实现。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

-d: 后台运行容器并返回容器 ID,则不会阻塞终端。
-it: 交互式运行容器,分配一个伪终端。
--name: 给容器指定一个名称。
-p: 端口映射,格式为 host_port:container_port。
-v: 挂载卷,格式为 host_dir:container_dir。
--rm: 容器停止后自动删除容器。
--env 或 -e: 设置环境变量。
--network: 指定容器的网络模式。
--restart: 容器的重启策略(如 no、on-failure、always、unless-stopped)。
-u: 指定用户。

例子:
docker run -d\
-name ubuntu
-p 80:80\
-e USERNAME=admin\
-e PASSWORD=1111\
-v /host/data:/container/data\
-u root\
--rm
ubuntu

重点解释

-v

该参数有两种模式,一种是绑定挂载,一种是命名卷挂载。
绑定挂载格式:-v 宿主机目录:容器内目录
命名卷挂载则需要先创建一个存储空间,即命名卷,然后使用-v 卷的名字:容器内目录进行挂载。

其他命令

查看容器可以使用docker ps命令实现,添加-a参数可以显示未运行的容器。

删除容器和删除镜像类似,可以使用docker rm [OPTIONS] CONTAINER [CONTAINER...]删除停止运行了的容器,添加-f命令则可以强制删除正在运行的容器。

运行容器使用docker start [CONTAINER...]
停止容器使用docker stop [CONTAINER...]

其余参数需要详细阅读镜像文档中可以传递的环境变量。

挂载卷

常见卷命令如下:

1
2
3
4
5
docker volume ls: 列出所有卷。
docker volume create <volume>: 创建一个新的卷。
docker volume rm <volume>: 删除指定的卷。
docker volume inspect <volume>: 显示卷的详细信息。
docker volume prune -a: 删除没有任何容器使用的卷

调试容器

使用docker logs用于获取和查看容器的日志输出。

1
2
3
4
5
6
7
8
docker logs [OPTIONS] CONTAINER

-f, --follow: 跟随日志输出(类似于 tail -f)。
--since: 从指定时间开始显示日志。
-t, --timestamps: 显示日志时间戳。
--tail: 仅显示日志的最后部分,例如 --tail 10 显示最后 10 行。
--details: 显示提供给日志的额外详细信息。
--until: 显示直到指定时间的日志。

使用docker port用于显示容器的端口映射信息,即容器内部的端口如何映射到宿主机的端口。

1
2
3
4
5
docker port CONTAINER [PRIVATE_PORT[/PROTO]]

CONTAINER: 要查询端口映射的容器的名称或 ID。
PRIVATE_PORT (可选): 容器内部的端口号。
PROTO (可选): 协议类型(tcp 或 udp),默认是 tcp。

使用docker stats用于实时显示 Docker 容器的资源使用情况,包括 CPU、内存、网络 I/O 和块 I/O。

1
2
3
4
5
6
docker stats [OPTIONS] [CONTAINER...]

--all , -a :显示所有的容器,包括未运行的。
--format :指定返回值的模板文件。
--no-stream :展示当前状态就直接退出了,不再实时更新。
--no-trunc :不截断输出。

使用docker exec用于在运行中的容器内执行一个新的命令。这对于调试、运行附加的进程或在容器内部进行管理操作非常有用。

1
2
3
4
5
6
7
8
9
10
11
12
13
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

-d, --detach: 在后台运行命令。
--detach-keys: 覆盖分离容器的键序列。
-e, --env: 设置环境变量。
--env-file: 从文件中读取环境变量。
-i, --interactive: 保持标准输入打开。
--privileged: 给这个命令额外的权限。
--user, -u: 以指定用户的身份运行命令。
--workdir, -w: 指定命令的工作目录。
-t, --tty: 分配一个伪终端。

例如:sudo docker exec -it -u root web /bin/sh

构建镜像

通过Dockerfile进行构建镜像。
详细教程可以参考Docker Dockerfile
详细操作实战可参见dockerfile实战指南

Docker网络

默认桥接

图2:默认桥接网络

如图2所示,默认是桥接网络,容器均连接到这个网络,各自分配了一个IP地址。容器内部可以通过IP地址互相访问,但是与宿主机的网络是隔断的。

子网桥接

图3:子网桥接网络

如图3所示,可以使用docker network create <network>命令创建子网,让不同容器加入不同子网。不同子网之间的网络是隔断的,相同子网内部的容器可以通过IP或者名字相互访问。

Host模式

图4:Host网络

Host模式则可以实现容器与主机共享网络,直接使用主机的IP地址,无需-p进行端口映射。

None模式

该模式即不连接网络。

其他命令

1
2
3
4
5
docker network ls: 列出所有网络。
docker network create <network>: 创建一个新的网络。
docker network rm <network>: 删除指定的网络。
docker network connect <network> <container>: 连接容器到网络。
docker network disconnect <network> <container>: 断开容器与网络的连接。

Docker Compose

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

详细教程可以参考Docker Compose,基本和docker命令是一一对应的。

其常见命令如下:

1
2
3
4
5
6
7
8
docker compose run - 启动一个新容器并运行一个特定的应用程序。
docker compose rm - 启动一个新容器并删除一个特定的应用程序。
docker compose ps - 从 docker compose 检查 docker 容器状态。
docker compose build - 构建 docker compose 文件。
docker compose up - 运行 docker compose 文件。
docker compose ls - 列出 docker compose 服务。
docker compose start - 启动 docker compose 文件创建的容器。
docker compose restart - 重启 docker compose 文件创建的容器。

如何快速创建compose

easy,将docker命令直接投喂给AI即可实现。

作者

LiXintao

发布于

2025-07-18

更新于

2025-07-20

许可协议

评论