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 - Community
 Version:           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 - Community
 Engine:
  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 - Community
 Version:    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 使用的存储驱动,这里是 overlay2
  Backing Filesystem: xfs  # 底层文件系统,这里是 xfs
  Supports 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-file
 Cgroup Driver: cgroupfs   # Docker 使用的 cgroup 驱动,这里是 cgroupfs
 Cgroup Version: 1         # cgroup 的版本,这里是版本 1

 Plugins:                  # Docker 服务器安装的插件
  Volume: local            # 支持的卷插件,这里是 local
  Network: bridge host ipvlan macvlan null overlay # 支持的网络插件,包括 bridge, host, ipvlan, macvlan, null, overlay
  Log: 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 和 runc
 Default Runtime: runc     # Docker 使用的默认运行时,这里是 runc

 Init 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         # 操作系统类型,这里是 linux
 Architecture: x86_64  # 系统架构,这里是 x86_64
 CPUs: 2               # 系统的 CPU 核心数量
 Total Memory: 3.701GiB # 系统的总内存
 Name: localhost.localdomain # 主机名
 ID: d89b3016-e475-4042-94a5-a6c58a9d6331 # Docker 服务器的唯一 ID
 Docker 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 : 支持的网络插件,包括 bridge, host, ipvlan, macvlan, null, overlay
  • Log : 支持的日志插件,包括 awslogs, fluentd, gcplogs, gelf, journald, json-file, local, splunk, syslog
其他信息
  • Swarm : Swarm 模式状态,inactive 表示未启用。
  • Runtimes : Docker 支持的运行时,包括 io.containerd.runc.v2runc
  • 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
相关推荐
意疏13 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker
墨鸦_Cormorant13 小时前
使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像
redis·nginx·docker
Code_Artist14 小时前
Docker镜像加速解决方案:配置HTTP代理,让Docker学会科学上网!
docker·云原生·容器
wanmei00215 小时前
Dockerfile复制目录进入镜像里
docker
inter_peng15 小时前
[Docker-显示所有容器IP] 显示docker-compose.yml中所有容器IP的方法
tcp/ip·docker·eureka
Linux运维日记15 小时前
k8s1.31版本最新版本集群使用容器镜像仓库Harbor
linux·docker·云原生·容器·kubernetes
一名路过的小码农17 小时前
ceph 18.2.4二次开发,docker镜像制作
ceph·docker·容器
xiangshangdemayi19 小时前
Windows环境GeoServer打包Docker极速入门
windows·docker·容器·geoserver·打包·数据挂载
程序员JerrySUN20 小时前
熟悉的 Docker,陌生的 Podman
linux·docker·容器·系统架构·podman
gobeyye21 小时前
Docker 用法详解
运维·docker·容器