您的位置:首页 > 游戏 > 手游 > docker实战基础一 (Docker基础命令)

docker实战基础一 (Docker基础命令)

2024/12/22 20:26:53 来源:https://blog.csdn.net/jundao1997/article/details/141749897  浏览:    关键词:docker实战基础一 (Docker基础命令)

一、docker安装

# step 1: 安装必要的一些系统工具

yum install -y yum-utils device-mapper-persistent-data lvm2

# Step 2: 添加软件源信息

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# Step 3: 更新并安装 Docker-CE

#我们在更新yum源或者出现配置yum源之后,通常都会使用yum makecache 生成缓存

yum makecache fast

yum -y install docker-ce

# Step 4: 开启Docker服务

service docker start

二、docker命令

1.查看docker版本

docker version

详细注释版

[root@localhost grafana]# docker version
Client: Docker Engine - CommunityVersion:           26.1.4       # Docker 客户端的版本号API version:       1.45         # Docker 客户端使用的 API 版本Go version:        go1.21.11    # 用于构建 Docker 客户端的 Go 语言版本Git commit:        5650f9b      # Docker 客户端的 Git 提交哈希值Built:             Wed Jun  5 11:32:04 2024 # Docker 客户端的构建时间OS/Arch:           linux/amd64  # Docker 客户端运行的操作系统和架构Context:           default      # Docker 客户端的上下文名称Server: Docker Engine - CommunityEngine:Version:          26.1.4       # Docker 服务器(引擎)的版本号API version:      1.45 (minimum version 1.24) # Docker 服务器使用的 API 版本(最低版本为 1.24)Go version:       go1.21.11    # 用于构建 Docker 服务器的 Go 语言版本Git commit:       de5c9cf      # Docker 服务器的 Git 提交哈希值Built:            Wed Jun  5 11:31:02 2024 # Docker 服务器的构建时间OS/Arch:          linux/amd64  # Docker 服务器运行的操作系统和架构Experimental:     false        # 是否启用了实验特性(此处为 false,表示未启用)containerd:Version:          1.6.33       # Docker 使用的 containerd 版本GitCommit:        d2d58213f83a351ca8f528a95fbd145f5654e957 # containerd 的 Git 提交哈希值runc:Version:          1.1.12       # Docker 使用的 runc 版本GitCommit:        v1.1.12-0-g51d5e94 # runc 的 Git 提交哈希值docker-init:Version:          0.19.0       # Docker 使用的 docker-init 版本GitCommit:        de40ad0      # docker-init 的 Git 提交哈希值

详细说明

Client 部分
  • Version: Docker 客户端的版本号,表示你当前安装的 Docker 客户端的版本。
  • API version: Docker 客户端使用的 API 版本,表示客户端和服务器之间通信所使用的 API 的版本。
  • Go version: 用于构建 Docker 客户端的 Go 语言版本。
  • Git commit: Docker 客户端的 Git 提交哈希值,用于标识特定的代码版本。
  • Built: Docker 客户端的构建时间,表示这个版本的 Docker 客户端是在什么时候构建的。
  • OS/Arch: Docker 客户端运行的操作系统和架构,此处为 linux/amd64,表示在 Linux 操作系统和 x86_64 架构上运行。
  • Context: Docker 客户端的上下文名称,表示当前使用的 Docker 上下文环境。
Server 部分
  • Version: Docker 服务器(引擎)的版本号,表示你当前安装的 Docker 服务器的版本。
  • API version: Docker 服务器使用的 API 版本,表示服务器支持的 API 版本范围。
  • Go version: 用于构建 Docker 服务器的 Go 语言版本。
  • Git commit: Docker 服务器的 Git 提交哈希值,用于标识特定的代码版本。
  • Built: Docker 服务器的构建时间,表示这个版本的 Docker 服务器是在什么时候构建的。
  • OS/Arch: Docker 服务器运行的操作系统和架构,此处为 linux/amd64,表示在 Linux 操作系统和 x86_64 架构上运行。
  • Experimental: 是否启用了实验特性。此处为 false,表示未启用实验特性。
