首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

运维必备!Docker常用命令指南

一、Docker 基础概念速览

深入学习 Docker 常用命令之前,我们先来快速认识一下 Docker 的几个核心概念,

镜像(Image)

Docker 镜像可以看作是一个精心制作的 “软件包”,它包含了运行应用程序所需的一切,包括代码、运行时环境、库、环境变量以及各种依赖项 。这个 “软件包” 是只读的,就像一个模板,为容器的创建提供了标准化的基础。比如我们想要运行一个基于 Python 的 Web 应用,那么对应的镜像里就会包含 Python 解释器、相关的 Python 库以及我们编写的 Web 应用代码等。

容器(Container)

容器是从镜像创建的运行实例,容器为应用程序提供了一个隔离的运行环境,它拥有自己独立的文件系统、网络空间和进程空间,各个容器之间相互隔离,互不干扰 。

仓库(Repository)

仓库是集中存放镜像的地方,仓库分为公开仓库和私有仓库 。公开仓库如 Docker Hub,是一个全球开发者都可以访问和使用的公共镜像库,里面包含了海量的官方和社区贡献的镜像,我们可以从中轻松获取到各种常用软件的镜像,比如 Nginx、MySQL 等。私有仓库则通常搭建在企业内部,用于存储和管理企业自己的镜像,保证了镜像的安全性和私密性 。每个仓库可以包含多个镜像,而每个镜像又可以通过标签(tag)来区分不同的版本,方便我们进行版本管理和控制。

二、常用命令大集合

镜像相关命令

查看本地镜像

使用docker images命令可以查看本地已经下载的所有镜像。它会列出镜像的存储库名称(REPOSITORY)、标签(TAG)、镜像 ID(IMAGE ID)、创建时间(CREATED)以及所占用的空间(SIZE) 。例如:

$ docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEnginx               latest              05a60462f8ba        5 days ago          181MBredis               latest              5f515359c7f8        5 days ago          183MB

通过这个命令,我们可以清晰地了解本地都有哪些镜像。

拉取镜像

从镜像仓库中拉取镜像到本地,使用docker pull命令 。语法为docker pull [选项] [docker镜像地址:标签] 。如果不指定标签,默认会拉取latest标签的镜像。比如我们要拉取最新版的ubuntu镜像,可以这样操作:

$ docker pull ubuntu:latest

删除镜像

当我们不再需要某个镜像时,可以使用docker rmi命令来删除它 。命令格式为docker rmi 镜像id或镜像名称 。例如,要删除刚才拉取的ubuntu镜像(假设镜像 ID 为123456),可以执行:

$ docker rmi 123456

需要注意的是,如果该镜像正在被某个容器使用,是无法直接删除的,需要先停止并删除相关容器,才能删除镜像。

构建镜像

使用docker build命令可以根据Dockerfile文件构建自定义镜像 。Dockerfile是一个包含了一系列指令的文本文件,用于定义镜像的构建步骤 。假设我们有一个Dockerfile文件,位于当前目录下,要构建一个名为,可以使用以下命令,这会从当前目录读取 Dockerfile 并构建一个名为myapp:1.0的镜像

$ docker build -t myapp:1.0.

其中,-t参数用于指定镜像的名称和标签,最后的.表示Dockerfile所在的目录为当前目录。

容器操作命令

创建并运行容器

使用docker run命令可以基于镜像创建一个新的容器并运行它 。这个命令非常强大,有很多参数可以用来定制容器的运行方式 。例如,我们要基于nginx镜像创建一个容器,并将容器的 80 端口映射到主机的 8080 端口,以后台模式运行,可以这样写:

$ docker run -d -p 8080:80 nginx

这里的-d参数表示以后台模式运行容器,-p 8080:80表示将容器的 80 端口映射到主机的 8080 端口 。通过这种方式,我们就可以在浏览器中访问http://localhost:8080来查看nginx的默认页面了。

列出容器

docker ps命令用于列出当前正在运行的容器 。如果想要查看所有容器(包括已停止的),可以使用docker ps -a命令 。例如:

