Docker 常用命令易懂教程

请添加图片描述

Docker 常用命令教程

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。Docker 的核心是容器,容器可以被看作是一个轻量级的、可移植的、自给自足的软件单元。

一、基本概念

在开始学习命令之前,我们先简单了解几个核心概念:

  • 镜像 (Image):Docker 镜像是一个只读模板,包含了创建 Docker 容器所需的所有文件和配置,例如操作系统、应用程序、库、依赖等。你可以把它看作是虚拟机的“模板”或“快照”。
  • 容器 (Container):Docker 容器是镜像的运行实例。你可以启动、停止、删除容器,每个容器都是相互隔离的、独立的运行环境。
  • 仓库 (Registry):Docker 仓库是用于存放 Docker 镜像的地方,例如 Docker Hub 是一个公共的镜像仓库。你可以从仓库下载镜像,也可以将自己的镜像上传到仓库。

二、常用命令

1. docker pull:拉取镜像

从 Docker Hub 或其他镜像仓库下载镜像到本地。 场景: 你需要运行一个 Nginx Web 服务器。

docker pull nginx

这将从 Docker Hub 下载最新的 Nginx 镜像。您也可以指定版本:

docker pull nginx:1.20

2. docker images:列出本地镜像

显示本地主机上已下载的所有 Docker 镜像。

场景: 你想查看本地有哪些可用的镜像可以用来创建容器。

docker images

输出会包含仓库名(REPOSITORY)、标签(TAG)、镜像ID(IMAGE ID)、创建时间(CREATED)和大小(SIZE)等信息。

在这里插入图片描述

3. docker rmi:删除本地镜像

从本地主机删除一个或多个 Docker 镜像。

场景: 你不再需要某个旧版本的 Node.js 镜像,想要释放磁盘空间。

docker rmi <镜像ID或镜像名:标签>

例如:

docker rmi 7d88524602e0
docker rmi node:14

要强制删除正在被容器使用的镜像,需要先停止并删除相关的容器,或者使用 -f 参数强制删除(不推荐,可能导致数据丢失)。

4. docker search:搜索镜像

在 Docker Hub 上搜索可用的镜像。

场景: 你需要一个用于 MySQL 数据库的 Docker 镜像,但不确定使用哪个。

docker search mysql

输出会列出与关键词相关的镜像,包括描述、星级(表示受欢迎程度)和是否官方。

5. docker push:推送镜像

将本地镜像上传到 Docker Hub 或其他配置的镜像仓库。

场景: 你创建了一个自定义的 Web 应用程序镜像,想要分享给团队或部署到生产环境。

docker tag <本地镜像名:标签> <仓库用户名>/<镜像名:标签>
docker login # 如果未登录需要先登录 Docker Hub 或其他仓库
docker push <仓库用户名>/<镜像名:标签>

例如:

docker tag my-web-app:latest yourusername/my-web-app:latest
docker login
docker push yourusername/my-web-app:latest

三、容器操作

Docker 容器是使用 Docker 镜像创建的运行实例。

1. docker run:创建并运行容器

使用指定的镜像创建一个新的容器并运行它。

场景: 你想基于刚才拉取的 Nginx 镜像启动一个 Web 服务器,并将容器的 80 端口映射到主机的 8080 端口。

docker run -d -p 8080:80 --name my-nginx nginx
  • -d:在后台(守护进程)运行容器。
  • -p 8080:80:将主机的 8080 端口映射到容器的 80 端口。
  • --name my-nginx:为容器指定一个名称,方便后续操作。
  • nginx:使用的镜像名称。

其他常见 docker run 参数:

  • -i:以交互模式运行容器,通常与 -t 结合使用。
  • -t:为容器分配一个伪终端(tty)。
  • -it:常用的组合,用于进入容器的交互式 Shell。
  • -v <主机目录>:<容器目录>:将主机上的目录或命名卷挂载到容器中,用于数据持久化。
  • -e <环境变量>=<值>:设置容器内的环境变量。
  • --rm:容器退出后自动删除。
  • --network <网络名称>:将容器连接到指定的 Docker 网络。

2. docker ps:列出正在运行的容器

显示当前正在运行的 Docker 容器。

场景: 你想查看哪些容器正在运行以及它们的状态。

docker ps

输出会包含容器ID(CONTAINER ID)、镜像(IMAGE)、命令(COMMAND)、创建时间(CREATED)、状态(STATUS)、端口映射(PORTS)和名称(NAMES)等信息。

3. docker ps -a:列出所有容器

显示所有容器,包括正在运行的和已经停止的。

场景: 你想查看之前运行过的容器记录。

docker ps -a

4. docker stop:停止容器

停止一个或多个正在运行的容器。

场景: 你想临时停止之前启动的 my-nginx 容器。

docker stop my-nginx

可以使用容器ID或容器名称来指定要停止的容器。

5. docker start:启动已停止的容器

启动一个或多个已经停止的容器。

场景: 你想重新启动之前停止的 my-nginx 容器。

docker start my-nginx

可以使用容器ID或容器名称来指定要启动的容器。

6. docker restart:重启容器

重启一个或多个正在运行的容器。

场景: 你修改了应用程序的配置,需要重启容器使更改生效。

docker restart my-nginx

