Docker 常用命令入门:从镜像到容器的完整流程

Docker 是一种常用的容器化技术,它可以让我们把应用程序和运行环境一起打包,快速部署到不同机器上。学习 Docker 时,最重要的是先理解两个核心概念:镜像容器

简单来说,镜像是模板,容器是镜像运行后的实例。我们先从 Docker Hub 拉取镜像,再通过镜像启动容器,然后可以查看、进入、停止、删除容器。


一、镜像和容器是什么?

1. 镜像 Image

镜像可以理解为一个"安装包"或"系统模板"。

例如:

复制代码
nginx
mysql:8.0
ubuntu
redis

这些都是常见镜像。

镜像本身不会运行,它只是用来创建容器。

2. 容器 Container

容器是镜像运行起来之后的实例。

比如我们用 nginx 镜像启动了一个服务,那么这个正在运行的 Nginx 环境就是一个容器。

一个镜像可以启动多个容器,就像一个安装包可以安装出多个独立应用一样。


二、拉取镜像:docker pull

命令格式:

复制代码
docker pull <镜像名>

作用:从 Docker Hub 拉取镜像到本地。

示例:

复制代码
docker pull nginx

这条命令会下载最新版的 Nginx 镜像。

如果想指定版本,可以加上标签:

复制代码
docker pull mysql:8.0

这里的 8.0 表示 MySQL 的版本。


三、启动容器:docker run

命令格式:

复制代码
docker run <镜像名>

作用:基于镜像启动一个容器。

简单示例:

复制代码
docker run nginx

更常见的写法是后台运行:

复制代码
docker run -d -p 8080:80 --name my-nginx nginx

这条命令的含义是:

复制代码
-d              后台运行
-p 8080:80      把本机 8080 端口映射到容器 80 端口
--name my-nginx 给容器起名为 my-nginx
nginx           使用 nginx 镜像

启动成功后,可以在浏览器访问:

复制代码
http://localhost:8080

如果看到 Nginx 欢迎页面,说明容器已经运行成功。


四、查看运行中的容器:docker ps

命令格式:

复制代码
docker ps

作用:查看当前正在运行的容器。

如果想查看所有容器,包括已经停止的容器,可以使用:

复制代码
docker ps -a

常见输出信息包括:

复制代码
CONTAINER ID   容器 ID
IMAGE          使用的镜像
STATUS         当前状态
PORTS          端口映射
NAMES          容器名称

例如:

复制代码
docker ps

可以看到 my-nginx 是否正在运行。


五、停止容器:docker stop

命令格式:

复制代码
docker stop <容器ID或容器名>

作用:停止正在运行的容器。

示例:

复制代码
docker stop my-nginx

也可以使用容器 ID:

复制代码
docker stop 1a2b3c4d5e6f

停止容器后,容器不会被删除,只是变成停止状态。之后仍然可以重新启动:

复制代码
docker start my-nginx

六、删除容器:docker rm

命令格式:

复制代码
docker rm <容器ID或容器名>

作用:删除容器。

示例:

复制代码
docker rm my-nginx

通常需要先停止容器,再删除容器:

复制代码
docker stop my-nginx
docker rm my-nginx

如果要强制删除正在运行的容器,可以使用:

复制代码
docker rm -f my-nginx

不过日常使用中,更推荐先停止再删除。


七、删除镜像:docker rmi

命令格式:

复制代码
docker rmi <镜像ID或镜像名>

作用:删除本地镜像。

示例:

复制代码
docker rmi nginx

如果镜像正在被某个容器使用,需要先删除相关容器,再删除镜像。

查看本地已有镜像:

复制代码
docker images

删除指定版本镜像:

复制代码
docker rmi mysql:8.0

需要注意:

复制代码
docker rm  删除容器
docker rmi 删除镜像

这两个命令很容易混淆。


八、进入容器:docker exec

命令格式:

复制代码
docker exec -it <容器ID或容器名> /bin/bash

作用:进入正在运行的容器,并打开 Bash 终端。

示例:

复制代码
docker exec -it my-nginx /bin/bash

进入容器后,可以像操作 Linux 系统一样执行命令:

复制代码
ls
cd /usr/share/nginx/html
cat index.html

退出容器:

复制代码
exit

有些轻量级镜像没有 /bin/bash,可以使用 /bin/sh

复制代码
docker exec -it my-nginx /bin/sh

九、完整示例:运行一个 Nginx 容器

下面是一个完整的 Docker 使用流程。

1. 拉取镜像

复制代码
docker pull nginx

2. 启动容器

复制代码
docker run -d -p 8080:80 --name my-nginx nginx

3. 查看容器

复制代码
docker ps

4. 进入容器

复制代码
docker exec -it my-nginx /bin/bash

5. 停止容器

复制代码
docker stop my-nginx

6. 删除容器

复制代码
docker rm my-nginx

7. 删除镜像

复制代码
docker rmi nginx

整个流程可以概括为:

复制代码
拉取镜像 -> 启动容器 -> 查看容器 -> 进入容器 -> 停止容器 -> 删除容器 -> 删除镜像

十、扩展示例:运行 MySQL 容器

除了 Nginx,MySQL 也是 Docker 中非常常见的使用场景。

启动 MySQL 8.0:

复制代码
docker run -d \
  --name my-mysql \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=123456 \
  mysql:8.0

参数解释:

复制代码
-d                              后台运行
--name my-mysql                 容器名称
-p 3306:3306                    映射 MySQL 端口
-e MYSQL_ROOT_PASSWORD=123456   设置 root 密码
mysql:8.0                       使用 MySQL 8.0 镜像

进入 MySQL 容器:

复制代码
docker exec -it my-mysql /bin/bash

登录 MySQL:

复制代码
mysql -uroot -p

然后输入密码:

复制代码
123456

查看日志:

复制代码
docker logs my-mysql

停止并删除:

复制代码
docker stop my-mysql
docker rm my-mysql

十一、常用命令速查表

命令 作用
docker pull <镜像名> 拉取镜像
docker run <镜像名> 启动容器
docker ps 查看正在运行的容器
docker ps -a 查看所有容器
docker stop <容器> 停止容器
docker start <容器> 启动已停止的容器
docker restart <容器> 重启容器
docker rm <容器> 删除容器
docker rmi <镜像> 删除镜像
docker images 查看本地镜像
docker logs <容器> 查看容器日志
docker exec -it <容器> /bin/bash 进入容器

十二、总结

Docker 的基础操作主要围绕 镜像容器 展开。

可以这样记:

复制代码
镜像:应用的模板
容器:镜像运行后的实例

常用流程是:

复制代码
docker pull  拉取镜像
docker run   启动容器
docker ps    查看容器
docker exec  进入容器
docker stop  停止容器
docker rm    删除容器
docker rmi   删除镜像

掌握这些命令后,就可以完成大部分 Docker 入门操作。后续可以继续学习数据卷、网络、Dockerfile 和 Docker Compose,这些内容能帮助我们更方便地管理复杂项目和多容器应用。