$ docker ps -aCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                  NAMESabcdef123456        nginx:latest        "nginx -g 'daemon of…"   5 minutes ago       Up 5 minutes                80/tcp                 my-nginx7890abcd1234        ubuntu:latest       "/bin/bash"              2 hours ago         Exited (0) 1 hour ago                              sleepy_shtern

输出结果中包含了容器 ID、镜像名称、启动命令、创建时间、状态、端口映射以及容器名称等信息,方便我们对容器进行管理和监控。

启动 / 停止 / 重启容器

启动容器

对于已经创建但处于停止状态的容器,可以使用docker start命令来启动它 。例如:docker start my-nginx 。

停止容器

使用docker stop命令可以停止正在运行的容器 。例如:docker stop my-nginx 。

重启容器

docker restart命令用于重启一个容器 。例如:docker restart my-nginx 。

进入容器

当我们需要在容器内部执行一些命令,对容器进行调试或管理时,可以使用docker exec命令进入正在运行的容器 。例如,要进入刚才创建的nginx容器,并打开一个交互式终端,可以执行:

$ docker exec -it my-nginx /bin/bash

这里的-it参数表示以交互式终端的方式进入容器,my-nginx是容器名称,/bin/bash是要在容器内执行的命令,即打开一个bash终端 。

删除容器

使用docker rm命令可以删除一个或多个容器 。例如,要删除刚才创建的sleepy_shtern容器,可以执行:

$ docker rm sleepy_shtern

同样需要注意的是,正在运行的容器是无法直接删除的,需要先停止容器,或者使用docker rm -f命令来强制删除(-f表示强制)。

网络管理命令

查看网络

使用docker network ls命令可以列出所有的 Docker 网络 。这些网络包括默认的bridge网络、host网络和none网络,以及用户自定义的网络 。例如:

$ docker network lsNETWORK ID          NAME                DRIVER              SCOPE0123456789ab        bridge              bridge              localabcdef123456        host                host                localfedcba987654        none                null                local

通过这个命令,我们可以了解当前系统中存在哪些网络,以及它们的驱动类型和作用范围。

创建网络

可以使用docker network create命令来创建自定义网络 。例如,创建一个名为my-network的桥接网络,可以执行:

$ docker network create --driver bridge my-network

这里的--driver bridge表示使用桥接驱动来创建网络,my-network是网络名称 。自定义网络可以帮助我们更好地管理容器之间的网络通信,实现更灵活的网络配置。

连接 / 断开容器与网络

连接容器到网络

使用docker network connect命令可以将容器连接到指定的网络 。例如,将my-nginx容器连接到刚才创建的my-network网络,可以执行:

$ docker network connect my-network my-nginx

断开容器与网络的连接

使用docker network disconnect命令可以断开容器与网络的连接 。例如:docker network disconnect my-network my-nginx 。

查看容器IP

$ docker inspect 容器名称或是ID

数据卷命令

创建数据卷

使用docker volume create命令可以创建一个新的数据卷 。数据卷是一个可供容器使用的特殊目录,它可以实现容器数据的持久化存储,并且可以在多个容器之间共享数据 。例如,创建一个名为my-volume的数据卷,可以执行:

$ docker volume create my-volume

列出数据卷

docker volume ls命令用于列出所有已创建的数据卷 。例如:

$ docker volume lsDRIVER              VOLUME NAMElocal               my-volume

查看数据卷信息

使用docker volume inspect命令可以查看指定数据卷的详细信息,包括数据卷的挂载点、驱动信息等 。例如:

$ docker volume inspect my-volume[   {       "CreatedAt": "2024-01-01T12:00:00Z",       "Driver": "local",       "Labels": {},       "Mountpoint": "/var/lib/docker/volumes/my-volume/_data",       "Name": "my-volume",       "Options": {},       "Scope": "local"   }]

删除数据卷