containerd 部分
  • Version: Docker 使用的 containerd 版本。containerd 是一个容器运行时,用于管理容器的生命周期。
  • GitCommit: containerd 的 Git 提交哈希值,用于标识特定的代码版本。
runc 部分
  • Version: Docker 使用的 runc 版本。runc 是一个 CLI 工具,用于根据 OCI 规范运行容器。
  • GitCommit: runc 的 Git 提交哈希值,用于标识特定的代码版本。
docker-init 部分
  • Version: Docker 使用的 docker-init 版本。docker-init 是一个小型的 init 系统,用于在容器中运行应用程序。
  • GitCommit: docker-init 的 Git 提交哈希值,用于标识特定的代码版本。

2.查看docker的详细信息

docker info

详细注释的 docker info 命令输出,帮助你更好地理解各个部分的功能和用途。

[root@localhost ~]# docker info
Client: Docker Engine - CommunityVersion:    26.1.4        # Docker 客户端的版本号Context:    default       # Docker 客户端的上下文名称Debug Mode: false         # Docker 客户端的调试模式状态(false 表示未启用)Plugins:                  # Docker 客户端安装的插件buildx: Docker Buildx (Docker Inc.)   # Docker Buildx 插件,用于构建多平台镜像Version:  v0.14.1      # Buildx 插件的版本号Path:     /usr/libexec/docker/cli-plugins/docker-buildx # Buildx 插件的路径compose: Docker Compose (Docker Inc.) # Docker Compose 插件,用于定义和运行多容器 Docker 应用Version:  v2.27.1      # Compose 插件的版本号Path:     /usr/libexec/docker/cli-plugins/docker-compose # Compose 插件的路径Server:Containers: 0             # 服务器上当前存在的容器总数Running: 0               # 当前运行中的容器数量Paused: 0                # 当前暂停的容器数量Stopped: 0               # 当前停止的容器数量Images: 0                 # 服务器上存在的 Docker 镜像总数Server Version: 26.1.4    # Docker 服务器(引擎)的版本号Storage Driver: overlay2  # Docker 使用的存储驱动,这里是 overlay2Backing Filesystem: xfs  # 底层文件系统,这里是 xfsSupports d_type: true    # 底层文件系统是否支持 d_type(true 表示支持)Using metacopy: false    # 是否使用元数据拷贝功能(false 表示未使用)Native Overlay Diff: true # 本地支持 overlay diff(true 表示支持)userxattr: false         # 是否启用了用户扩展属性(false 表示未启用)Logging Driver: json-file # Docker 使用的默认日志驱动,这里是 json-fileCgroup Driver: cgroupfs   # Docker 使用的 cgroup 驱动,这里是 cgroupfsCgroup Version: 1         # cgroup 的版本,这里是版本 1Plugins:                  # Docker 服务器安装的插件Volume: local            # 支持的卷插件,这里是 localNetwork: bridge host ipvlan macvlan null overlay # 支持的网络插件,包括 bridge, host, ipvlan, macvlan, null, overlayLog: awslogs fluentd gcplogs gelf journald json-file local splunk syslog # 支持的日志插件Swarm: inactive           # Swarm 模式状态(inactive 表示未启用)Runtimes: io.containerd.runc.v2 runc # Docker 支持的运行时,包括 io.containerd.runc.v2 和 runcDefault Runtime: runc     # Docker 使用的默认运行时,这里是 runcInit Binary: docker-init  # Docker 使用的 init 二进制文件containerd version: d2d58213f83a351ca8f528a95fbd145f5654e957 # containerd 的版本和 Git 提交哈希值runc version: v1.1.12-0-g51d5e94 # runc 的版本和 Git 提交哈希值init version: de40ad0     # docker-init 的版本和 Git 提交哈希值Security Options:         # Docker 使用的安全选项seccomp                  # seccomp 安全选项Profile: builtin        # seccomp 的配置文件,这里是内置配置文件Kernel Version: 3.10.0-1160.el7.x86_64 # 操作系统内核版本Operating System: CentOS Linux 7 (Core) # 操作系统名称和版本OSType: linux         # 操作系统类型,这里是 linuxArchitecture: x86_64  # 系统架构,这里是 x86_64CPUs: 2               # 系统的 CPU 核心数量Total Memory: 3.701GiB # 系统的总内存Name: localhost.localdomain # 主机名ID: d89b3016-e475-4042-94a5-a6c58a9d6331 # Docker 服务器的唯一 IDDocker Root Dir: /var/lib/docker # Docker 使用的根目录Debug Mode: false     # Docker 服务器的调试模式状态(false 表示未启用)Experimental: false   # 是否启用了实验特性(false 表示未启用)Insecure Registries:  # 不安全的镜像仓库列表127.0.0.0/8          # 包含所有在 127.0.0.0/8 地址范围内的镜像仓库Live Restore Enabled: false # 是否启用了实时恢复功能(false 表示未启用)

