下面是关于 Docker 的 commit 和 push 的详细代码流程以及它们之间的区别: Docker Commit 代码流程: shellCopy Code
创建并启动一个容器
docker run -it <image_name> /bin/bash
在容器内进行修改# 安装、配置软件等
提交容器修改为新的镜像
docker commit <container_id> <new_image_name> 创建并启动一个容器使用镜像 <image_name>。 在容器中进行所需的修改,例如安装软件、配置环境等。 使用 docker commit 命令提交对容器所做的修改,并创建一个新的镜像,命名为 <new_image_name>。 Docker Push 代码流程: shellCopy Code
登录到远程镜像仓库(如果需要)
docker login
标记本地镜像的标签,与远程镜像仓库关联
docker tag <local_image_name> <remote_repository>/<remote_image_name>:
推送本地镜像到远程镜像仓库
docker push <remote_repository>/<remote_image_name>: 如果需要,使用 docker login 命令登录到远程镜像仓库。 使用 docker tag 命令给本地镜像打标签,将其与远程镜像仓库关联起来。 格式为 <remote_repository>/<remote_image_name>:,其中 <remote_repository> 是远程镜像仓库地址,<remote_image_name> 是要推送的远程镜像名称, 是版本标签。 使用 docker push 命令将本地镜像推送到远程镜像仓库。 总结比较: Docker Commit 用于在本地保存容器的修改为一个新的镜像,而 Docker Push 用于将本地的镜像上传至远程镜像仓库。 Docker Commit 只在本地操作,不需要与远程仓库进行交互;而 Docker Push 需要与远程仓库进行验证和传输。 Docker Commit 提交后的镜像仅在本地可用,而 Docker Push 后的镜像可以在网络上共享和使用。 Docker Commit 适用于创建自定义镜像或在个人开发环境中使用,而 Docker Push 适用于团队协作、共享镜像或将镜像用于部署等场景。
推送镜像到远程仓库和本地私有仓库的流程和区别如下:
推送到远程仓库: 流程: 登录到远程镜像仓库(如 Docker Hub):docker login 标记本地镜像的标签,与远程镜像仓库关联:docker tag <local_image> /: 推送本地镜像到远程镜像仓库:docker push /: 区别: 远程仓库是公共的,可以供全球范围内的用户使用和访问。 需要登录到远程仓库,并具备上传镜像的权限。 需要将本地镜像标记为与远程仓库相关联的格式,例如 docker tag <local_image> /:。 需要使用 docker push 命令将本地镜像推送到远程仓库。 推送到本地私有仓库: 流程: 创建并启动本地私有仓库容器:docker run -d -p 5000:5000 --restart=always --name registry registry:2 标记本地镜像的标签,与本地私有仓库关联:docker tag <local_image> localhost:5000/: 推送本地镜像到本地私有仓库:docker push localhost:5000/: 区别: 本地私有仓库是在本地环境中搭建的,只能供本地环境内的用户使用和访问。 不需要登录验证,可以直接推送镜像到本地私有仓库。 需要将本地镜像标记为与本地私有仓库相关联的格式,例如 docker tag <local_image> localhost:5000/:。 需要使用 docker push 命令将本地镜像推送到本地私有仓库。
总结比较:
推送镜像到远程仓库需要登录和权限验证,而推送到本地私有仓库不需要验证。 远程仓库允许全球范围内的用户访问和使用,而本地私有仓库只能在本地环境中使用。 推送到远程仓库需要指定远程仓库地址和用户名,而推送到本地私有仓库只需指定本地主机地址和端口号。 远程仓库适用于共享和分发镜像,本地私有仓库适用于本地开发、测试和部署等场景。
为 docker run 命令添加容器卷映射可以将容器内部的目录与主机上的目录进行关联,实现数据的持久化和共享。
下面是带有容器卷映射的 docker run 命令,同时解释了每个参数的含义:
shellCopy Code
docker run -d -p 5000:5000 --restart=always --name registry
-v /host/path:/container/path
registry:2
解释每个参数的含义如下:
-d:将容器以后台(detached)模式运行。
-p 5000:5000:将容器的 5000 端口映射到主机的 5000 端口,使得可以通过主机的 5000 端口访问本地私有仓库。
--restart=always:设置容器在发生错误或者重启主机时自动启动,确保本地私有仓库的持续可用性。
--name registry:为容器指定名称,这里是 "registry"。
-v /host/path:/container/path:将主机上的 /host/path 目录与容器内部的 /container/path 目录进行卷映射。可以将主机上的目录挂载到容器中,实现数据的持久化和共享。
registry:2:使用 Docker 官方提供的本地私有仓库镜像 "registry",标签为 "2"。
通过在运行容器时添加 -v 参数,并指定主机上的路径和容器内部的路径,可以实现目录之间的映射。这样,在容器内部对 /container/path 目录的操作将反映在主机上的 /host/path 目录中。
使用容器卷映射,你可以将本地私有仓库容器的数据存储在主机上的特定目录,以免数据丢失,并且可以方便地共享和备份数据。
详细流程解释
标记本地镜像的标签,与本地私有仓库关联: shellCopy Code docker tag <local_image> localhost:5000/: 这条命令用于将本地的镜像标记为与本地私有仓库相关联的格式。 <local_image>:要标记的本地镜像名称(可以是镜像 ID 或镜像名称)。 localhost:5000:本地私有仓库的地址和端口号。 :要为镜像指定的仓库或项目名称。 :要为镜像指定的版本标签。 例如,如果要将本地的镜像 my-image 关联到本地私有仓库的项目 my-repo 的标签为 v1 的版本,可以运行以下命令: shellCopy Code docker tag my-image localhost:5000/my-repo:v1 推送本地镜像到本地私有仓库: shellCopy Code docker push localhost:5000/: 这条命令用于将本地的镜像推送到本地私有仓库。 localhost:5000:本地私有仓库的地址和端口号。 :要推送到的仓库或项目名称。 :要推送的版本标签。 例如,要将标记为 my-repo:v1 的本地镜像推送到本地私有仓库中的项目 my-repo,可以运行以下命令: shellCopy Code docker push localhost:5000/my-repo:v1 这样就会将镜像上传到本地私有仓库中,并可以在本地环境中使用该镜像。其他用户可以从本地私有仓库中拉取该镜像进行使用
docker commit命令:
apt-get update 更新包管理工具 apt-get -y install vim 安装需要的 vim命令 apt-get insall net-tools ifconfig 命令查看ip docker push 到阿里云镜像仓库:参考阿里云步骤 cr.console.aliyun.com/repository/… docker push到本地镜像仓库: 下载Registry 需要配置参考第一次配置阿里云镜像仓库地址: vim /etc/docker/daemon.json { "registry-mirrors": ["3ukrj839.mirror.aliyuncs.com"], "intsecure-registries":["121.36.254.199:5000"] } registry-mirrors:加速器 intsecure-registries:取消本地仓库不支持http 修改完不生效 重启 docker systemctl stop docker systemctl start docker systemctl restart docker 以下是使用docker commit命令提交修改后的容器的步骤: 首先,确定你要提交的容器的容器ID或容器名称。你可以使用docker ps命令列出当前正在运行的容器,并找到你要提交的容器的相关信息。 执行以下命令来提交容器的修改: Copy Code docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] [OPTIONS]:可选参数,包括 -a(作者信息)和 -m(提交消息)等。 CONTAINER:要提交的容器的ID或名称。 [REPOSITORY[:TAG]]:新镜像的仓库名称和标签。 例如,提交名为mycontainer的容器到一个名为myimage的新镜像: Copy Code docker commit mycontainer myimage docker commit -a=xt -m=study 等待提交过程完成,这可能需要一些时间,具体取决于容器的大小和系统性能。 使用docker images命令验证提交操作是否成功。你会看到一个新的镜像,它基于你提交的容器创建。