一、镜像与仓库管理

1.1 查看 Docker 版本

查看 Docker 版本包括 Docker 版本号、API 版本号、对应的 Git Commit、Containerd 和 runC的版本信息等。

[root@db01 ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.24
 API version:       1.41
 Go version:        go1.19.7
 Git commit:        297e128
 Built:             Tue Apr  4 18:22:57 2023
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.24
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.19.7
  Git commit:       5d6db84
  Built:            Tue Apr  4 18:21:02 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.33
  GitCommit:        d2d58213f83a351ca8f528a95fbd145f5654e957
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

参数说明:

  • OCI:Open Container Initiative的简称,由Linux基金会主导开发OCI规范和标准,目的是围绕容器格式和Runtime(运行时)制定的一个开放的工业化标准。
  • Containerd:Docker为了兼容OCI标准,将容器Runtime及其管理功能从Docker守护进程中剥离出来,用于不启动Docker也能直接通过Containerd来管理容器。
  • RunC:Docker按照OCF(Open Container Format)开放容器格式标准制定的一个轻量级工具,可以使用RunC不通过Docker引擎即可实现容器的启动、停止和资源隔离等功能。

1.2 查看 Docker 详细信息

Client:  # Client 端
  Debug Mode: false  # 是否开启 Debug 模式

Server:  # Server 端
  Containers: 8      # 容器总数
    Running: 4       # 正在运行的容器数量
    Paused: 0        # 暂停的容器数量
    Stopped: 4       # 停止的容器数量
  Images: 8          # 镜像总数
  Server Version: 20.10.4  # Docker Server 版本

  Storage Driver: overlay2  # 存储驱动,一般为 overlay2,性能好速度快
    Backing Filesystem: xfs   # 服务器文件系统
    Supports d_type: true     # 目录条目类型,表示文件、管道或套接字
    Native Overlay Diff: true

  Logging Driver: json-file  # 日志驱动,json-file 表示日志存储在本地
  Cgroup Driver: cgroupfs    # 限制和隔离的驱动,生产环境建议使用 systemd

  Plugins:  # 插件支持
    Volume: local
    Network: bridge, host, ipvlan, macvlan, null, overlay
    Log: awslogs, fluentd, gcplogs, gelf, journald, json-file, local, logentries, splunk, syslog  # Docker 支持的日志驱动

  Swarm: inactive  # Docker 官方的容器编排工具,inactive 表示未开启

  Docker Root Dir: /var/lib/docker  # Docker 根目录,生产环境建议使用 SSD 硬盘或独立磁盘

  Debug Mode: false
  Registry: https://index.docker.io/v1/
  Labels:
  Experimental: false
  Insecure Registries:
    127.0.0.0/8
  Live Restore Enabled: false  # Docker 热更新,生产环境建议设置为 true

1.3 搜索镜像

[root@db01 ~]# docker search nginx

1.4 拉取下载镜像

# 拉取私有仓库的镜像
docker pull harbor.xxx.net/frontend:v1

# 拉取公网上的Nginx镜像,这里的公网就是指的是Docker Hub官网
docker pull nginx

# 拉取指定版本
docker pull nginx:1.15

1.5 查看本地镜像

# 查找包含nginx-v2字样的镜像
docker images | grep nginx-v2

1.6 更改镜像 Tag

# 自定义任意标签
docker tag nginx-v2 dotbalo/nginx-v2:test

# 自定义镜像仓库标签
docker tag nginx-v2:test 公司镜像地址/nginx-v2:test

1.7 镜像仓库登录

# 登录docker hub仓库
docker login

# 登录私有仓库
docker login 私有仓库

1.8 推送本地镜像到远程仓库

docker push dotbalo/nginx-v2:test

二、容器运行与维护

2.1 启动容器

使用 run -ti 前台启动一个容器

docker run -ti nginx bash

如果一个镜像需要一直运行,可以使用-d 进行后台启动

docker run -tid nginx bash

2.2 端口映射

# 使用-p参数实现端口映射
docker run -ti -p 1111:80 nginx bash

2.3 查看日志

# 查看末尾一行日志内容
docker logs -f 容器 ID/容器名称 --tail 1

2.4 数据持久化

# 使用-v参数挂载卷
docker run -ti -p 1111:80 -v /etc/hosts:/etc/hosts nginx bash

2.5 查看当前正在运行的容器

# 查看运行中的容器
docker ps

# 查看所有容器,包括已经退出的
docker ps -a

# 查看正在运行的容器(即显示出容器的 ID)
docker ps -q

# 查看所有容器的ID,包括已经退出的
docker ps -aq

2.6 进入容器

进入到一个后台运行的容器(即之前用-d 命令参数来指定后台运行方式的容器)

# 获取容器ID
docker ps | tail -1

# 进入容器
docker exec -ti 86b1c069024b bash

2.7 文件拷贝

# 将本机的文件拷贝到容器
docker cp README.md 92aceec0dcdd327a709bf0ec83:/tmp

# 将容器中的文件拷贝到宿主机上
docker cp 92aceec0dcdd327a709bf0ec83:/tmp/README.md  /etc

2.8 删除容器和镜像

# 删除已经退出的容器
docker ps -a |grep Exited
docker rm 600e5da5c196

# 删除正在运行的容器
docker ps
docker stop 600e5da5c196
docker rm  600e5da5c196

# 删除本机镜像,前提镜像没有被容器使用
docker images | grep none
docker rmi 7ad745acca31

三、构建与检查

3.1 构建镜像

docker build -t image_name:image_tag .

3.2 查看容器运行信息

docker inspect 1de2ef08945f | grep Port

3.3 查看镜像构建信息

docker history 0e55626662ef