详细说明

Client 部分
  • Version: Docker 客户端的版本号,表示你当前安装的 Docker 客户端的版本。
  • Context: Docker 客户端的上下文名称,表示当前使用的 Docker 上下文环境。
  • Debug Mode: Docker 客户端的调试模式状态,false 表示未启用调试模式。
插件
  • buildx: Docker Buildx 插件,用于构建多平台镜像。
    • Version: Buildx 插件的版本号。
    • Path: Buildx 插件的路径。
  • compose: Docker Compose 插件,用于定义和运行多容器 Docker 应用。
    • Version: Compose 插件的版本号。
    • Path: Compose 插件的路径。
Server 部分
  • Containers: 当前存在的容器总数,包括运行中的、暂停的和停止的容器数量。
    • Running: 当前运行中的容器数量。
    • Paused: 当前暂停的容器数量。
    • Stopped: 当前停止的容器数量。
  • Images: 服务器上存在的 Docker 镜像总数。
  • Server Version: Docker 服务器(引擎)的版本号,表示你当前安装的 Docker 服务器的版本。
  • Storage Driver: Docker 使用的存储驱动,这里是 overlay2
    • Backing Filesystem: 底层文件系统,这里是 xfs
    • Supports d_type: 底层文件系统是否支持 d_typetrue 表示支持。
    • Using metacopy: 是否使用元数据拷贝功能,false 表示未使用。
    • Native Overlay Diff: 本地支持 overlay diff,true 表示支持。
    • userxattr: 是否启用了用户扩展属性,false 表示未启用。
  • Logging Driver: Docker 使用的默认日志驱动,这里是 json-file
  • Cgroup Driver: Docker 使用的 cgroup 驱动,这里是 cgroupfs。生产建议使用systemd.
  • Cgroup Version: cgroup 的版本,这里是版本 1。
插件
  • Volume: 支持的卷插件,这里是 local
  • Network: 支持的网络插件,包括 bridgehostipvlanmacvlannulloverlay
  • Log: 支持的日志插件,包括 awslogsfluentdgcplogsgelfjournaldjson-filelocalsplunksyslog
其他信息
  • Swarm: Swarm 模式状态,inactive 表示未启用。
  • Runtimes: Docker 支持的运行时,包括 io.containerd.runc.v2 和 runc
  • Default Runtime: Docker 使用的默认运行时,这里是 runc
  • Init Binary: Docker 使用的 init 二进制文件。
版本信息
  • containerd version: containerd 的版本和 Git 提交哈希值。
  • runc version: runc 的版本和 Git 提交哈希值。
  • init version: docker-init 的版本和 Git 提交哈希值。
安全选项
  • seccomp: seccomp 安全选项。
    • Profile: seccomp 的配置文件,这里是内置配置文件。
系统信息
  • Kernel Version: 操作系统内核版本。
  • Operating System: 操作系统名称和版本,这里是 CentOS Linux 7 (Core)
  • OSType: 操作系统类型,这里是 linux
  • Architecture: 系统架构,这里是 x86_64
  • CPUs: 系统的 CPU 核心数量。
  • Total Memory: 系统的总内存。
  • Name: 主机名。
  • ID: Docker 服务器的唯一 ID。
  • Docker Root Dir: Docker 使用的根目录。
