1.`docker commit`
`docker commit`是一个 Docker 命令,用于将一个正在运行的容器(Container)的状态提交为一个新的镜像(Image)。这类似于在版本控制系统中提交更改。
作用
• 当你对一个容器进行了修改(例如安装了软件、修改了配置文件等),你可以使用`docker commit`将这些更改保存为一个新的镜像。
• 这样,你可以基于这个新镜像创建更多的容器,而不需要重复相同的修改过程。
使用方法
```bash
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
```
• `CONTAINER`:要提交的容器的 ID 或名称。
• `REPOSITORY[:TAG]`:新镜像的仓库名称和标签。如果不指定,镜像将被标记为`none`。
假设你有一个正在运行的容器`my-container`,你在这个容器中安装了一些软件,并希望将这些更改保存为一个新的镜像:
docker commit my-container my-new-image:latest
• 这将创建一个名为`my-new-image`的新镜像,标签为`latest`。
2.`docker tag`
`docker tag`是一个 Docker 命令,用于为现有的镜像添加一个新的标签(Tag)。标签是镜像的版本标识,例如`latest`、`v1`等。
• 一个镜像可以有多个标签,这使得你可以更灵活地管理镜像的版本。
• 例如,你可以为同一个镜像添加`latest`和`v1.0`两个标签,分别表示最新版本和特定版本。
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
• `SOURCE_IMAGE[:TAG]`:源镜像的名称和标签。
• `TARGET_IMAGE[:TAG]`:目标镜像的名称和标签。
假设你有一个镜像`my-new-image:latest`,你希望为它添加一个新的标签`v1`:
docker tag my-new-image:latest my-new-image:v1
• 这将为`my-new-image`镜像添加一个新的标签`v1`。
3.将镜像推送到 Harbor 仓库的完整流程
Harbor 是一个开源的 Docker 镜像仓库,用于存储和管理 Docker 镜像。以下是将镜像推送到 Harbor 仓库的详细步骤:
步骤 1:登录到 Harbor 仓库
在推送镜像之前,需要先登录到 Harbor 仓库。使用以下命令:
docker login <harbor-url>
• `<harbor-url>`:Harbor 仓库的地址,例如`http://harbor.example.com`。
• 系统会提示你输入用户名和密码,这些是你的 Harbor 账户凭证。
步骤 2:为镜像添加 Harbor 仓库的路径
在推送镜像之前,需要将镜像的名称修改为包含 Harbor 仓库路径的完整名称。例如:
```bash
docker tag my-new-image:v1 <harbor-url>/my-project/my-new-image:v1
```
• `<harbor-url>`:Harbor 仓库的地址。
• `my-project`:Harbor 中的项目名称。
• `my-new-image:v1`:镜像的名称和标签。
步骤 3:推送镜像到 Harbor 仓库
使用以下命令将镜像推送到 Harbor 仓库:
```bash
docker push <harbor-url>/my-project/my-new-image:v1
```
• 如果推送成功,你可以在 Harbor 的 Web 界面中看到这个镜像。
步骤 4:(可选)在 Harbor 中管理镜像
登录到 Harbor 的 Web 界面,你可以查看、删除或管理推送的镜像。
示例
假设你的 Harbor 仓库地址是`http://harbor.example.com`,项目名称是`my-project`,镜像名称是`my-new-image`,标签是`v1`,以下是完整的操作流程:
• 登录到 Harbor 仓库:
```bash
docker login http://harbor.example.com
```
• 为镜像添加 Harbor 仓库的路径:
```bash
docker tag my-new-image:v1 http://harbor.example.com/my-project/my-new-image:v1
```
• 推送镜像到 Harbor 仓库:
```bash
docker push http://harbor.example.com/my-project/my-new-image:v1
```
总结
• `docker commit`:将容器的状态提交为一个新的镜像。
• `docker tag`:为现有的镜像添加一个新的标签。
• 推送镜像到 Harbor:
• 登录到 Harbor 仓库。
• 为镜像添加 Harbor 仓库的路径。
• 推送镜像到 Harbor 仓库。