:当我们不再需要某个数据卷时,可以使用docker volume rm命令来删除它 。例如:docker volume rm my-volume 。需要注意的是,只有未被任何容器使用的数据卷才能被删除,如果数据卷正在被使用,需要先停止相关容器并断开数据卷的挂载,才能删除数据卷。

其他实用命令

查看 Docker 版本

使用docker version命令可以查看当前安装的 Docker 客户端和服务器的版本信息,包括版本号、构建信息、API 版本等 。例如:

$ docker versionClient:Version:           20.10.7API version:       1.41

获取系统信息

docker info命令用于获取 Docker 系统的详细信息,包括容器和镜像的数量、存储驱动、网络配置等 。例如:

$ docker info

清理资源

随着我们使用 Docker 的过程中,会产生一些临时镜像、停止的容器以及未被使用的数据卷等资源,这些资源会占用磁盘空间 。使用docker system prune命令可以清理这些无用的资源 。例如:

$ docker system prune

执行该命令时,会提示将要删除的资源,输入y确认后即可开始清理 。此外,还可以使用docker image prune命令来清理未被使用的镜像,docker container prune命令来清理停止的容器,docker volume prune命令来清理未被使用的数据卷 。

三、实战演练

接下来,我们通过一个具体的案例,来实际运用一下刚才学到的 Docker 命令,看看如何使用 Docker 部署一个简单的 Web 应用 。

假设我们有一个用 Flask 框架编写的 Python Web 应用,它的功能非常简单,就是在浏览器中访问时,返回 “Hello, Docker!” 这样一句话 。

准备工作

首先,确保你的机器上已经安装了 Docker。如果还没有安装,可以参考

准备好我们的 Flask 应用代码,保存为app.py文件,内容如下:

同时,我们还需要创建一个requirements.txt文件,用于指定应用所需的依赖包,内容为:

Flask

构建镜像

在应用代码所在的目录下,创建一个名为Dockerfile的文件,用于定义镜像的构建步骤 。Dockerfile的内容如下:

# 使用Python官方镜像作为基础镜像FROM python:3.9-slim# 设置工作目录WORKDIR /app# 将当前目录下的所有文件复制到容器的/app目录下COPY. /app# 安装应用所需的依赖包RUN pip install -r requirements.txt# 暴露5000端口,这是Flask应用默认运行的端口EXPOSE 5000# 定义容器启动时要执行的命令CMD ["python", "app.py"]

接下来,使用docker build命令来构建镜像 。在终端中进入到包含Dockerfile的目录,执行以下命令:

$ docker build -t my-flask-app:1.0.

这里的-t参数用于指定镜像的名称和标签,my-flask-app:1.0表示镜像名称为my-flask-app,标签为1.0 ,最后的.表示Dockerfile所在的目录为当前目录 。构建过程中,Docker 会根据Dockerfile中的指令逐步构建镜像,这个过程可能需要一些时间,取决于你的网络速度和机器性能 。构建完成后,我们可以使用docker images命令查看本地是否已经生成了我们的镜像 。

运行容器

镜像构建完成后,就可以使用docker run命令来创建并运行容器了 。执行以下命令:

$ docker run -d -p 8080:5000 my-flask-app:1.0

2.运行命令后,Docker 会基于我们的镜像创建一个新的容器,并在容器中启动 Flask 应用 。我们可以使用docker ps命令查看容器是否正在运行 。如果看到类似下面的输出,说明容器已经成功启动:

其他操作

进入容器

如果我们想要进入容器内部,查看应用的运行情况或者执行一些命令,可以使用docker exec命令 。例如,要进入刚才创建的my-flask-container容器,并打开一个交互式终端,可以执行:

这样就会进入到容器内部,我们可以在容器内执行各种命令,比如查看文件、运行脚本等 。

停止和删除容器:当我们不再需要运行这个容器时,可以使用docker stop命令停止容器,然后使用docker rm命令删除容器 。例如:

# 停止容器$ docker stop my-flask-container# 删除容器$ docker rm my-flask-container

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OsVtLVJNs8lFyfZVFwejO3kA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券