好的,根据您的需求,我将对 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 构建
创建 Dockerfile:
touch Dockerfile vi Dockerfile
示例 Dockerfile 内容:
FROM centos MAINTAINER REGAN 88@wsfnk.com RUN yum -y install python
构建镜像:
docker build -t='my/centos:V2.0.1' .
方法二:基于现有容器提交 (Commit)
运行容器并进行修改:
docker run -it centos /bin/bash # (在容器内执行安装等操作,如 yum install wget) # 退出容器
提交容器为新镜像:
docker commit -m 'my new centos with wget' -a 'sada@www.com' <container_id> my/centos:V2.0.1
查看并运行新镜像:
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)