使用Docker镜像和仓库

一、什么是Docker镜像
镜像(Image)就是一堆只读层(read-only layer)的统一视角。如下图

统一文件系统(union file system)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。

容器 = 镜像 + 可读层。如下图

运行态容器(running container)=一个可读写的统一文件系统+隔离的进程空间和包含其中的进程。如下图

二、列出镜像
镜像从仓库下载下来,保存在仓库中,而仓库存在于Registry中。默认的Registry是Docker Hub。

[zz@localhost root]$ sudo docker images

拉取ubuntu仓库中的所有镜像。
ubuntu镜像实际是聚集在一个仓库下的一系列镜像,拉取镜像得到的是很多版本的Ubuntu操作系统(剪裁版)。
标签tag对组成镜像的一些镜像层进行标记,我们可以通过在仓库名后面加一个冒号和标签名来制定该仓库中的某一镜像。
三、拉取、查找镜像
[zz@localhost ~] sudodockerimagesfedoradockerpull[zz@localhost ] s u d o d o c k e r i m a g e s f e d o r a d o c k e r p u l l 命 令 可 以 节 省 从 一 个 新 镜 像 启 动 一 个 容 器 所 需 的 时 间 。 查 找 镜 像 : [ z z @ l o c a l h o s t   ] sudo docker search puppet
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/puppet/puppetserver A Docker Image for running Puppet Server. … 65
docker.io docker.io/alekzonder/puppeteer GoogleChrome/puppeteer image and screensho… 37 [OK]
上述命令在Docker Hub查找所有带puppet的镜像,返回的信息包括:
仓库名;
镜像描述(description);
用户评价(stars);
是否官方(official):由上游者开发管理的镜像;
自动构建(automated):表示此镜像有Docker Hub自动构建流程创建的。

三、构建镜像
使用docker commit 命令(并不推荐)
使用docke build命令和Dockerfile文件
1、创建Docker Hub账号
点击https://hub.docker.com/进行注册,发现并不能注册,需要翻墙。不翻墙就能注册的方法请点不翻墙注册
,邮箱验证及添加库方法请点邮箱验证方法。
测试账号:
zz@localhost ~]$ sudo 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 (zah123): zah123
Password:
Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password
[zz@localhost ~]2、使用Dockerfile命令创建镜像  
     dockerfile使用基本的基于DSL语法(领域专用语言)的指令来构建一个docker镜像,之后使用docker build命令基于该dockerfile中的指令构建一个新的镜像。  
    首先创建一个目录并在里面创建初始的Dockerfile  
   mkdir dockerfile/df_test1  
   cd  dockerfile/df_test1  
   vim Dockerfile  
   (在文件中输入)  
   #First Dockerfile  
   FROM ubuntu:14.04  
   MAINTAINER zah123 “2259728702@qq.com”(指定镜像的作者以及电子邮件地址)  
   RUN apt-get update  (每条RUN命令都会创建一个新的镜像层)  
   RUN apt-get install -y nginx  
   EXPOSE 80  
   sudo  docker build  -t=”zah123/df_test1” .(-t设置镜像的仓库名和名称,一定要注意”.”之前有空格,可是被这条语句害惨了,用了我好长时间纠错)  
 构建完成后,可查看刚构建的镜像:  
[zz@localhost ~]
2、使用Dockerfile命令创建镜像       dockerfile使用基本的基于DSL语法(领域专用语言)的指令来构建一个docker镜像,之后使用docker build命令基于该dockerfile中的指令构建一个新的镜像。      首先创建一个目录并在里面创建初始的Dockerfile     mkdir dockerfile/df_test1     cd  dockerfile/df_test1     vim Dockerfile     (在文件中输入)     #First Dockerfile     FROM ubuntu:14.04     MAINTAINER zah123 “2259728702@qq.com”(指定镜像的作者以及电子邮件地址)     RUN apt-get update  (每条RUN命令都会创建一个新的镜像层)     RUN apt-get install -y nginx     EXPOSE 80     sudo  docker build  -t=”zah123/df_test1” .(-t设置镜像的仓库名和名称,一定要注意”.”之前有空格,可是被这条语句害惨了,用了我好长时间纠错)   构建完成后,可查看刚构建的镜像:  [zz@localhost ~]
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zah123/df_test1 latest 4578ec3d624e 20 minutes ago 230 MB
启动容器:(-d指定以分离detached的方式在后台运行,指定需要在容器中运行的命令:nginx -g “daemon off;”,以前台的方式启动Nginx守护进程,此时这个容器就会作为Web服务器来运行)
[zz@localhost ~] sudodockerrundnamenginxwebp80zah123/dftest1nginxgdaemonoff;d6d344c906c9e7667ff48d530f7963272d320129613ac552361b510b8573fa38访[zz@localhost ] s u d o d o c k e r r u n − d – n a m e n g i n x w e b − p 80 z a h 123 / d f t e s t 1 n g i n x − g “ d a e m o n o f f ; ” d 6 d 344 c 906 c 9 e 7667 f f 48 d 530 f 7963272 d 320129613 a c 552361 b 510 b 8573 f a 38 查 看 地 址 并 验 证 访 问 : [ z z @ l o c a l h o s t   ] sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6d344c906c9 zah123/df_test1 “nginx -g ‘daemon …” 6 minutes ago Up 5 minutes 0.0.0.0:32768->80/tcp nginx_web
[zz@localhost ~]$ curl http://127.0.0.1:32768

If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.
For online documentation and support please refer to
nginx.org.

Commercial support is available at
nginx.com.
Thank you for using nginx.

四、将镜像推送到Docker Hub

[zz@localhost ~]$ sudo docker push zah123/df_test1
The push refers to a repository [docker.io/zah123/df_test1]
在Docker Hub上可以看到上传的镜像

五、删除镜像

[zz@localhost ~]$ sudo docker rmi zah123/df_test1
Error response from daemon: conflict: unable to remove repository reference “zah123/df_test1” (must force) - container d6d344c906c9 is using its referenced image 4578ec3d624e

该镜像有容器正在使用无法删除,把容器停止后就可删除。

[zz@localhost ~]$ sudo docker rmi zah123/df_test1
Untagged: zah123/df_test1:latest
Untagged: zah123/df_test1@sha256:3053b24f925d3046c18836ed506a2cbf4e3826495e1deeec92689b987a4d3785
Deleted: sha256:4578ec3d624e99b18ab88fcc683dccb2f59b411dad98a8ceed0e852446cf6be7
Deleted: sha256:35a841ef43927002cb2f4b78139b77cb4a51e794b7a05f552e2706d58ab9b56d
Deleted: sha256:d06a614f48a07657903a9bdd3d04515affc312e1aa88673262dd993f8ce1d404
Deleted: sha256:520d65e51d6b68551e0503cc67b0cbadb7e61d37f57241e7e4dbe84192c8cd31
Deleted: sha256:167f95c8bda79c9c073dd8cb8d5d19990381d2eb67d511669a2ba1de8e84228f
Deleted: sha256:36222728ef078eff225240ee4170389d14a5746b5922008c6c3f2f81eb1871fe

在这里可以看到Docker的分层文件系统:每一个Deleted行都代表一个镜像层被删除。
该操作只会将本地镜像删除,不能将推送到Docker Hub上的镜像删除。
可以指定镜像名列表来一次删除多个镜像。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值