其他
  • Debug Mode: Docker 服务器的调试模式状态,false 表示未启用。
  • Experimental: 是否启用了实验特性,false 表示未启用。
  • Insecure Registries: 不安全的镜像仓库列表,包括所有在 127.0.0.0/8 地址范围内的镜像仓库。
  • Live Restore Enabled: 是否启用了实时恢复功能,false 表示未启用。

3.搜索镜像

docker search nginx

基本用法

docker search nginx

这个命令将会在 Docker Hub 中搜索包含关键词 nginx 的镜像,并显示相关的结果。

输出说明

运行 docker search nginx 后,你会看到一个表格形式的输出,包含以下列:

  • NAME:镜像的名称。
  • DESCRIPTION:镜像的描述信息。
  • STARS:该镜像在 Docker Hub 上的星级评分,表示用户对该镜像的认可程度。
  • OFFICIAL:表示该镜像是否为官方镜像,官方镜像标识为“OK”。
  • AUTOMATED:表示该镜像是否为自动构建镜像,标识为“OK”。

例如:

$ docker search nginx
NAME                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                          Official build of Nginx.                        17000     [OK]
jwilder/nginx-proxy            Automated Nginx reverse proxy for docker con…   2000                 [OK]
richarvey/nginx-php-fpm        Container running Nginx + PHP-FPM capable of…   1200                 [OK]
jc21/nginx-proxy-manager       Docker container for managing Nginx proxy ho…   800                  [OK]
bitnami/nginx                  Bitnami nginx Docker Image                      700                  [OK]
...

过滤结果

你可以通过一些选项来过滤搜索结果,以便更好地找到你需要的镜像。

1. --filter 选项
  • stars:按星级评分进行过滤。例如,搜索星级评分大于等于 1000 的 nginx 镜像:

    docker search nginx --filter=stars=1000
    
  • is-official:按是否为官方镜像进行过滤。例如,搜索官方的 nginx 镜像:

    docker search nginx --filter=is-official=true
    
  • is-automated:按是否为自动构建镜像进行过滤。例如,搜索自动构建的 nginx 镜像:

    docker search nginx --filter=is-automated=true
    
2. --limit 选项

你可以使用 --limit 选项限制显示的搜索结果数量。例如,限制结果为前 5 个:

docker search nginx --limit=5

实战案例

假设你想找到一个星级评分大于 1000 的官方 nginx 镜像:

docker search nginx --filter=stars=1000 --filter=is-official=true

输出将类似于:

NAME      DESCRIPTION                 STARS     OFFICIAL   AUTOMATED
nginx     Official build of Nginx.    17000     [OK]

这样你就可以快速找到符合你要求的镜像。

4.拉取下载镜像

 docker  pull nginx

docker pull 命令用于从 Docker 镜像仓库(通常是 Docker Hub)中拉取镜像。拉取镜像是指将镜像从远程仓库下载到本地,以便你在本地环境中使用。

docker pull 命令语法

docker pull [OPTIONS] NAME[:TAG|@DIGEST]
  • NAME:镜像的名称。例如,nginx
  • TAG:镜像的标签(可选)。如果不指定标签,默认会拉取 latest 标签的镜像。
  • DIGEST:镜像的摘要(可选),是一种唯一标识镜像内容的哈希值。

示例:拉取 nginx 镜像

docker pull nginx

这条命令会从 Docker Hub 拉取 nginx 镜像,默认标签为 latest

输出解析

运行 docker pull nginx 后,你会看到类似下面的输出:

Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete
9b829c64cbba: Pull complete
d1929a3063f5: Pull complete
Digest: sha256:bcf2f368fe67e26fe8a10d59f6b0b5f8f1a3b8b1da88a1c1b51c4d033cc7ac6a
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

