Docker 常用命令大全:从入门到精通

Docker 常用命令大全:从入门到精通

尽意
2024-10-23 / 0 评论 / 25 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年10月23日,已超过92天没有更新,若内容或图片失效,请留言反馈。
Docker 是一种开源的容器化平台,它能够将应用程序及其依赖打包成一个标准化的单元,从而实现在任何环境中的一致性运行。无论是开发、测试还是生产环境,Docker 都为我们提供了灵活且高效的解决方案。

本文将通过详细整理 Docker 的常用命令,帮助你从基础操作到高级使用,全面掌握 Docker 技能。

一、Docker 基础概念

在开始使用 Docker 之前,了解以下几个基础概念非常重要:

  • 镜像(Image):镜像是一个只读模板,包含了应用程序及其依赖的所有内容。镜像是创建容器的基础,它可以从公共仓库(如 Docker Hub)中获取,也可以通过 Dockerfile 自行构建。
  • 容器(Container):容器是基于镜像的实例,它封装了应用程序的所有依赖和运行环境。每个容器相互隔离,且可以独立运行。
  • 仓库(Registry):镜像存储的地方。最常用的仓库是 Docker Hub,但也可以搭建私有仓库。
  • 数据卷(Volume):数据卷是一种 Docker 提供的持久化存储方式,数据卷存储在容器外部,用于保存容器产生的持久性数据。

二、Docker 安装与启动

1. 安装 Docker

根据你的操作系统,选择适当的安装方式:

  • Ubuntu/Debian:
sudo apt update
sudo apt install docker.io
  • CentOS:
sudo yum install docker
  • Windows/MacOS:可以通过 Docker Desktop 来安装。

安装完成后,启动 Docker 服务:

sudo systemctl start docker

2. 检查 Docker 是否正确安装

安装完成后可以通过以下命令检查 Docker 是否安装成功,并查看版本号:

docker --version

这将输出类似如下的信息:

Docker version 20.10.7, build f0df350

三、镜像管理

1. 拉取镜像

拉取镜像是使用 Docker 的第一步,镜像从远程仓库(如 Docker Hub)下载。可以使用以下命令来拉取镜像:

docker pull [镜像名]:[标签]

标签通常用来表示镜像的版本号,例如拉取 ubuntu 的 20.04 版本:

docker pull ubuntu:20.04

如果没有指定标签,Docker 默认会拉取 latest 标签的版本:

docker pull nginx

2. 查看本地镜像列表

查看主机上已有的镜像:

docker images

输出示例:

REPOSITORY          TAG       IMAGE ID       CREATED         SIZE
nginx               latest    2b95cfa1f442   5 days ago      133MB
ubuntu              20.04     ba6acccedd29   2 weeks ago     72.8MB

这列出了镜像的名称(REPOSITORY)、标签(TAG)、镜像 ID、创建时间和大小。

3. 删除镜像

如果不再需要某个镜像,可以将其删除:

docker rmi [镜像ID]

例如,删除 ID 为 ba6acccedd29 的镜像:

docker rmi ba6acccedd29

如果镜像正在被使用,可以通过 -f 参数强制删除:

docker rmi -f [镜像ID]

4. 自定义镜像:构建 Dockerfile

通过 Dockerfile,用户可以构建自定义的镜像。Dockerfile 是包含一系列命令的文本文件,定义了如何构建镜像。使用 docker build 命令可以基于 Dockerfile 构建镜像。

Dockerfile 示例:

# 使用基础镜像
FROM ubuntu:20.04

# 安装应用
RUN apt-get update && apt-get install -y nginx

# 复制配置文件
COPY ./my-nginx-config /etc/nginx/nginx.conf

# 暴露端口
EXPOSE 80

# 启动命令
CMD ["nginx", "-g", "daemon off;"]

构建镜像:

docker build -t my-nginx:v1 .

此命令将在当前目录下查找 Dockerfile 并构建一个名为 my-nginx 的新镜像,版本为 v1

四、容器管理

1. 运行容器

启动一个基于镜像的容器:

docker run [选项] [镜像名]:[标签]

常用选项:

  • -d:后台运行容器。
  • -p:指定端口映射(格式:宿主机端口:容器端口)。
  • --name:指定容器名称。
  • -v:挂载数据卷(格式:宿主机路径:容器路径)。

例如,运行一个 Nginx 容器并映射 8080 端口到容器的 80 端口:

docker run -d -p 8080:80 --name mynginx nginx

2. 查看容器状态

查看当前运行的容器列表:

docker ps

输出示例:

CONTAINER ID   IMAGE       COMMAND                  CREATED        STATUS        PORTS                  NAMES
e5080f377d38   nginx       "nginx -g 'daemon of…"   3 hours ago    Up 3 hours    0.0.0.0:8080->80/tcp   mynginx

如果想查看所有容器(包括停止的):

docker ps -a

3. 停止、启动和重启容器

停止容器:

docker stop [容器ID或名称]

启动一个已停止的容器:

docker start [容器ID或名称]

重启容器:

docker restart [容器ID或名称]

4. 进入容器

如果想在运行中的容器内执行命令,可以使用 docker exec 命令进入容器:

docker exec -it [容器ID或名称] /bin/bash

例如,进入一个 Nginx 容器并进入 bash 终端:

docker exec -it mynginx /bin/bash

5. 删除容器

如果容器已经停止或不再需要,可以通过以下命令删除它:

docker rm [容器ID或名称]

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

docker rm -f [容器ID或名称]

五、数据管理

1. 数据卷创建与挂载

数据卷用于持久化容器中的数据,即使容器删除或重新创建,数据卷中的数据仍然存在。

创建数据卷:

docker volume create [卷名]

查看已创建的数据卷:

docker volume ls

在启动容器时,将数据卷挂载到容器中:

docker run -d -v [卷名]:[容器路径] [镜像名]

例如,将名为 my-volume 的卷挂载到容器的 /data 目录下:

docker run -d -v my-volume:/data ubuntu

删除数据卷:

docker volume rm [卷名]

六、网络管理

1. 自定义 Docker 网络

Docker 默认会为容器创建一个桥接网络。你也可以创建自定义网络,以便容器之间通过网络名称互相通信。

创建自定义网络:

docker network create [网络名]

将容器连接到自定义网络:

docker network connect [网络名] [容器ID或名称]

2. 查看网络配置

查看 Docker 中已创建的网络:

docker network ls

显示特定网络的详细信息:

docker network inspect [网络名]

七、Docker 日志与监控

1. 查看容器日志

可以通过 docker logs 命令查看容器的日志输出:

docker logs [容器ID或名称]

如果需要实时查看日志,可以加上 -f 参数:

docker logs -f [容器ID或名称]

2. 监控容器资源

查看容器的 CPU、内存、网络等资源使用情况:

docker stats

输出示例:

CONTAINER ID   NAME       CPU
1

评论 (0)

取消