Docker 核心技术与操作指南
标签搜索
侧边栏壁纸
博主昵称
Ran

  • 累计撰写 25 篇文章
  • 累计收到 0 条评论

Docker 核心技术与操作指南

ranyuan
2025-07-28 / 0 评论 / 7 阅读 / 正在检测是否收录...

好的,根据您的需求,我将对 Docker 的基础内容进行优化,并确保语法和格式清晰易读。以下是优化后的 Markdown 格式内容:


Docker 基础

三大核心概念

镜像 (Image)

  • 定义: 一个只读的文件和文件目录的组合体。
  • 特性:

    • 静态的、只读的模板。
    • 是创建 Docker 容器的先决条件。

容器 (Container)

  • 定义: 镜像运行时的实体。
  • 特性:

    • 容器内运行着真正的应用进程。
    • 具有五种状态:创建 (Created)、运行 (Running)、暂停 (Paused)、停止 (Stopped)、删除 (Deleted)。

仓库 (Registry)

  • 定义: 集中存放镜像的地方。
  • 特性:

    • 最大的公共仓库是 Docker Hub。

镜像 (Image) 常见操作

拉取镜像 (Pull)

语法
docker pull <镜像名称>:<标签>
示例
docker pull nginx                           # 拉取官方最新版 nginx
docker pull nginx:1.21                      # 拉取官方指定版本 nginx
docker pull docker.io/nginx                 # 从指定仓库拉取
docker pull myregistry.com/my_namespace/my-image:mytag               # 从私有仓库拉取
docker pull --platform linux/arm64 myregistry.com/my_namespace/my-image:mytag # 拉取指定平台镜像

查看镜像 (Inspect/History/Images)

查看本地镜像列表
docker images
查看特定镜像详细信息 (JSON 格式)
docker inspect <image_id|image_name:tag>
查看镜像构建历史
docker history <image_id|image_name:tag>
格式化查看镜像大小
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"

重命名镜像 (Tag)

语法
docker tag <旧镜像名称:旧标签> <新镜像名称:新标签>
示例
docker tag nginx:latest mynginx:latest
docker tag nginx:latest mynginx:1.21
docker tag bbbbd59a03f3 my/cen:v3
docker tag my/centos:v2.0.1 192.168.122.20:5000/my/centos:v2.0.1

删除镜像 (RMI)

语法
docker rmi <镜像ID或镜像名称:标签>
示例
docker rmi image_id
docker rmi my/centos:V2.0.1
docker rmi -f image_id              # 强制删除
docker rmi -f $(docker ps -a -q)    # 删除所有停止的容器 (注意: 这里是容器ID)

导入和导出镜像 (Save/Load/Import)

导出镜像为 tar 包
docker save -o centos.tar.gz centos:7.5.1804
导入镜像 (方式一)
docker load < centos.tar.gz
导入镜像 (方式二)
docker load --input centos.tar.gz
导入镜像 (方式三,可指定新名称和标签)
cat centos7.5-tar.gz | docker import - my/centos:7.5

上传镜像 (Push)

打标签
docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/2018/smokeping:[镜像版本号]
上传镜像
docker push registry.cn-shenzhen.aliyuncs.com/2018/smokeping:[镜像版本号]

容器 (Container) 常见操作

查询 Docker Hub 中的镜像

docker search mysql

运行镜像,创建并启动容器 (交互模式)

docker run -it opensuse /bin/bash

后台运行 (-d) 并映射端口 (-p/-P)、命名 (--name)

docker run -d -p 222:80 --name jichu my/centos:v2.0.1

基于镜像创建容器 (不启动)

docker create --name mysql_new -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql

启动已创建的容器

docker start mysql_new

查看运行中的容器

docker ps

查看所有容器 (包括停止的)

docker ps -a

停止容器

docker stop <container_id|name>

进入正在运行的容器

docker exec -ti <container_name> /bin/bash

查看容器修改了哪些文件

docker diff <container_name>

文件复制 (CP)

  • 从本地复制文件/目录到容器

    docker cp ./jre1.8.0_361/ <container_id>:/root/
  • 从容器复制文件/目录到本地

    docker cp <container_id>:/root/somefile.txt ./local_dir/

构建镜像 (Build/Commit)

方法一:使用 Dockerfile 构建

  1. 创建 Dockerfile:

    touch Dockerfile
    vi Dockerfile

    示例 Dockerfile 内容:

    FROM centos
    MAINTAINER REGAN 88@wsfnk.com
    RUN yum -y install python
  2. 构建镜像:

    docker build -t='my/centos:V2.0.1' .

方法二:基于现有容器提交 (Commit)

  1. 运行容器并进行修改:

    docker run -it centos /bin/bash
    # (在容器内执行安装等操作,如 yum install wget)
    # 退出容器
  2. 提交容器为新镜像:

    docker commit -m 'my new centos with wget' -a 'sada@www.com' <container_id> my/centos:V2.0.1
  3. 查看并运行新镜像:

    docker images
    docker run -it my/centos:V2.0.1 /bin/bash

查询镜像标签 (List Tags)

使用 skopeo 查询公共仓库

# 安装 skopeo (如果未安装)
dnf -y install skopeo # (CentOS/RHEL/Fedora)
# apt-get install skopeo # (Debian/Ubuntu)

# 查询官方仓库镜像标签
skopeo list-tags docker://docker.io/library/python

查询私有仓库 (需要认证)

# 通用 API 请求 (可能需要认证)
curl -X GET "https://<your-registry>/v2/<image-name>/tags/list"

# 在线工具查询 (适用于公开镜像)
# 访问 https://explore.ggcr.dev/
# 在搜索框输入镜像名称,例如: coturn/coturn

阿里云镜像源地址

公网访问地址:

https://mirrors.aliyun.com/

ECS VPC 网络访问地址:

http://mirrors.cloud.aliyuncs.com/

ECS 经典网络访问地址:

http://mirrors.aliyuncs.com/

Registry Explorer 工具

功能介绍

  • Registry Explorer:
    这是一个美观的工具,允许您交互式地探索注册表的内容。
    您甚至可以深入到层中,探索镜像的文件系统。

使用示例

  • 输入一个公共镜像,例如 "ubuntu:latest"
  • 输入一个公共仓库,例如 "ubuntu"

FAQ

  • 如何工作?
    该服务运行在 Cloud Run 上,并使用 google/go-containerregistry(即 ggcr)进行注册表交互。

0

评论 (0)

取消