解释:

  1. Using default tag: latest:未指定标签,默认使用 latest 标签。
  2. latest: Pulling from library/nginx:从官方库 library/nginx 拉取 latest 标签的镜像。
  3. 一系列的 Pull complete:表示各层次镜像已经成功下载。
  4. Digest:显示镜像的 SHA256 摘要。
  5. Status:下载状态,表示下载了最新的镜像。
  6. docker.io/library/nginx:latest:拉取到的镜像名称和标签。

指定标签拉取镜像

你可以指定特定的标签来拉取镜像。例如,拉取 nginx1.19.6 版本:

docker pull nginx:1.19.6

使用摘要拉取镜像

你也可以使用镜像的摘要来拉取镜像。例如:

docker pull nginx@sha256:bcf2f368fe67e26fe8a10d59f6b0b5f8f1a3b8b1da88a1c1b51c4d033cc7ac6a

docker pull 常用选项

  • --all-tags 或 -a:拉取所有标签的镜像。

    docker pull -a nginx
    

实战案例

使用特定版本的 nginx 镜像

假设你想使用 nginx1.21.0 版本:

docker pull nginx:1.21.0

然后你可以运行一个容器来验证镜像是否正确拉取:

docker run --rm -d -p 8080:80 nginx:1.21.0

访问 http://localhost:8080,你应当能看到 nginx 的欢迎页面。

拉取所有标签的 nginx 镜像
docker pull -a nginx

这会拉取 nginx 镜像的所有标签版本。注意,这可能会占用较多存储空间。

5.查看本地镜像

docker images 命令用于列出本地的 Docker 镜像,包括镜像的名称、标签、镜像 ID、创建时间和大小等信息。

命令语法

docker images [OPTIONS] [REPOSITORY[:TAG]]
  • OPTIONS:命令的选项参数。
  • REPOSITORY[:TAG]:可选参数,用于指定要列出的镜像库和标签。如果不指定,会列出所有的本地镜像。

常用选项

  • -a--all:列出所有镜像(包括中间层镜像)。
  • --digests:显示镜像的摘要信息。
  • -q--quiet:只显示镜像 ID。

示例

列出所有本地镜像
docker images

输出示例:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              d1a364dc548d        3 days ago          133MB
ubuntu              20.04               d13c942271d6        2 weeks ago         72.9MB
hello-world         latest              feb5d9fea6a5        3 months ago        13.3kB

解释:

  • REPOSITORY:镜像的仓库名称。
  • TAG:镜像的标签。
  • IMAGE ID:镜像的唯一标识符。
  • CREATED:镜像的创建时间。
  • SIZE:镜像的大小。
列出所有本地镜像(包括中间层)
docker images -a
显示镜像的摘要信息
docker images --digests

输出示例:

REPOSITORY          TAG                 DIGEST                                                                    IMAGE ID            CREATED             SIZE
nginx               latest              sha256:bcf2f368fe67e26fe8a10d59f6b0b5f8f1a3b8b1da88a1c1b51c4d033cc7ac6a   d1a364dc548d        3 days ago          133MB
ubuntu              20.04               sha256:cfb3dc5a7e8d8a8a5a1d8a8a5a1d8a8a5a1d8a8a5a1d8a8a5a1d8a8a5a1d8a8a   d13c942271d6        2 weeks ago         72.9MB
只显示镜像 ID
docker images -q

输出示例:

d1a364dc548d
d13c942271d6
feb5d9fea6a5

过滤特定的镜像

你可以指定镜像的仓库和标签来过滤显示特定的镜像。例如:

docker images nginx

只显示 nginx 镜像的所有标签:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              d1a364dc548d        3 days ago          133MB
nginx               1.19.6              d1a364dc548d        3 days ago          133MB

清理镜像

在实际应用中,可能会有一些不再需要的镜像占用磁盘空间。你可以使用 docker rmi 命令来删除镜像。例如,删除指定的镜像:

docker rmi IMAGE_ID

删除所有未被容器使用的镜像:

docker image prune -a

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com