可以使用容器ID或容器名称来指定要重启的容器。

7. docker rm:删除容器

删除一个或多个已经停止的容器。

场景: 你不再需要某个已经停止的容器,想要清理掉。

docker rm <容器ID或容器名称>

例如:

docker rm e7a3b5c1d2f0
docker rm my-nginx

要删除正在运行的容器,需要先停止它。可以使用 -f 参数强制删除正在运行的容器,但不推荐。

8. docker logs:查看容器日志

查看容器的输出日志。

场景: 你的 Web 应用程序在容器中运行,你想查看它的运行日志以排查问题。

docker logs my-nginx

可以使用 -f 参数实时跟踪日志输出。

docker logs -f my-nginx

9. docker exec:在运行的容器中执行命令

在一个正在运行的容器中执行命令。

场景: 你的数据库容器正在运行,你想进入容器的 Shell 执行一些管理命令。

docker exec -it <容器ID或容器名称> bash
  • -it:以交互模式分配一个伪终端到容器的标准输入、输出和错误流。
  • bash:要在容器中执行的命令(通常是 Shell)。

10. docker cp:在主机和容器之间复制文件

将文件或目录从主机复制到容器,或从容器复制到主机。

场景: 你想将主机上的一个配置文件复制到正在运行的 Web 应用程序容器中。

docker cp <主机路径> <容器ID或容器名称>:<容器路径>

或者从容器复制到主机:

docker cp <容器ID或容器名称>:<容器路径> <主机路径>

例如:

docker cp ./myconfig.ini my-nginx:/etc/nginx/conf.d/default.conf
docker cp my-nginx:/var/log/nginx/access.log ./access.log.bak

11. docker stats:查看容器资源使用情况

显示容器的 CPU、内存、网络 I/O 和磁盘 I/O 等资源使用统计信息。

场景: 你想监控容器的资源消耗情况。

docker stats

可以指定容器名称或 ID 来查看特定容器的统计信息。

docker stats my-nginx

12. docker inspect:查看容器/镜像的详细信息

显示关于容器或镜像的底层信息,以 JSON 格式输出。

场景: 你想查看容器的网络配置或环境变量等详细信息。

docker inspect my-nginx
docker inspect nginx

可以使用 --format 参数自定义输出格式。

四、其他常用命令

1. docker network:管理 Docker 网络

用于管理 Docker 网络,例如创建、列出和删除网络。

docker network ls
docker network create my-network
docker network connect my-network my-container
docker network disconnect my-network my-container
docker network rm my-network

2. docker volume:管理 Docker 数据卷

用于管理 Docker 数据卷,用于持久化存储容器数据。

docker volume ls
docker volume create my-volume
docker run -d -v my-volume:/data --name my-data-container some-image
docker volume inspect my-volume
docker volume rm my-volume

3. docker compose:使用 Docker Compose 管理多容器应用

用于定义和运行多容器 Docker 应用程序。通常通过 docker-compose.yml 文件进行配置。

docker-compose up -d # 根据 docker-compose.yml 文件创建并启动服务
docker-compose down # 停止并删除 docker-compose.yml 文件中定义的服务
docker-compose ps # 列出 Docker Compose 管理的容器
docker-compose logs <service_name> # 查看特定服务的日志

五、常用 Docker 命令表格

命令描述常用场景
docker pull从镜像仓库拉取镜像下载运行应用所需的镜像,例如 docker pull nginx
docker images列出本地镜像查看本地可用的镜像列表
docker rmi删除本地镜像清理不再需要的镜像,释放磁盘空间
docker search在 Docker Hub 上搜索镜像查找满足特定需求的镜像,例如 docker search mysql
docker run创建并运行一个新的容器启动一个新的应用容器,例如 docker run -d -p 8080:80 nginx
docker ps列出正在运行的容器查看当前正在运行的容器及其状态
docker ps -a列出所有容器(包括已停止的)查看所有容器的记录,包括历史运行的容器
docker stop停止一个或多个正在运行的容器临时停止正在运行的容器
docker start启动一个或多个已停止的容器重新启动之前停止的容器
docker restart重启一个或多个正在运行的容器需要重新加载配置或服务时重启容器
docker rm删除一个或多个已停止的容器清理不再需要的容器
docker logs查看容器的日志输出排查容器运行问题,查看应用程序日志
docker exec在运行的容器中执行命令进入容器内部执行操作,例如查看文件、执行脚本等
docker cp在主机和容器之间复制文件上传配置文件到容器,从容器导出日志文件等
docker stats查看容器的资源使用情况(CPU、内存、网络等)监控容器的性能和资源消耗
docker inspect查看容器或镜像的详细信息(JSON 格式)获取容器或镜像的底层配置信息,例如网络配置、环境变量等
docker network ls列出 Docker 网络查看当前 Docker 网络列表
docker volume ls列出 Docker 数据卷查看当前 Docker 数据卷列表
docker compose up根据 docker-compose.yml 文件创建并启动服务(多容器应用)一键启动定义好的多容器应用程序
docker compose down停止并删除 docker-compose.yml 文件中定义的服务(多容器应用)停止并清理通过 Docker Compose 启动的应用

希望这个教程能够帮助你更好地理解和使用 Docker!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值