专栏首页散尽浮华通过容器提交镜像(docker commit)以及推送镜像(docker push)笔记

通过容器提交镜像(docker commit)以及推送镜像(docker push)笔记

在本地创建一个容器后,可以依据这个容器创建本地镜像,并可把这个镜像推送到Docker hub中,以便在网络上下载使用。

查看镜像
[root@docker-test1 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/ubuntu    16.04               7aa3602ab41e        5 weeks ago         115 MB

创建一个名为myubuntu的容器
[root@docker-test1 ~]# docker run -ti --name myubuntu -d docker.io/ubuntu
[root@docker-test1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
651a8541a47d        docker.io/ubuntu    "/bin/bash"         37 seconds ago      Up 36 seconds                           myubuntu


docker commit :从容器创建一个新的镜像。
# docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

根据这个myubuntu容器提交镜像
[root@docker-test1 ~]# docker commit -a "wangshibo" -m "this is test" 651a8541a47d myubuntu:v1
sha256:6ce4aedd12cda693d0bbb857cc443a56f9f569106e09ec61aa53563d0932ea4d

再次查看镜像,发现镜像myubuntu:v1已经提交到本地了
[root@docker-test1 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
myubuntu            v1                  6ce4aedd12cd        59 seconds ago      84.1 MB
docker.io/ubuntu    16.04               7aa3602ab41e        5 weeks ago         115 MB

在mybuntu:v1镜像推送到docker hub仓库中去
# docker push [OPTIONS] NAME[:TAG]
OPTIONS说明:
--disable-content-trust :忽略镜像的校验,默认开启


首先是登录docker hub (用户名:wangshibo    密码:*******)
[root@docker-test1 ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username (wangshibo): wangshibo
Password: 
Login Succeeded

[root@docker-test1 ~]# docker push wangshibo/myubuntu:v1
The push refers to a repository [docker.io/wangshibo/myubuntu]
An image does not exist locally with the tag: docker.io/wangshibo/myubuntu

这里需要将ubuntu:v1镜像改名,在名称前加上自己的docker hub的Docker ID,即wangshibo

[root@docker-test1 ~]# docker tag 6ce4aedd12cd wangshibo/myubuntu:v1
[root@docker-test1 ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
myubuntu             v1                  6ce4aedd12cd        6 minutes ago       84.1 MB
wangshibo/myubuntu   v1                  6ce4aedd12cd        6 minutes ago       84.1 MB
docker.io/ubuntu     16.04               7aa3602ab41e        5 weeks ago         115 MB

再次进行推送(注意:下面的v1的tag标签可以不打,默认是latest)。推送操作时间稍微会有一点长,耐心等待~
[root@docker-test1 ~]# docker push wangshibo/myubuntu:v1            
The push refers to a repository [docker.io/wangshibo/myubuntu]
b5948ba9486d: Pushed 
8d7ea83e3c62: Mounted from library/ubuntu 
6a061ee02432: Mounted from library/ubuntu 
f73b2816c52a: Mounted from library/ubuntu 
6267b420796f: Mounted from library/ubuntu 
a30b835850bf: Mounted from library/ubuntu 
v1: digest: sha256:e9cd9075d262848a307c92751e1a5890d883b814a31abd118161442461a1ca2d size: 1564

最后登录自己的Docker Hub,即https://hub.docker.com/
登录后,在Repositories里面就可以看到自己在上面推送的镜像wangshibo/myubuntu:v1了,这是个对外的镜像,可以在网络上下载。
在Docker hub上可以看到这个镜像的下载命令(注意下载时跟上tag标签,如果是latest的默认tag可以不跟)
也可以直接在Docker hub上删除这个镜像(Repositories-镜像-Settings-delete)


比如在另一台服务器上下载这个镜像
[root@kevin-test ~]# docker pull wangshibo/myubuntu
Pulling repository wangshibo/myubuntu
Repository not found

需要跟上tag标签
[root@kevin-test ~]# docker pull wangshibo/myubuntu:v1
v1: Pulling from wangshibo/myubuntu
68e2a091ef24: Pull complete 
8f9dd35f6299: Pull complete 
a81a6171600b: Pull complete 
a211a2bc7010: Pull complete 
9e71a0b4f83a: Pull complete 
0cf75bb335aa: Pull complete 
c393a882769e: Pull complete 
Digest: sha256:845fa3dcc9d0de1b9c701e1009918995da35a29012015f6c297a05edc489e018
Status: Downloaded newer image for wangshibo/myubuntu:v1
[root@kevin-test ~]# docker  images
REPOSITORY           TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
wangshibo/myubuntu   v1                  c393a882769e        12 minutes ago      84.11 MB


在本机删除这个镜像
[root@docker-test1 ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
myubuntu             v1                  6ce4aedd12cd        15 minutes ago      84.1 MB
wangshibo/myubuntu   v1                  6ce4aedd12cd        15 minutes ago      84.1 MB
docker.io/ubuntu     16.04               7aa3602ab41e        5 weeks ago         115 MB

注意上面有两个6ce4aedd12cd的镜像ID,此时直接使用这个镜像ID是删除不掉的
[root@docker-test1 ~]# docker rmi 6ce4aedd12cd
Error response from daemon: conflict: unable to delete 6ce4aedd12cd (must be forced) - image is referenced in multiple repositories

应该先删除docker tag改名前的镜像,使用镜像名称删除。(一般在docker tag镜像改名后,最好删除改名前的镜像)
[root@docker-test1 ~]# docker rmi myubuntu:v1
Untagged: myubuntu:v1
Untagged: wangshibo/myubuntu@sha256:e9cd9075d262848a307c92751e1a5890d883b814a31abd118161442461a1ca2d

[root@docker-test1 ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
wangshibo/myubuntu   v1                  6ce4aedd12cd        15 minutes ago      84.1 MB
docker.io/ubuntu     16.04               7aa3602ab41e        5 weeks ago         115 MB

这个时候就可以删除镜像ID删除了
[root@docker-test1 ~]# docker rmi 6ce4aedd12cd
Untagged: wangshibo/myubuntu:v1
Deleted: sha256:6ce4aedd12cda693d0bbb857cc443a56f9f569106e09ec61aa53563d0932ea4d
Deleted: sha256:0ddeb6a16badd042914c2e72b9ef0331550c1cdcc4bdc6650a90cd9f57f1501b
[root@docker-test1 ~]# docker images          
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/ubuntu    16.04               7aa3602ab41e        5 weeks ago         115 MB

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Docker可视化web界面管理-Portainer部署记录

    Docker图形页面管理工具基本常用的有三种: Docker UI,Shipyard,Portainer,之前分别介绍了Docker UI和Shipyard部署...

    洗尽了浮华
  • Docker容器学习梳理--基础环境安装

    以下是centos系统安装docker的操作记录 1)第一种方法:采用系统自带的docker安装,但是这一般都不是最新版的docker 安装epel源 [roo...

    洗尽了浮华
  • Docker容器学习梳理--web管理工具DockerUI部署记录

    Docker提供一个平台来把应用程序当作容器来打包、分发、共享和运行,它已经通过节省工作时间来拯救了成千上万的系统管理员和开发人员。Docker不用关注主机上运...

    洗尽了浮华
  • Docker上手系列:Docker入门hello world

    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

    爱笑的架构师
  • Docker CE for Mac v17.12 正式支持 k8s

    视频:https://www.bilibili.com/video/av17307986/

    康怀帅
  • 超详细记录公司多用户Docker仓库创建安全认证和应用

    概述:超详细记录建立公司内部多用户Docker仓库,自定义CA证书,https安全认证。服务器作为远程Docker仓库,其他开发端(如server2,serve...

    王小雷
  • Docker系列学习文章 - 如何安装Docker(三)

    | 导语 前面介绍了关于容器和docker的知识,那么从这篇文章开始,正式进入实操,带大家手把手安装docker环境。

    宝哥@devops运维
  • CentOS环境下Docker私有仓库搭建

    本文讲述如何搭建docker私有仓库。 有了docker hub,为什么还要搭建docker私有仓库? 1、性能考虑:docker hub的访问要通过互联网,性...

    用户1225216
  • Deepin20安装docker

    deepin 属于 debain 系,跟 Ubuntu 相似,由国人开发。现在作为我的主力开发环境,使用下来还不错,虽不如 windows, mac 的整体流...

    caoayu
  • Docker入门(一)

    docker是一个用于开发,交付和运行应用程序的开放平台。docker能够将应用程序和基础架构分开,从而实现快速交付软件。通过利用docker的快速交付,测试和...

    故里

扫码关注云+社区

领取腾讯云代金券