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_type
,true
表示支持。 - Using metacopy: 是否使用元数据拷贝功能,
false
表示未使用。 - Native Overlay Diff: 本地支持 overlay diff,
true
表示支持。 - userxattr: 是否启用了用户扩展属性,
false
表示未启用。
- Backing Filesystem: 底层文件系统,这里是
- 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.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
解释:
Using default tag: latest
:未指定标签,默认使用latest
标签。latest: Pulling from library/nginx
:从官方库library/nginx
拉取latest
标签的镜像。- 一系列的
Pull complete
:表示各层次镜像已经成功下载。 Digest
:显示镜像的 SHA256 摘要。Status
:下载状态,表示下载了最新的镜像。docker.io/library/nginx:latest
:拉取到的镜像名称和标签。
指定标签拉取镜像
你可以指定特定的标签来拉取镜像。例如,拉取 nginx
的 1.19.6
版本:
docker pull nginx:1.19.6
使用摘要拉取镜像
你也可以使用镜像的摘要来拉取镜像。例如:
docker pull nginx@sha256:bcf2f368fe67e26fe8a10d59f6b0b5f8f1a3b8b1da88a1c1b51c4d033cc7ac6a
docker pull
常用选项
-
--all-tags
或-a
:拉取所有标签的镜像。docker pull -a nginx
实战案例
使用特定版本的 nginx
镜像
假设你想使用 nginx
的 1.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